{"id":18945,"date":"2026-04-11T18:21:07","date_gmt":"2026-04-11T16:21:07","guid":{"rendered":"https:\/\/webhosting.de\/numa-balancing-server-memory-optimierung-hardware-numaflux\/"},"modified":"2026-04-11T18:21:07","modified_gmt":"2026-04-11T16:21:07","slug":"numa-rownowazenie-pamieci-serwera-optymalizacja-sprzetu-numaflux","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/numa-balancing-server-memory-optimierung-hardware-numaflux\/","title":{"rendered":"NUMA Balancing Server: Optymalizacja dost\u0119pu do pami\u0119ci dla sprz\u0119tu hostingowego"},"content":{"rendered":"<p>Pokazuj\u0119, jak <strong>Serwer r\u00f3wnowa\u017c\u0105cy NUMA<\/strong> na sprz\u0119cie hostingowym usprawnia dost\u0119p do pami\u0119ci i zmniejsza op\u00f3\u017anienia poprzez powi\u0105zanie proces\u00f3w i danych z odpowiednim w\u0119z\u0142em NUMA. Decyduj\u0105cym czynnikiem jest <strong>Optymalizacja dost\u0119pu do pami\u0119ci<\/strong> poprzez dost\u0119p lokalny, umieszczanie zada\u0144 i ukierunkowan\u0105 migracj\u0119 stron do host\u00f3w Linux z wieloma rdzeniami.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>NUMA<\/strong> dzieli procesory i pami\u0119\u0107 na w\u0119z\u0142y; dost\u0119p lokalny zapewnia <strong>niski<\/strong> Op\u00f3\u017anienie.<\/li>\n  <li><strong>Automatyczny<\/strong> NUMA Balancing migruje strony i umieszcza zadania <strong>blisko w\u0119z\u0142a<\/strong>.<\/li>\n  <li><strong>Rozmiar maszyny wirtualnej<\/strong> na w\u0119ze\u0142, w przeciwnym razie istnieje ryzyko <strong>NUMA Trashing<\/strong>.<\/li>\n  <li><strong>Narz\u0119dzia<\/strong> as numactl, lscpu, numad show <strong>Topologia<\/strong> i u\u017cywa\u0107.<\/li>\n  <li><strong>Strojenie<\/strong>C-States, Node Interleaving from, <strong>Ogromne strony<\/strong>, powinowactwa.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/serverraum-speicheroptimum-5582.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym jest NUMA - i dlaczego ma znaczenie dla hostingu<\/h2>\n\n<p>NUMA dzieli system wieloprocesorowy na <strong>W\u0119ze\u0142<\/strong>, z kt\u00f3rych ka\u017cdy zawiera w\u0142asne procesory i lokaln\u0105 pami\u0119\u0107, dzi\u0119ki czemu pobliskie dost\u0119py s\u0105 szybsze ni\u017c zdalne. Podczas gdy UMA wysy\u0142a wszystkie rdzenie do wsp\u00f3lnej \u015bcie\u017cki, NUMA zapobiega powstawaniu w\u0105skich garde\u0142 z powodu <strong>lokalny<\/strong> kana\u0142\u00f3w pami\u0119ci na w\u0119ze\u0142. W \u015brodowiskach hostingowych z wieloma r\u00f3wnoleg\u0142ymi maszynami wirtualnymi ka\u017cda milisekunda op\u00f3\u017anienia sumuje si\u0119, wi\u0119c ka\u017cde \u017c\u0105danie przynosi wymierne korzy\u015bci. Je\u015bli chcesz uzyska\u0107 wi\u0119cej informacji, mo\u017cesz dowiedzie\u0107 si\u0119 wi\u0119cej na temat <a href=\"https:\/\/webhosting.de\/pl\/blog-numa-architektura-serwer-wydajnosc-hosting-sprzet-optymalizacja-infrastruktura\/\">Architektura NUMA<\/a>. Dla mnie jedno jest pewne: je\u015bli rozumiesz i u\u017cywasz w\u0119z\u0142\u00f3w, uzyskujesz wi\u0119ksz\u0105 przepustowo\u015b\u0107 z tego samego sprz\u0119tu.<\/p>\n\n<h2>Automatyczne r\u00f3wnowa\u017cenie NUMA w j\u0105drze Linux - jak to dzia\u0142a?<\/h2>\n\n<p>J\u0105dro okresowo skanuje cz\u0119\u015bci przestrzeni adresowej i \u201eniezamapowane\u201c strony, dzi\u0119ki czemu b\u0142\u0105d podpowiedzi mo\u017ce zosta\u0107 usuni\u0119ty. <strong>optymalny<\/strong> w\u0119ze\u0142 widoczny. Je\u015bli wyst\u0105pi b\u0142\u0105d, algorytm ocenia, czy warto migrowa\u0107 stron\u0119 lub przenie\u015b\u0107 zadanie i unika niepotrzebnych ruch\u00f3w. Migrate-on-Fault przynosi <strong>Dane<\/strong> bli\u017cej wykonuj\u0105cego procesora, rozmieszczenie zada\u0144 NUMA przenosi procesy bli\u017cej ich pami\u0119ci. Skaner rozprowadza swoj\u0105 prac\u0119 kawa\u0142ek po kawa\u0142ku, tak aby narzut pozostawa\u0142 w granicach normalnego obci\u0105\u017cenia. Skutkuje to ci\u0105g\u0142ym dostrajaniem, kt\u00f3re zmniejsza op\u00f3\u017anienia bez konieczno\u015bci stosowania sztywnych regu\u0142 przypinania.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/memoryoptimization1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Optymalizacja dost\u0119pu do pami\u0119ci: lokalny bije zdalny<\/h2>\n\n<p>Dost\u0119p lokalny wykorzystuje <strong>Kontroler pami\u0119ci<\/strong> w\u0142asnego w\u0119z\u0142a i zminimalizowa\u0107 czas oczekiwania na po\u0142\u0105czenie. Zdalny dost\u0119p kosztuje cykle za po\u015brednictwem QPI\/UPI lub Infinity Fabric, a tym samym minimalizuje efektywny czas dost\u0119pu. <strong>Szeroko\u015b\u0107 pasma<\/strong>. Wysoka liczba rdzeni pot\u0119guje ten efekt, poniewa\u017c coraz wi\u0119cej rdzeni konkuruje o te same po\u0142\u0105czenia. Dlatego planuj\u0119 tak, aby gor\u0105cy kod i aktywne dane znajdowa\u0142y si\u0119 razem na jednym w\u0119\u017ale. Zlekcewa\u017cenie tej zasady oznacza utrat\u0119 punkt\u00f3w procentowych, kt\u00f3re decyduj\u0105 o czasie odpowiedzi lub przekroczeniu limitu czasu podczas szczyt\u00f3w obci\u0105\u017cenia.<\/p>\n\n<h2>Rozmiary maszyn wirtualnych, usuwanie NUMA i przycinanie hosta<\/h2>\n\n<p>Wymiaruj\u0119 maszyny wirtualne tak, aby jednostki vCPU i pami\u0119\u0107 RAM mie\u015bci\u0142y si\u0119 w w\u0119\u017ale NUMA, aby unikn\u0105\u0107 dost\u0119pu mi\u0119dzy w\u0119z\u0142ami. Cz\u0119sto 4-8 jednostek vCPU na w\u0119ze\u0142 zapewnia dobr\u0105 wydajno\u015b\u0107. <strong>Wska\u017aniki trafie\u0144<\/strong>, w zale\u017cno\u015bci od platformy i hierarchii pami\u0119ci podr\u0119cznej. Du\u017ce strony r\u00f3wnie\u017c pomagaj\u0105, poniewa\u017c TLB dzia\u0142a wydajniej, a migracje stron wyst\u0119puj\u0105 rzadziej. W razie potrzeby ustawiam <strong>Przynale\u017cno\u015b\u0107 procesora<\/strong> dla proces\u00f3w krytycznych pod wzgl\u0119dem op\u00f3\u017anie\u0144, aby powi\u0105za\u0107 w\u0105tki z odpowiednimi rdzeniami - wi\u0119cej informacji mo\u017cna znale\u017a\u0107 na stronie <a href=\"https:\/\/webhosting.de\/pl\/serwer-cpu-affinity-hosting-optymalizacja-kernelaffinity\/\">Przynale\u017cno\u015b\u0107 procesora<\/a>. Je\u015bli maszyny wirtualne s\u0105 podzielone mi\u0119dzy w\u0119z\u0142y, istnieje ryzyko \u015bmieci NUMA, tj. ping-pong danych i w\u0105tk\u00f3w.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/numa-balancing-server-memory-2948.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Narz\u0119dzia w praktyce: numactl, lscpu, numad<\/h2>\n\n<p>Z \u201elscpu\u201c czytam <strong>Topologia<\/strong> i w\u0119z\u0142y NUMA, w tym przypisanie rdzeni. \u201enumactl -hardware\u201c pokazuje mi pami\u0119\u0107 na w\u0119ze\u0142 i dost\u0119pne odleg\u0142o\u015bci, co u\u0142atwia ocen\u0119 \u015bcie\u017cek. Demon \u201enumad\u201c monitoruje wykorzystanie i dynamicznie dostosowuje powinowactwa, gdy centra obci\u0105\u017cenia si\u0119 przemieszczaj\u0105. W przypadku sta\u0142ych scenariuszy u\u017cywam \u201enumactl -cpunodebind\/-membind\u201c do jawnego przypinania proces\u00f3w i pami\u0119ci. W ten spos\u00f3b \u0142\u0105cz\u0119 automatyczne r\u00f3wnowa\u017cenie z ukierunkowanymi specyfikacjami i kontroluj\u0119 wynik za pomoc\u0105 \u201eperf\u201c, \u201enumastat\u201c i \u201e\/proc\u201c.<\/p>\n\n<h2>Jak mierz\u0119 wp\u0142yw: Kluczowe liczby i polecenia<\/h2>\n\n<p>Zawsze oceniam NUMA-Tuning poprzez <strong>Seria pomiarowa<\/strong>, a nie przeczuciem. Trzy wska\u017aniki udowodni\u0142y swoj\u0105 warto\u015b\u0107: Stosunek ods\u0142on lokalnych do zdalnych, wska\u017anik migracji i rozk\u0142ad op\u00f3\u017anie\u0144 (P95\/P99).<\/p>\n<ul>\n  <li><strong>W ca\u0142ym systemie<\/strong>numastat\u201e pokazuje dost\u0119p lokalny\/zdalny i zmigrowane strony na w\u0119ze\u0142.<\/li>\n  <li><strong>Zwi\u0105zane z procesem<\/strong>: \u201e\/proc\/\/numa_maps\u201c ujawnia, gdzie znajduje si\u0119 pami\u0119\u0107 i jak zosta\u0142a roz\u0142o\u017cona.<\/li>\n  <li><strong>Widok harmonogramu<\/strong>Cpus_allowed_list\u201e i rzeczywiste \u201cCpus_allowed\u201e sprawdzaj\u0105, czy maj\u0105 zastosowanie powi\u0105zania.<\/li>\n<\/ul>\n<pre><code># Widok ca\u0142ego systemu\nnumastat\nnumastat -m\n\n# Dystrybucja i powi\u0105zania zwi\u0105zane z procesem\npid=$(pidof )\nnumastat -p \"$pid\"\ncat \/proc\/\"$pid\"\/numa_maps | head\ncat \/proc\/\"$pid\"\/status | grep -E 'Cpus_allowed_list|Mems_allowed_list'\ntaskset -cp \"$pid\"\n\n# Licznik j\u0105dra dla aktywno\u015bci NUMA\ngrep -E 'numa|migrate' \/proc\/vmstat\n\n# \u015aledzenie zdarze\u0144 dla dog\u0142\u0119bnych analiz (aktywacja na kr\u00f3tki czas)\necho 1 &gt; \/sys\/kernel\/debug\/tracing\/events\/mm\/enable\nsleep 5; cat \/sys\/kernel\/debug\/tracing\/trace | grep -i numa; echo 0 &gt; \/sys\/kernel\/debug\/tracing\/events\/mm\/enable\n<\/code><\/pre>\n<p>Por\u00f3wnuj\u0119 w ka\u017cdym przypadku <strong>A\/B<\/strong>: unbound vs. bound, automatyczne r\u00f3wnowa\u017cenie w\u0142\u0105czone\/wy\u0142\u0105czone i r\u00f3\u017cne plasterki maszyn wirtualnych. Celem jest wyra\u017ana redukcja zdalnych dost\u0119p\u00f3w i szumu migracji, a tak\u017ce zmniejszenie op\u00f3\u017anie\u0144 P95\/P99. Dopiero gdy zmierzone warto\u015bci b\u0119d\u0105 stabilnie lepsze, zajm\u0119 si\u0119 strojeniem.<\/p>\n\n<h2>Ustawienia BIOS i firmware, kt\u00f3re naprawd\u0119 dzia\u0142aj\u0105<\/h2>\n\n<p>Wy\u0142\u0105czam \u201eNode Interleaving\u201c w BIOS-ie, aby struktura NUMA pozosta\u0142a widoczna, a j\u0105dro <strong>lokalny<\/strong> mo\u017ce planowa\u0107. Zmniejszona liczba stan\u00f3w C stabilizuje szczytowe op\u00f3\u017anienia, poniewa\u017c rdzenie rzadziej przechodz\u0105 w stan g\u0142\u0119bokiego u\u015bpienia, co skraca czas wybudzania. Przydzielam kana\u0142y pami\u0119ci symetrycznie, aby ka\u017cdy w\u0119ze\u0142 m\u00f3g\u0142 wykorzysta\u0107 swoj\u0105 maksymaln\u0105 pojemno\u015b\u0107 pami\u0119ci. <strong>Szeroko\u015b\u0107 pasma<\/strong> osi\u0105gni\u0119te. Testuj\u0119 prefetchery i funkcje RAS za pomoc\u0105 profili obci\u0105\u017cenia, poniewa\u017c pomagaj\u0105 one lub szkodz\u0105 w zale\u017cno\u015bci od wzorca dost\u0119pu. Mierz\u0119 ka\u017cd\u0105 zmian\u0119 w stosunku do linii bazowej i dopiero wtedy przyjmuj\u0119 ustawienie na sta\u0142e.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/NUMA_Balancing_Server_8345.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Parametry j\u0105dra i sysctl, kt\u00f3re robi\u0105 r\u00f3\u017cnic\u0119<\/h2>\n\n<p>Dopracowanie j\u0105dra pomaga mi, <strong>Nad g\u0142ow\u0105<\/strong> oraz <strong>Czas reakcji<\/strong> balancera, aby dopasowa\u0107 go do obci\u0105\u017cenia. Zaczynam od konserwatywnych warto\u015bci domy\u015blnych i krok po kroku posuwam si\u0119 naprz\u00f3d.<\/p>\n<ul>\n  <li><strong>kernel.numa_balancing<\/strong>W\u0142\u0105czanie\/wy\u0142\u0105czanie automatycznego wywa\u017cania. Pozostawiam j\u0105 w\u0142\u0105czon\u0105 dla ruchomych \u0142adunk\u00f3w; wy\u0142\u0105czam j\u0105 dla \u015bci\u015ble przypi\u0119tych specjalnych us\u0142ug jako test.<\/li>\n  <li><strong>kernel.numa_balancing_scan_delay_ms<\/strong>Czas oczekiwania przed pierwszym skanowaniem po utworzeniu procesu. Wybierz wi\u0119kszy, je\u015bli uruchomionych jest wiele kr\u00f3tkotrwa\u0142ych zada\u0144; mniejszy dla d\u0142ugo dzia\u0142aj\u0105cych us\u0142ug, kt\u00f3re wymagaj\u0105 szybkiej blisko\u015bci.<\/li>\n  <li><strong>kernel.numa_balancing_scan_period_min_ms \/ _max_ms<\/strong>Szeroko\u015b\u0107 pasma interwa\u0142\u00f3w skanowania. W\u0105skie interwa\u0142y zwi\u0119kszaj\u0105 szybko\u015b\u0107 reakcji, ale tak\u017ce obci\u0105\u017cenie procesora.<\/li>\n  <li><strong>kernel.numa_balancing_scan_size_mb<\/strong>Proporcja przestrzeni adresowej na skan. Zbyt du\u017cy generuje burze podpowiedzi, zbyt ma\u0142y reaguje powoli.<\/li>\n  <li><strong>vm.zone_reclaim_mode<\/strong>Je\u015bli pami\u0119ci jest ma\u0142o, j\u0105dro preferuje lokalne odzyskiwanie zamiast zdalnego przydzielania. Dla og\u00f3lnych obci\u0105\u017ce\u0144 hostingu, zwykle zostawiam <em>0<\/em>; W przypadku \u015bci\u015ble wra\u017cliwych na op\u00f3\u017anienia us\u0142ug pami\u0119ci lokalnej ostro\u017cnie testuj\u0119 wy\u017csze warto\u015bci.<\/li>\n  <li><strong>Transparent Huge Pages (THP)<\/strong>Pod \u201e\/sys\/kernel\/mm\/transparent_hugepage\/{enabled,defrag}\u201c zwykle ustawiam na <em>madvise<\/em> i konserwatywna defragmentacja. Twarde profile \u201ezawsze\u201c przynosz\u0105 korzy\u015bci TLB, ale ryzykuj\u0105 przeci\u0105gni\u0119cia z powodu kompaktowania.<\/li>\n  <li><strong>sched_migration_cost_ns<\/strong>Szacunkowy koszt migracji zada\u0144. Wy\u017csze warto\u015bci t\u0142umi\u0105 redystrybucj\u0119 agresywnych scheduler\u00f3w.<\/li>\n  <li><strong>cgroups cpuset<\/strong>Z <em>cpuset.cpus<\/em> oraz <em>cpuset.mems<\/em> Oddzielam us\u0142ugi czysto wed\u0142ug w\u0119z\u0142\u00f3w i upewniam si\u0119, \u017ce <strong>Pierwsze dotkni\u0119cie<\/strong> pozostaje w obr\u0119bie dopuszczalnych w\u0119z\u0142\u00f3w.<\/li>\n<\/ul>\n<pre><code>Przyk\u0142ad #: konserwatywne, ale responsywne r\u00f3wnowa\u017cenie\nsysctl -w kernel.numa_balancing=1\nsysctl -w kernel.numa_balancing_scan_delay_ms=30000\nsysctl -w kernel.numa_balancing_scan_period_min_ms=60000\nsysctl -w kernel.numa_balancing_scan_period_max_ms=300000\nsysctl -w kernel.numa_balancing_scan_size_mb=256\n\n# U\u017cywaj THP ostro\u017cnie\necho madvise &gt; \/sys\/kernel\/mm\/transparent_hugepage\/enabled\necho defer &gt; \/sys\/kernel\/mm\/transparent_hugepage\/defrag\n<\/code><\/pre>\n<p>Pozostaje to wa\u017cne: Zmieniaj tylko jedn\u0105 \u015brub\u0119 regulacyjn\u0105 na rund\u0119 testow\u0105 i testuj efekt w odniesieniu do tej samej krzywej obci\u0105\u017cenia. W ten spos\u00f3b oddzielam przyczyn\u0119 od skutku.<\/p>\n\n<h2>Prawid\u0142owe pozycjonowanie obci\u0105\u017ce\u0144: Bazy danych, pami\u0119ci podr\u0119czne, kontenery<\/h2>\n\n<p>Bazy danych odnosz\u0105 korzy\u015bci, gdy pule bufor\u00f3w pozostaj\u0105 lokalne na w\u0119ze\u0142 NUMA, a w\u0105tki s\u0105 powi\u0105zane blisko swoich ha\u0142d. W pami\u0119ci podr\u0119cznej ustawiam sharding na <strong>W\u0119ze\u0142<\/strong> aby unikn\u0105\u0107 zdalnego pobierania. Platformy kontenerowe odbieraj\u0105 limity i \u017c\u0105dania, dzi\u0119ki czemu pody nie przeskakuj\u0105 mi\u0119dzy w\u0119z\u0142ami. Do rezerwacji pami\u0119ci u\u017cywam Huge Pages, co u\u0142atwia przechowywanie hotset\u00f3w w <strong>Skrytki<\/strong> dopasowanie. Poni\u017csza tabela podsumowuje strategie i typowe efekty w kompaktowej formie.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Strategia<\/th>\n      <th>U\u017cycie<\/th>\n      <th>Oczekiwany efekt<\/th>\n      <th>Wskaz\u00f3wka<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Pierwsze dotkni\u0119cie<\/td>\n      <td>Bazy danych, sterty JVM<\/td>\n      <td>Przydzia\u0142 po stronie lokalnej<\/td>\n      <td>Wykonanie inicjalizacji na w\u0119\u017ale docelowym<\/td>\n    <\/tr>\n    <tr>\n      <td>Interleave<\/td>\n      <td>Szeroko roz\u0142o\u017cone obci\u0105\u017cenie<\/td>\n      <td>R\u00f3wnomierna dystrybucja<\/td>\n      <td>Nieoptymalny dla hotspot\u00f3w<\/td>\n    <\/tr>\n    <tr>\n      <td>Przypinanie zada\u0144<\/td>\n      <td>Us\u0142ugi o krytycznym op\u00f3\u017anieniu<\/td>\n      <td>Sta\u0142e op\u00f3\u017anienie<\/td>\n      <td>Mniejsza elastyczno\u015b\u0107 podczas zmian obci\u0105\u017cenia<\/td>\n    <\/tr>\n    <tr>\n      <td>Automatyczne wywa\u017canie<\/td>\n      <td>Mieszane obci\u0105\u017cenia<\/td>\n      <td>Dynamiczna blisko\u015b\u0107<\/td>\n      <td>Wa\u017cenie koszt\u00f3w og\u00f3lnych w stosunku do zysku<\/td>\n    <\/tr>\n    <tr>\n      <td>Ogromne strony<\/td>\n      <td>Du\u017ce ha\u0142dy, pami\u0119ci podr\u0119czne<\/td>\n      <td>Mniej pomini\u0119\u0107 TLB<\/td>\n      <td>Planuj czyste rezerwacje<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Wirtualizacja: wirtualne NUMA, scheduler i personalizacja go\u015bcia<\/h2>\n\n<p>Virtual NUMA przekazuje topologi\u0119 hosta do systemu operacyjnego go\u015bcia w uproszczonej formie, dzi\u0119ki czemu pierwszy dotyk i <strong>Alokator<\/strong> dzia\u0142aj\u0105 rozs\u0105dnie. Harmonogramy hiperwizora zwracaj\u0105 uwag\u0119 na blisko\u015b\u0107 w\u0119z\u0142\u00f3w podczas dystrybucji jednostek vCPU i migracji maszyn wirtualnych. Rzadko wyr\u00f3wnuj\u0119 du\u017ce maszyny wirtualne na wielu w\u0119z\u0142ach, chyba \u017ce obci\u0105\u017cenie jest szeroko strumieniowe i korzysta z interleave. W go\u015bciach dostosowuj\u0119 sterty maszyn JVM lub baz danych, aby pozosta\u0142y lokalne na widocznych w\u0119z\u0142ach NUMA. Je\u015bli chodzi o zarz\u0105dzanie pami\u0119ci\u0105 w go\u015bciach, sp\u00f3jrz na <a href=\"https:\/\/webhosting.de\/pl\/pamiec-wirtualna-zarzadzanie-serwerem-hosting-pamiec-masowa\/\">Pami\u0119\u0107 wirtualna<\/a>, aby okie\u0142zna\u0107 rozmiary stron i zamian\u0119.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/optimierung_hardware_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Blisko\u015b\u0107 PCIe: NVMe i karty sieciowe we w\u0142a\u015bciwych w\u0119z\u0142ach<\/h2>\n\n<p>Je\u015bli to mo\u017cliwe, przypisuj\u0119 dyski SSD NVMe i szybkie karty sieciowe do w\u0119z\u0142a, na kt\u00f3rym znajduje si\u0119 <strong>Obci\u0105\u017cenie prac\u0105<\/strong> jest uruchomiony. W ten spos\u00f3b unikam \u017c\u0105da\u0144 I\/O przekraczaj\u0105cych po\u0142\u0105czenie mi\u0119dzysieciowe i dodaj\u0105cych op\u00f3\u017anienia. Wielow\u0105tkowe karty sieciowe wi\u0105\u017c\u0119 z zestawami rdzeni w\u0119z\u0142a za pomoc\u0105 RSS\/RPS, dzi\u0119ki czemu IRQ pozostaj\u0105 lokalne. W przypadku stos\u00f3w pami\u0119ci masowej warto podzieli\u0107 pule w\u0105tk\u00f3w w\u0119ze\u0142 po w\u0119\u017ale. Je\u015bli zwr\u00f3cisz na to uwag\u0119, zauwa\u017calnie zmniejszysz op\u00f3\u017anienia P99 i stworzysz zapas na szczyty obci\u0105\u017cenia.<\/p>\n\n<h2>IRQ i powinowactwo kolejek w praktyce<\/h2>\n\n<p>Najpierw sprawdzam, kt\u00f3re <strong>W\u0119ze\u0142 NUMA<\/strong> urz\u0105dzenia i odpowiednio przypi\u0105\u0107 IRQ i kolejki. Zapewnia to utrzymanie lokalno\u015bci \u015bcie\u017cki danych.<\/p>\n<pre><code># Mapowanie urz\u0105dzenie-w\u0119ze\u0142\ncat \/sys\/class\/net\/eth0\/device\/numa_node\ncat \/sys\/block\/nvme0n1\/device\/numa_node\n\n# Ustaw specyficzne powinowactwo IRQ (przyk\u0142ad: rdzenie 0-7 w\u0119z\u0142a)\nirq=\necho 0-7 &gt; \/proc\/irq\/$irq\/smp_affinity_list\n\n# Powi\u0105zanie kolejek NIC z rdzeniami (RPS\/RFS)\nfor q in \/sys\/class\/net\/eth0\/queues\/rx-*; do echo 0-7 &gt; \"$q\"\/rps_cpus; done\nsysctl -w net.core.rps_sock_flow_entries=32768\nfor q in \/sys\/class\/net\/eth0\/queues\/rx-*; do echo 4096 &gt; \"$q\"\/rps_flow_cnt; done\n\n# Poprawa powinowactwa kolejek NVMe\necho 2 &gt; \/sys\/block\/nvme0n1\/queue\/rq_affinity\ncat \/sys\/block\/nvme0n1\/queue\/scheduler # \"none\" preferowane\n<\/code><\/pre>\n<p>\u201eUruchamiam \u201cirqbalance\" ze \u015bwiadomo\u015bci\u0105 w\u0119z\u0142a lub ustawiam na <strong>Wyj\u0105tki<\/strong> dla przerwa\u0144 hot-path. Rezultatem s\u0105 bardziej stabilne op\u00f3\u017anienia, mniejsza liczba przeskok\u00f3w IRQ mi\u0119dzy w\u0119z\u0142ami i wymierny wzrost liczby lokalnych wej\u015b\u0107\/wyj\u015b\u0107.<\/p>\n\n<h2>Statyczne wi\u0105zanie vs. dynamiczne r\u00f3wnowa\u017cenie - droga \u015brodka<\/h2>\n\n<p>U\u017cywam \u201etaskset\u201c i cgroups, aby ustawi\u0107 twarde regu\u0142y, gdy deterministyczne <strong>Op\u00f3\u017anienie<\/strong> liczy. Pozostawiam automatyczne r\u00f3wnowa\u017cenie NUMA aktywne, gdy obci\u0105\u017cenie si\u0119 zmienia i potrzebuj\u0119 adaptacyjnej blisko\u015bci. Cz\u0119sto najlepiej sprawdza si\u0119 mieszanka: twarde piny dla gor\u0105cych \u015bcie\u017cek, bardziej otwarte granice dla pracy pomocniczej. Regularnie sprawdzam, czy migracje zauwa\u017calnie rosn\u0105, poniewa\u017c sygnalizuje to s\u0142abe planowanie. Celem pozostaje wybranie lokalizacji danych i w\u0105tk\u00f3w w taki spos\u00f3b, aby migracja by\u0142a rzadka, ale mo\u017cliwa.<\/p>\n\n<h2>NUMA w kontenerach i Kubernetes<\/h2>\n\n<p>Przynosz\u0119 pojemnik <strong>cpusets<\/strong> oraz <strong>Ogromne strony<\/strong> on line. Przypisuj\u0119 pody\/kontenery do w\u0119z\u0142a NUMA, przechowuj\u0105c sp\u00f3jne ilo\u015bci procesora i pami\u0119ci. W orkiestracjach ustawiam zasady, kt\u00f3re faworyzuj\u0105 przypisania do pojedynczego w\u0119z\u0142a, a tym samym szanuj\u0105 pierwsze dotkni\u0119cie.<\/p>\n<ul>\n  <li><strong>Czas dzia\u0142ania kontenera<\/strong>\u201e-cpuset-cpus\u201c i \u201e-cpuset-mems\u201c utrzymuj\u0105 zadania i pami\u0119\u0107 razem; przypisuj\u0105 ogromne strony jako zasoby.<\/li>\n  <li><strong>Topology\/CPU Manager<\/strong>\u015acis\u0142e lub preferowane przypisania zapewniaj\u0105, \u017ce przydzielane s\u0105 powi\u0105zane rdzenie i obszary pami\u0119ci.<\/li>\n  <li><strong>Gwarantowana jako\u015b\u0107 us\u0142ug<\/strong>Sta\u0142e \u017c\u0105dania\/limity minimalizuj\u0105 redystrybucj\u0119 przez program planuj\u0105cy.<\/li>\n<\/ul>\n<p>\u015awiadomie rozdzieli\u0142em sidecary i procesy pomocnicze na inne rdzenie <em>w ramach<\/em> tego samego w\u0119z\u0142a, dzi\u0119ki czemu \u015bcie\u017cka gor\u0105ca pozostaje niezak\u0142\u00f3cona, ale nie wchodzi w wy\u015bcig mi\u0119dzy w\u0119z\u0142ami.<\/p>\n\n<h2>Zrozumienie topologii procesor\u00f3w: CCD\/CCX, SNC i Cluster-on-Die<\/h2>\n\n<p>Obecne procesory serwerowe dziel\u0105 gniazda na <strong>Subdomeny<\/strong> z w\u0142asnymi pami\u0119ciami podr\u0119cznymi i \u015bcie\u017ckami. Bior\u0119 to pod uwag\u0119 przy ci\u0119ciu rdzeni\/heap\u00f3w:<\/p>\n<ul>\n  <li><strong>AMD EPYC<\/strong>CCD\/CCX i \u201eNUMA na gniazdo\u201c (NPS=1\/2\/4) wp\u0142ywaj\u0105 na to, jak dok\u0142adnie NUMA jest przycinana. Wi\u0119cej w\u0119z\u0142\u00f3w (NPS=4) zwi\u0119ksza lokalno\u015b\u0107, ale wymaga czystego przypinania.<\/li>\n  <li><strong>Intel<\/strong>Sub-NUMA Clustering (SNC2\/4) dzieli LLC na klastry. Dobry dla obci\u0105\u017ce\u0144 zwi\u0105zanych z pami\u0119ci\u0105, pod warunkiem, \u017ce system operacyjny i obci\u0105\u017cenie s\u0105 \u015bwiadome w\u0119z\u0142\u00f3w.<\/li>\n  <li><strong>Blisko\u015b\u0107 L3<\/strong>Wi\u0105\u017c\u0119 w\u0105tki korzystaj\u0105ce z tych samych ha\u0142d w tym samym klastrze L3, aby zaoszcz\u0119dzi\u0107 na ruchu sp\u00f3jno\u015bci i przeskokach mi\u0119dzy klastrami.<\/li>\n<\/ul>\n<p>Opcje te dzia\u0142aj\u0105 jak mno\u017cnik: je\u015bli s\u0105 u\u017cywane prawid\u0142owo, zwi\u0119kszaj\u0105 <strong>Lokalizacja<\/strong> Ponadto - nieprawid\u0142owo skonfigurowane, zwi\u0119kszaj\u0105 fragmentacj\u0119 i ruch zdalny.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/04\/hosting-serverraum-7584.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wprowadzenie krok po kroku i plan wycofania<\/h2>\n\n<p>Nigdy nie wprowadzam tuningu NUMA typu \u201ebig bang\u201c. Odporny <strong>Plan<\/strong> unika niespodzianek:<\/p>\n<ol>\n  <li><strong>Linia bazowa<\/strong>Topologia sprz\u0119towa, op\u00f3\u017anienia P50\/P95\/P99, przepustowo\u015b\u0107, przechwytywanie szybko\u015bci numastat.<\/li>\n  <li><strong>Hipoteza<\/strong>Sformu\u0142uj konkretny cel (np. zdalny dost\u0119p -30%, P99 -20%).<\/li>\n  <li><strong>Jeden krok<\/strong>Zmie\u0144 tylko jedn\u0105 \u015brub\u0119 regulacyjn\u0105 (np. ci\u0119cie VM, cpuset, polityka THP, interwa\u0142y skanowania).<\/li>\n  <li><strong>Kanarek<\/strong>Przetestuj na 5-10% floty pod rzeczywistym obci\u0105\u017ceniem, zachowaj gotowo\u015b\u0107 do wycofania.<\/li>\n  <li><strong>Wycena<\/strong>Por\u00f3wnywanie zmierzonych warto\u015bci, definiowanie okien regresji, rejestrowanie efekt\u00f3w ubocznych.<\/li>\n  <li><strong>Rollout<\/strong>Rozwijaj wa\u0142ek po wa\u0142ku, mierz ponownie po ka\u017cdym wa\u0142ku.<\/li>\n  <li><strong>Konserwacja<\/strong>Ponowne pomiary co kwarta\u0142 (aktualizacje j\u0105dra, oprogramowania uk\u0142adowego i obci\u0105\u017cenia zmieniaj\u0105 optymalne warto\u015bci).<\/li>\n<\/ol>\n<p>Gwarantuje to, \u017ce ulepszenia s\u0105 powtarzalne i mo\u017cna je cofn\u0105\u0107 w ci\u0105gu kilku minut w przypadku b\u0142\u0119du.<\/p>\n\n<h2>Najcz\u0119stsze b\u0142\u0119dy - i jak ich unika\u0107<\/h2>\n\n<p>Typowym b\u0142\u0119dem jest aktywowanie przeplatania w\u0119z\u0142\u00f3w w BIOS-ie, co ukrywa topologi\u0119 NUMA i <strong>R\u00f3wnowa\u017cenie<\/strong> trudniejsze. R\u00f3wnie niekorzystne: maszyny wirtualne z wi\u0119ksz\u0105 liczb\u0105 vCPU ni\u017c oferuje w\u0119ze\u0142 oraz nieczysto zarezerwowane ogromne strony. Niekt\u00f3rzy administratorzy spinaj\u0105 wszystko na sztywno, trac\u0105c w ten spos\u00f3b ca\u0142\u0105 elastyczno\u015b\u0107, gdy zmienia si\u0119 obci\u0105\u017cenie. Inni polegaj\u0105 ca\u0142kowicie na j\u0105drze, cho\u0107 twarde hotspoty wymagaj\u0105 jasnych regu\u0142. Rejestruj\u0119 serie pomiar\u00f3w, wcze\u015bnie rozpoznaj\u0119 warto\u015bci odstaj\u0105ce i krok po kroku dostosowuj\u0119 konfiguracj\u0119 i zasady.<\/p>\n<ul>\n  <li><strong>THP \u201ezawsze\u201c<\/strong> bez kontroli: nieplanowane kompaktowanie zak\u0142\u00f3ca op\u00f3\u017anienia. Wol\u0119 u\u017cywa\u0107 \u201emadvise\u201c i specjalnie rezerwowa\u0107 du\u017ce strony.<\/li>\n  <li><strong>vm.zone_reclaim_mode<\/strong> zbyt agresywny: Lokalne odzyskiwanie mo\u017ce przynie\u015b\u0107 wi\u0119cej szkody ni\u017c po\u017cytku w niew\u0142a\u015bciwym momencie. Najpierw zmierzy\u0107, potem wyostrzy\u0107.<\/li>\n  <li><strong>irqbalance blind<\/strong>Niekrytyczne IRQ przemieszczaj\u0105 si\u0119 mi\u0119dzy w\u0119z\u0142ami. Ustawiam wyj\u0105tki lub sta\u0142e maski dla gor\u0105cych \u015bcie\u017cek.<\/li>\n  <li><strong>Mieszanka interleave + hard pinning<\/strong>Sprzeczne polityki tworz\u0105 ping-pong. Opowiadam si\u0119 za wyra\u017an\u0105 lini\u0105 dla ka\u017cdej us\u0142ugi.<\/li>\n  <li><strong>Nieoczyszczone korpusy<\/strong>Kontenery widz\u0105 w\u0119ze\u0142, ale mapuj\u0105 pami\u0119\u0107 do innych w\u0119z\u0142\u00f3w. Zawsze ustawiaj \u201ecpuset.mems\u201c zgodnie z zestawem CPU.<\/li>\n  <li><strong>Funkcje Sub-NUMA<\/strong> aktywowane, ale nieu\u017cywane: Wi\u0119cej w\u0119z\u0142\u00f3w bez planowania zwi\u0119ksza fragmentacj\u0119. W\u0142\u0105czanie tylko po testach.<\/li>\n<\/ul>\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>NUMA Balancing Server \u0142\u0105czy procesy i dane w ukierunkowany spos\u00f3b, dzi\u0119ki czemu dost\u0119p lokalny jest cz\u0119stszy i bardziej wydajny. <strong>Op\u00f3\u017anienia<\/strong> staj\u0105 si\u0119 kr\u00f3tsze. Przy odpowiednim rozmiarze maszyny wirtualnej, czystej konfiguracji BIOS-u i narz\u0119dziach takich jak numactl, tworzona jest przejrzysta topologia, kt\u00f3r\u0105 wykorzystuje j\u0105dro. Wirtualne NUMA, ogromne strony i powinowactwa uzupe\u0142niaj\u0105 automatyczne r\u00f3wnowa\u017cenie, zamiast je zast\u0119powa\u0107. Pod\u0142\u0105czanie urz\u0105dze\u0144 wej\u015bcia\/wyj\u015bcia blisko w\u0119z\u0142\u00f3w i korzystanie z gor\u0105cych \u015bcie\u017cek eliminuje kosztowny dost\u0119p zdalny. W ten spos\u00f3b sprz\u0119t hostingowy skaluje si\u0119 niezawodnie, a ka\u017cda sekunda procesora dostarcza wi\u0119cej mocy obliczeniowej. <strong>\u0142adowno\u015b\u0107<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>**Serwer r\u00f3wnowa\u017c\u0105cy NUMA** rewolucjonizuje optymalizacj\u0119 dost\u0119pu do pami\u0119ci na **sprz\u0119cie hostingowym**. Zmniejsz op\u00f3\u017anienia i zmaksymalizuj wydajno\u015b\u0107 serwera.<\/p>","protected":false},"author":1,"featured_media":18938,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-18945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"542","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"NUMA Balancing Server","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"18938","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/18945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=18945"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/18945\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/18938"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=18945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=18945"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=18945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}