{"id":19865,"date":"2026-06-10T11:53:56","date_gmt":"2026-06-10T09:53:56","guid":{"rendered":"https:\/\/webhosting.de\/server-numa-locality-cpu-memory-affinity-optimierung-core\/"},"modified":"2026-06-10T11:53:56","modified_gmt":"2026-06-10T09:53:56","slug":"serwer-numa-lokalnosc-cpu-powinowactwo-pamieci-optymalizacja-rdzen","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/server-numa-locality-cpu-memory-affinity-optimierung-core\/","title":{"rendered":"Lokalno\u015b\u0107 NUMA serwera i powinowactwo CPU-Pami\u0119\u0107 dla maksymalnej wydajno\u015bci hostingu"},"content":{"rendered":"<p><strong>Serwer NUMA<\/strong> Lokalno\u015b\u0107 i powinowactwo pami\u0119ci procesora okre\u015blaj\u0105, jak blisko pami\u0119ci RAM dzia\u0142aj\u0105 w\u0105tki i jak sta\u0142e op\u00f3\u017anienia pozostaj\u0105 w stosach hostingu. W praktyczny spos\u00f3b poka\u017c\u0119, w jaki spos\u00f3b mo\u017cna osi\u0105gn\u0105\u0107 wymiernie wi\u0119ksz\u0105 przepustowo\u015b\u0107 dzi\u0119ki rozpoznawaniu topologii, strategiom powinowactwa i \u015bcie\u017ckom I\/O blisko w\u0119z\u0142a. <strong>Op\u00f3\u017anienie<\/strong> zauwa\u017calnie ni\u017cszy.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Dla szybkiej orientacji, podsumowuj\u0119 kluczowe wiadomo\u015bci przed szczeg\u00f3\u0142owym wyja\u015bnieniem krok\u00f3w i poparciem ich przyk\u0142adami, dzi\u0119ki czemu mo\u017cesz od razu zobaczy\u0107, od czego powiniene\u015b zacz\u0105\u0107, aby <strong>Lokalizacja<\/strong> i Affinity. K\u0142ad\u0119 nacisk na jasne relacje mi\u0119dzy w\u0105tkami, pami\u0119ci\u0105 i wej\u015bciami\/wyj\u015bciami, dzi\u0119ki czemu mo\u017cna uzyska\u0107 priorytety w spos\u00f3b czysty i przejrzysty. <strong>Decyzje<\/strong> spotkanie. Okre\u015blam r\u00f3wnie\u017c scenariusze, w kt\u00f3rych Interleave ma sens bez rozmycia \u015bcie\u017cek krytycznych i pokazuj\u0119, w jaki spos\u00f3b mo\u017cna wykaza\u0107 rzeczywisty post\u0119p poprzez monitorowanie i <strong>B\u0142\u0105d<\/strong> s\u0105 unikane. W przypadku \u015brodowisk zwirtualizowanych podaj\u0119 wskaz\u00f3wki dotycz\u0105ce umieszczania procesor\u00f3w vCPU i pami\u0119ci vRAM, aby systemy-go\u015bcie nie \u015blizga\u0142y si\u0119 po wielu w\u0119z\u0142ach. <strong>Zdalny<\/strong>-dost\u0119py eksploduj\u0105. Na koniec prze\u0142o\u017c\u0119 wnioski na kr\u00f3tk\u0105 map\u0119 drogow\u0105, aby\u015b m\u00f3g\u0142 post\u0119powa\u0107 w uporz\u0105dkowany spos\u00f3b i robi\u0107 ka\u017cdy krok we w\u0142a\u015bciwym kierunku. <strong>wymierny<\/strong> bezpieczne.<\/p>\n<ul>\n  <li><strong>Lokalizacja<\/strong> po pierwsze: trzymaj w\u0105tki blisko w\u0142asnej pami\u0119ci RAM, unikaj zdalnych.<\/li>\n  <li><strong>Affinity<\/strong> poprawka: Powi\u0105zanie rdzeni i pami\u0119ci wed\u0142ug zasad.<\/li>\n  <li><strong>Topologia<\/strong> odczyt: W\u0119z\u0142y, rdzenie, urz\u0105dzenia PCIe na gniazdo.<\/li>\n  <li><strong>\u015acie\u017cki wej\u015bcia\/wyj\u015bcia<\/strong> pakiet: Po\u0142\u0105czenie NIC, NVMe i aplikacji w tym samym w\u0119\u017ale.<\/li>\n  <li><strong>targi<\/strong> zamiast zgadywa\u0107: P95\/ P99, zdalny dost\u0119p i \u015bledzenie przepustowo\u015bci.<\/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\/06\/serverraum-performance-1573.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Zrozumienie topologii NUMA<\/h2>\n\n<p>Zanim przenios\u0119 obci\u0105\u017cenia, przeczyta\u0142em <strong>Topologia<\/strong> serwera: ile w\u0119z\u0142\u00f3w NUMA istnieje, ile rdzeni i ile pami\u0119ci RAM jest pod\u0142\u0105czonych do ka\u017cdego w\u0119z\u0142a. Zwracam r\u00f3wnie\u017c uwag\u0119 na to, kt\u00f3re urz\u0105dzenia PCIe - takie jak karty sieciowe lub dyski SSD NVMe - s\u0105 pod\u0142\u0105czone do kt\u00f3rego gniazda, poniewa\u017c okre\u015bla to \u015bcie\u017cki przerwa\u0144 i dost\u0119p do pami\u0119ci, a tak\u017ce ile pami\u0119ci RAM jest pod\u0142\u0105czone do ka\u017cdego w\u0119z\u0142a. <strong>Op\u00f3\u017anienie<\/strong> scharakteryzowane. W\u0119ze\u0142 zapewnia lokalny dost\u0119p do pami\u0119ci na niewielk\u0105 odleg\u0142o\u015b\u0107; wszystko poza tym kosztuje czas i przepustowo\u015b\u0107. Im wi\u0119ksza maszyna skaluje si\u0119 z wieloma gniazdami, tym bardziej zdalny dost\u0119p wp\u0142ywa na czas reakcji i poch\u0142ania przepustowo\u015b\u0107. <strong>Przepustowo\u015b\u0107<\/strong>. Je\u015bli chodzi o zrozumia\u0142e wprowadzenie do logiki sprz\u0119towej, uwa\u017cam, \u017ce kompaktowy <a href=\"https:\/\/webhosting.de\/pl\/numa-nodes-hosting-serwerow-duze-systemy-serverboost\/\">W\u0119z\u0142y NUMA w skr\u00f3cie<\/a>, \u015bwiadome uwzgl\u0119dnianie granic w\u0119z\u0142\u00f3w i unikanie nieprawid\u0142owych rozk\u0142ad\u00f3w.<\/p>\n\n<p>W praktyce zaczynam od kr\u00f3tkiej inwentaryzacji topologii i dokumentuj\u0119 j\u0105, aby m\u00f3c p\u00f3\u017aniej podejmowa\u0107 decyzje dotycz\u0105ce powinowactwa w zrozumia\u0142y spos\u00f3b. Przydatne polecenia:<\/p>\n<pre><code>Rdzenie # i przypisanie NUMA\nlscpu -e=CPU,Core,Socket,Node\n\nPrzegl\u0105d sprz\u0119tu # NUMA\nnumactl --hardware\n\n# Przypisywanie urz\u0105dze\u0144 PCIe do ich w\u0119z\u0142\u00f3w NUMA\nlspci -nn | grep -E \"Ethernet|Non-Volatile\"\nfor d in \/sys\/bus\/pci\/devices\/*; do echo -n \"$d: \"; cat $d\/numa_node; done\n<\/code><\/pre>\n<p>Wa\u017cne jest to, \u017ce <strong>PCIe Root Complex<\/strong> i gniazda urz\u0105dze\u0144 do gniazd. Dwa porty tej samej karty sieciowej mog\u0105 by\u0107 przypisane do r\u00f3\u017cnych w\u0119z\u0142\u00f3w; ma to wp\u0142yw na to, gdzie kolejki RX\/TX i IRQ s\u0105 najlepsze. To samo dotyczy NVMe: nowoczesne kontrolery maj\u0105 kilka kolejek, kt\u00f3re nale\u017cy powi\u0105za\u0107 z rdzeniami w pobli\u017cu w\u0119z\u0142a, aby DMA nie wyzwala\u0142o \u017cadnych przeskok\u00f3w w\u0119z\u0142a.<\/p>\n\n<h2>Prawid\u0142owe wykorzystanie powinowactwa pami\u0119ci procesora<\/h2>\n\n<p>Z CPU-Memory Affinity, mocno \u0142\u0105cz\u0119 procesy z obszarami rdzenia i wymuszam lokaln\u0105 alokacj\u0119 pami\u0119ci tak daleko, jak to mo\u017cliwe, aby <strong>W\u0105tki<\/strong> nie si\u0119gaj\u0105 stale poza kraw\u0119d\u017a w\u0119z\u0142a. W Linuksie definiuj\u0119 procesory za pomoc\u0105 systemd lub cgroups i \u0142\u0105cz\u0119 to z polityk\u0105 pami\u0119ci, tak aby pami\u0119\u0107 RAM by\u0142a najlepiej tworzona na tym samym w\u0119\u017ale i <strong>Zdalny<\/strong> pozostaje zminimalizowany. Krytyczne us\u0142ugi - interfejsy API, pami\u0119ci podr\u0119czne w pami\u0119ci, bazy danych - odnosz\u0105 natychmiastowe korzy\u015bci, poniewa\u017c czasy oczekiwania kontrolera pami\u0119ci s\u0105 skr\u00f3cone, a trafienia w pami\u0119ci podr\u0119cznej s\u0105 cz\u0119stsze. Jednak zbyt twarde limity przypinania mog\u0105 ogranicza\u0107 planowanie, wi\u0119c ka\u017cd\u0105 regulacj\u0119 potwierdzam testami por\u00f3wnawczymi i monitoruj\u0119 warto\u015bci P95\/P99 pod k\u0105tem zauwa\u017calnych efekt\u00f3w na <strong>U\u017cytkownik<\/strong>-Do\u015bwiadczenie. Kompaktowe wprowadzenie do Affinity w hostingu pomo\u017ce ci zacz\u0105\u0107: <a href=\"https:\/\/webhosting.de\/pl\/server-process-affinity-numa-awareness-hosting-ressourcentuning\/\">Affinity i \u015bwiadomo\u015b\u0107 NUMA<\/a> zapewni\u0107 niezb\u0119dne narz\u0119dzia do czystego umieszczenia.<\/p>\n\n<p>Decyduj\u0105cym czynnikiem jest <strong>Zasada pierwszego dotkni\u0119cia<\/strong>Pami\u0119\u0107 jest tworzona na w\u0119\u017ale, kt\u00f3ry zapisuje stron\u0119 jako pierwszy. Dlatego nale\u017cy zainicjowa\u0107 du\u017ce sterty lub bufory na docelowych rdzeniach w\u0119z\u0142a, w kt\u00f3rym us\u0142uga zostanie p\u00f3\u017aniej uruchomiona - najlepiej z ju\u017c ustawion\u0105 polityk\u0105 procesora i pami\u0119ci (np. za pomoc\u0105 systemd unit lub numactl). Je\u015bli uruchomisz cold na w\u0119\u017ale 0, a nast\u0119pnie przeniesiesz w\u0105tki na w\u0119ze\u0142 1, wi\u0119kszo\u015b\u0107 stron pozostanie zdalna. W przypadku sterty du\u017cych runtime'\u00f3w warto u\u017cy\u0107 \u201epre-touch\u201c podczas bootstrapu, aby strony gni\u0142y lokalnie, a nast\u0119pnie pozostawa\u0142y ciep\u0142e.<\/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\/06\/server_numa_affinity_2763.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>\u015awiadomo\u015b\u0107 NUMA w stosie hostingu<\/h2>\n\n<p>System operacyjny obs\u0142uguj\u0105cy NUMA, odpowiedni hiperwizor i aplikacje z funkcj\u0105 przypinania w\u0105tk\u00f3w wsp\u00f3lnie rozwijaj\u0105 sw\u00f3j pe\u0142ny potencja\u0142. <strong>Potencja\u0142<\/strong>. System operacyjny faworyzuje lokalne rozmieszczenie, je\u015bli w w\u0119\u017ale dost\u0119pne s\u0105 wolne zasoby, podczas gdy hiperwizor alokuje maszyny wirtualne w taki spos\u00f3b, aby vCPU i vRAM nie oddala\u0142y si\u0119 od siebie i nie rozproszy\u0142y. <strong>Lokalizacja<\/strong> jest utrzymywana. W aplikacji oddzielam pule robocze na w\u0119ze\u0142 i utrzymuj\u0119 lokalne kolejki zamiast obs\u0142ugiwa\u0107 globalne pule krzy\u017cowo. Organizuj\u0119 procesy bazodanowe, demony pami\u0119ci podr\u0119cznej i instancje serwera WWW na zasadzie w\u0119ze\u0142 po w\u0119\u017ale, tak aby \u015bcie\u017cki gor\u0105ce pozosta\u0142y kr\u00f3tkie i aby <strong>Jitter<\/strong> spada. Zwi\u0119ksza to sp\u00f3jno\u015b\u0107 i przewidywalno\u015b\u0107 pod obci\u0105\u017ceniem, co bezpo\u015brednio wp\u0142ywa na przewidywalno\u015b\u0107 um\u00f3w SLA w euro i oszcz\u0119dza kosztownej nadprowizji.<\/p>\n\n<p>Na poziomie Ingress zajmuj\u0119 si\u0119 <strong>Powinowactwo w\u0119z\u0142\u00f3w<\/strong> sesji, na przyk\u0142ad poprzez lepki routing lub sp\u00f3jne haszowanie (np. na adresie IP klienta lub tokenach sesji), tak aby \u017c\u0105dania trafia\u0142y z powrotem do \u201eich\u201c lokalnego w\u0119z\u0142a i pami\u0119ci podr\u0119cznej. W przypadku us\u0142ug stanowych planuj\u0119 repliki na w\u0119ze\u0142 i r\u00f3wnowa\u017c\u0119 lokalnie dost\u0119p do odczytu; wyr\u00f3wnuj\u0119 \u015bcie\u017cki zapisu za pomoc\u0105 replikacji asynchronicznej lub wsadowej, aby unikn\u0105\u0107 mi\u0119dzyw\u0119z\u0142owego ping-ponga.<\/p>\n\n<h2>Planowanie us\u0142ug w\u0119ze\u0142 po w\u0119\u017ale<\/h2>\n\n<p>Grupuj\u0119 warstwy stosu w taki spos\u00f3b, aby ka\u017cda warstwa mia\u0142a wyra\u017ane odniesienie do w\u0119z\u0142a i <strong>\u015acie\u017cki<\/strong> Kr\u00f3tko m\u00f3wi\u0105c. Klasyczna separacja: web\/API na w\u0119ze\u0142, app worker obok niego, plus lokalna pami\u0119\u0107 podr\u0119czna; baza danych r\u00f3wnie\u017c znajduje si\u0119 blisko w\u0119z\u0142a, je\u015bli mie\u015bci si\u0119 w nim pami\u0119\u0107 RAM. <strong>IO<\/strong>-\u015bcie\u017cka nie jest przerywana. Przenosz\u0119 zadania raportowania, tworzenia kopii zapasowych lub pracownik\u00f3w wsadowych do mniej krytycznych w\u0119z\u0142\u00f3w, aby interaktywne \u017c\u0105dania pozosta\u0142y nienaruszone. Unikam du\u017cych instancji monolitu, poniewa\u017c cz\u0119sto przekraczaj\u0105 one granice w\u0119z\u0142\u00f3w, a zatem generuj\u0105 zdalne obci\u0105\u017cenie, kt\u00f3re <strong>Wydajno\u015b\u0107<\/strong> rozmyte. Mniejsze, replikowane instancje na w\u0119ze\u0142 cz\u0119sto zapewniaj\u0105 lepsz\u0105 przepustowo\u015b\u0107 w codziennym u\u017cytkowaniu, poniewa\u017c przestrzegaj\u0105 zasad NUMA i wyg\u0142adzaj\u0105 szczyty.<\/p>\n\n<p>Na potrzeby planowania wydajno\u015bci obliczam <strong>Headroom<\/strong> oddzielnie dla ka\u017cdego w\u0119z\u0142a: bufor CPU dla burst\u00f3w, bufor RAM przeciwko OOM i oddzielne marginesy dla page cache. W ten spos\u00f3b zapobiegam niezamierzonemu zdalnemu prze\u0142\u0105czaniu j\u0105dra. Definiuj\u0119 jasne \u015bcie\u017cki prze\u0142\u0105czania dla prze\u0142\u0105czania awaryjnego: je\u015bli w\u0119ze\u0142 ulegnie awarii, instancje zast\u0119pcze mog\u0105 dzia\u0142a\u0107 mi\u0119dzy w\u0119z\u0142ami, ale ograniczam ich wsp\u00f3\u0142bie\u017cno\u015b\u0107 do czasu przywr\u00f3cenia oryginalnego w\u0119z\u0142a - dzi\u0119ki temu og\u00f3lne op\u00f3\u017anienie jest stabilne.<\/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\/06\/server-performance-numa-locality-4759.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Ustawianie powinowactwa procesora: Metody i pu\u0142apki<\/h2>\n\n<p>Do alokacji rdzeni u\u017cywam systemd z CPUAffinity lub cgroups z cpuset.cpus, dzi\u0119ki czemu us\u0142ugi maj\u0105 ustalone <strong>G\u0142\u00f3wne obszary<\/strong> uzyska\u0107. Podczas przypinania zwracam uwag\u0119 na pary hiperw\u0105tkowe, poniewa\u017c dwa w\u0105tki logiczne jednostki fizycznej wsp\u00f3\u0142dziel\u0105 zasoby i mog\u0105 spowalnia\u0107 si\u0119 nawzajem, je\u015bli po\u0142\u0105cz\u0119 je nieszcz\u0119\u015bliwie. <strong>Wskaz\u00f3wki<\/strong> tworzy\u0107. \u015acie\u017cki op\u00f3\u017anie\u0144 - zako\u0144czenie TLS, wej\u015bcie API, czytniki pami\u0119ci podr\u0119cznej - otrzymuj\u0105 wy\u0142\u0105czne rdzenie, podczas gdy dzienniki, kompresja lub kopie zapasowe s\u0105 przenoszone do innych pul. Pule, kt\u00f3re s\u0105 zbyt w\u0105skie bez bufor\u00f3w, powoduj\u0105 kolejki, wi\u0119c uwzgl\u0119dniam zapas i sprawdzam prze\u0142\u0105czniki kontekstu, d\u0142ugo\u015b\u0107 runqueue i <strong>IRQ<\/strong>-rozk\u0142ad. Z obserwacji wnioskuj\u0119, czy otworzy\u0107 rdzenie szerzej, czy skoncentrowa\u0107 je bardziej, a\u017c rozk\u0142ad op\u00f3\u017anie\u0144 spadnie czysto, a szczyty P99 stan\u0105 si\u0119 cichsze.<\/p>\n\n<p>W celu dalszej redukcji jittera, selektywnie ustawiam prze\u0142\u0105czniki j\u0105dra, takie jak <strong>nohz_full<\/strong> oraz <strong>rcu_nocbs<\/strong> w przypadku rdzeni o wy\u0142\u0105cznym op\u00f3\u017anieniu, odizoluj je od us\u0142ug systemowych i celowo umieszczaj IRQ tylko na procesorach przeznaczonych do tego celu. U\u017cywam us\u0142ugi \u201eirqbalance\u201c z ostro\u017cno\u015bci\u0105: albo skonfiguruj j\u0105 specjalnie, albo dezaktywuj, je\u015bli udaremnia r\u0119czne powinowactwo IRQ. U\u017cywam SCHED_FIFO\/SCHED_RR oszcz\u0119dnie i tylko z limitami Be, aby unikn\u0105\u0107 inwersji priorytet\u00f3w lub g\u0142odu.<\/p>\n\n<h2>Polityki pami\u0119ci i maski NUMA<\/h2>\n\n<p>W przypadku polityki pami\u0119ci rozr\u00f3\u017cniam mi\u0119dzy preferowan\u0105 alokacj\u0105 lokaln\u0105, przeplotem mi\u0119dzy wieloma w\u0119z\u0142ami i sta\u0142ymi maskami NUMA za po\u015brednictwem cpuset.mems, wi\u0119c <strong>RAM<\/strong> przep\u0142ywa do miejsca, w kt\u00f3rym w\u0105tki s\u0105 faktycznie uruchomione. W przypadku us\u0142ug interaktywnych zwykle ustawiam \u201epreferowane\u201c, co oznacza, \u017ce system alokuje lokalnie i odchyla si\u0119 tylko wtedy, gdy wyst\u0119puje niedob\u00f3r, czyli <strong>Zdalny<\/strong>-Dost\u0119p jest ograniczony. Zadania analityczne lub strumieniowe czasami korzystaj\u0105 z przeplotu, poniewa\u017c przepustowo\u015b\u0107 jest dystrybuowana mi\u0119dzy w\u0119z\u0142ami, a presja na kontroler jest zmniejszona. Sta\u0142e maski zapewniaj\u0105 kontrol\u0119, ale wymagaj\u0105 dyscypliny w planowaniu przepustowo\u015bci, aby unikn\u0105\u0107 niepo\u017c\u0105danych zdarze\u0144 OOM w w\u0119\u017ale. <strong>Us\u0142ugi<\/strong> przeszkadza\u0107. Poni\u017csza tabela kategoryzuje typowe polityki wed\u0142ug typowych scenariuszy i pomaga w podj\u0119ciu szybkiej decyzji.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>Polityka<\/strong><\/th>\n      <th><strong>Efekt<\/strong><\/th>\n      <th><strong>Typowe obci\u0105\u017cenia<\/strong><\/th>\n      <th><strong>Ryzyko<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Preferowany (lokalny)<\/td>\n      <td>Pami\u0119\u0107 RAM g\u0142\u00f3wnie w w\u0119\u017ale lokalnym, opcja awaryjna w przypadku niedoboru<\/td>\n      <td>Web\/ API, pami\u0119ci podr\u0119czne, bazy danych OLTP<\/td>\n      <td>Niewielki dryft przy pe\u0142nym obci\u0105\u017ceniu na innych w\u0119z\u0142ach<\/td>\n    <\/tr>\n    <tr>\n      <td>Interleave<\/td>\n      <td>R\u00f3wnomierna dystrybucja w wybranych w\u0119z\u0142ach<\/td>\n      <td>Streaming, analityka, du\u017ce skany<\/td>\n      <td>Wi\u0119ksze op\u00f3\u017anienia dla poszczeg\u00f3lnych dost\u0119p\u00f3w<\/td>\n    <\/tr>\n    <tr>\n      <td>Sta\u0142a maska NUMA<\/td>\n      <td>\u015acis\u0142e powi\u0105zanie ze zdefiniowanymi w\u0119z\u0142ami pami\u0119ci<\/td>\n      <td>\u015aci\u015ble zamkni\u0119te us\u0142ugi, testy deterministyczne<\/td>\n      <td>Ryzyko OOM w przypadku nieprawid\u0142owego zaplanowania bud\u017cetu<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Miej oko na prze\u0142\u0105czniki systemowe: <strong>zone_reclaim_mode<\/strong> wp\u0142ywa na to, czy w\u0119ze\u0142 agresywnie czy\u015bci w\u0142asn\u0105 pami\u0119\u0107 przed zdaln\u0105 alokacj\u0105 - cz\u0119sto jest to niepo\u017c\u0105dane w przypadku \u015bcie\u017cek op\u00f3\u017anie\u0144. <strong>Przejrzyste ogromne strony<\/strong> (THP) mo\u017ce powodowa\u0107 migracj\u0119 stron lub generowa\u0107 przeci\u0105gni\u0119cia; w przypadku us\u0142ug wra\u017cliwych na op\u00f3\u017anienia zwykle wybieram \u201emadvise\u201c i u\u017cywam statycznych stron u\u015bcisku tam, gdzie ma to sens, tak aby zwi\u0119kszy\u0107 liczb\u0119 trafie\u0144 TLB i zmniejszy\u0107 liczb\u0119 b\u0142\u0119d\u00f3w stron.<\/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\/06\/server_performance_optimization_2314.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wi\u0105zanie \u015bcie\u017cek sieciowych i we\/wy w pobli\u017cu w\u0119z\u0142a<\/h2>\n\n<p>Dopasowuj\u0119 kolejki NIC (RX\/TX) tak, aby ich IRQ wskazywa\u0142y na rdzenie odpowiedniego w\u0119z\u0142a, a przetwarzanie pakiet\u00f3w odbywa\u0142o si\u0119 tam, gdzie jest to konieczne. <strong>App<\/strong> oblicze\u0144. To samo dotyczy dysk\u00f3w SSD NVMe lub kontroler\u00f3w RAID: w\u0105tki I\/O powinny dzia\u0142a\u0107 na w\u0119\u017ale, do kt\u00f3rego urz\u0105dzenie jest pod\u0142\u0105czone przez PCIe, aby \u015bcie\u017cki DMA pozosta\u0142y kr\u00f3tkie, a urz\u0105dzenie mog\u0142o by\u0107 wykorzystywane bardziej efektywnie. <strong>W\u0105skie gard\u0142a<\/strong> nie materializuj\u0105 si\u0119. W systemie Linux dostosowuj\u0119 maski powinowactwa IRQ i \u0142\u0105cz\u0119 je z pulami CPU moich us\u0142ug, aby utworzy\u0107 ci\u0105g\u0142\u0105 \u015bcie\u017ck\u0119. W przypadku mikrowybuch\u00f3w z sieci, takich jak wiele u\u015bcisk\u00f3w d\u0142oni TLS, ta blisko\u015b\u0107 bezpo\u015brednio si\u0119 op\u0142aca, poniewa\u017c \u015bcie\u017cki kopiowania s\u0105 kr\u00f3tsze, a pami\u0119ci podr\u0119czne procesora pozostaj\u0105 ciep\u0142e. <strong>Kontekst<\/strong> rzadziej. Skutkuje to sp\u00f3jnym przep\u0142ywem danych z pakietu do aplikacji do pami\u0119ci, bez niepotrzebnych przeskok\u00f3w w\u0119z\u0142\u00f3w.<\/p>\n\n<p>Konkretne d\u017awignie w stosie sieciowym: <strong>RSS<\/strong> dla sprz\u0119towej dystrybucji do kolejek, <strong>RPS\/RFS<\/strong> do programowego sterowania procesorem i <strong>XPS<\/strong> dla wyboru TX. U\u017cywam ethtool do przypisywania kolejek RX do grup rdzeni, kt\u00f3re dzia\u0142aj\u0105 w tym samym w\u0119\u017ale co pracownicy. Do przechowywania u\u017cywam <strong>blk-mq<\/strong>-Dostrajanie i mapowanie kolejek na w\u0119ze\u0142; kontrolery NVMe oferuj\u0105 kilka kolejek przesy\u0142ania\/ko\u0144czenia, kt\u00f3re skaluj\u0119 i przypisuj\u0119 \u2264 liczbie rdzeni na w\u0119ze\u0142. Regularnie sprawdzaj, czy przerwania (cat \/proc\/interrupts) s\u0105 uruchamiane tam, gdzie znajduj\u0105 si\u0119 rdzenie aplikacji - mo\u017cesz rozpozna\u0107 dryf poprzez zwi\u0119kszenie zdalnych bajt\u00f3w pomimo stabilnego obci\u0105\u017cenia.<\/p>\n\n<h2>Struktura architektury aplikacji zgodna z NUMA<\/h2>\n\n<p>Na poziomie aplikacji konfiguruj\u0119 w\u0142asne pule robocze dla ka\u017cdego w\u0119z\u0142a NUMA, utrzymuj\u0119 lokalne kolejki i unikam globalnych hotspot\u00f3w blokady, dzi\u0119ki czemu <strong>W\u0105tki<\/strong> a nie przeskakiwa\u0107 tam i z powrotem. Skonfigurowa\u0142em dzielenie sesji i danych w taki spos\u00f3b, \u017ce gor\u0105ce partycje pozostaj\u0105 tam, gdzie dzia\u0142aj\u0105 \u017c\u0105daj\u0105cy pracownicy i <strong>Czas<\/strong> nie jest tracona w ruchu mi\u0119dzy w\u0119z\u0142ami. W przypadku pami\u0119ci podr\u0119cznych cz\u0119sto u\u017cywam replik zamiast centralnej instancji, dzi\u0119ki czemu czytelnicy trafiaj\u0105 na lokalne kopie w\u0119z\u0142\u00f3w. W Netty, Tokio, libuv lub klientach DB, przypinam p\u0119tle zdarze\u0144 do sta\u0142ych rdzeni i zwracam uwag\u0119 na blisko\u015b\u0107 IRQ, aby zmiany zada\u0144 pozosta\u0142y ograniczone, a <strong>Skrytki<\/strong> lepiej trafia\u0107. Taki uk\u0142ad zmniejsza efekt ping-ponga i sprawia, \u017ce czas reakcji jest bardziej sp\u00f3jny w ci\u0105gu dnia.<\/p>\n\n<p>Jedn\u0105 z niedocenianych d\u017awigni jest <strong>Alokator<\/strong> i opcje \u015brodowiska uruchomieniowego: Alokatory z obs\u0142ug\u0105 NUMA (jemalloc\/tcmalloc) zmniejszaj\u0105 rywalizacj\u0119 mi\u0119dzy w\u0105tkami i utrzymuj\u0105 strony bli\u017cej macierzystych j\u0105der w\u0105tk\u00f3w. W stosach JVM opcje takie jak \u015bwiadomo\u015b\u0107 NUMA i pre-touch pomagaj\u0105 w deterministycznych fazach b\u0142\u0119d\u00f3w; w .NET wyr\u00f3wnuj\u0119 w\u0105tki GC blisko w\u0119z\u0142\u00f3w i zwracam uwag\u0119 na GC serwera, aby wyg\u0142adzi\u0107 czasy zatrzymania. W Go dobieram rozmiar GOMAXPROCS na pul\u0119 w\u0119z\u0142\u00f3w i utrzymuj\u0119 harmonogramy goroutine z dala od rdzeni op\u00f3\u017aniaj\u0105cych, kt\u00f3re dzia\u0142aj\u0105 blisko IRQ.<\/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\/06\/server_performance_desk_7452.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rozs\u0105dna kontrola autobalansowania NUMA<\/h2>\n\n<p>Automatyczne mechanizmy r\u00f3wnowa\u017cenia NUMA j\u0105dra mog\u0105 pom\u00f3c wyg\u0142adzi\u0107 rozproszone obci\u0105\u017cenie, ale zawsze sprawdzam, czy s\u0105 one w stanie spe\u0142ni\u0107 moje wymagania. <strong>Affinity<\/strong> s\u0105 os\u0142abione. W us\u0142ugach o krytycznym op\u00f3\u017anieniu wy\u0142\u0105czam lub d\u0142awi\u0119 automatyczne przenoszenie, je\u015bli wyci\u0105ga ono w\u0105tki z ich pami\u0119ci lokalnej i <strong>Wskaz\u00f3wki<\/strong> generowane. W przypadku zada\u0144 analitycznych lub szeroko zakrojonego przetwarzania wsadowego zwykle pozostawiam w\u0142\u0105czone r\u00f3wnowa\u017cenie, poniewa\u017c mo\u017ce ono zwi\u0119kszy\u0107 przepustowo\u015b\u0107 bez pogarszania interakcji. Praktyczne wprowadzenie do strategii r\u00f3wnowa\u017cenia zapewnia mi dodatkowe punkty wyj\u015bcia: <a href=\"https:\/\/webhosting.de\/pl\/numa-rownowazenie-pamieci-serwera-optymalizacja-sprzetu-numaflux\/\">Zrozumienie r\u00f3wnowa\u017cenia NUMA<\/a> pokazuje, kiedy system automatyczny powinien dzia\u0142a\u0107, a kiedy powinien by\u0107 przypisany r\u0119cznie. Ostatecznie podejmuj\u0119 decyzj\u0119 opart\u0105 na danych dla ka\u017cdej klasy us\u0142ug, zamiast \u015blepo przyjmowa\u0107 globalne ustawienie domy\u015blne. <strong>Cele<\/strong> przegapi\u0107.<\/p>\n\n<p>Gdy balansowanie jest aktywowane, monitoruj\u0119 wska\u017aniki migracji, mniejsze\/wi\u0119ksze szczyty b\u0142\u0119d\u00f3w i kradzie\u017c procesora na w\u0119ze\u0142. Je\u015bli strony s\u0105 cyklicznie przenoszone tam i z powrotem, przeciwdzia\u0142am temu za pomoc\u0105 \u015bci\u015blejszego przypinania, wst\u0119pnego dotykania i w\u0119\u017cszych masek pami\u0119ci. Z drugiej strony, w obci\u0105\u017ceniach z d\u0142ugimi, sekwencyjnymi skanami, r\u00f3wnowa\u017cenie mo\u017ce zharmonizowa\u0107 obci\u0105\u017cenie, pod warunkiem, \u017ce nie ma to wp\u0142ywu na interaktywne \u015bcie\u017cki op\u00f3\u017anie\u0144.<\/p>\n\n<h2>Monitorowanie: mierzenie, por\u00f3wnywanie, podejmowanie decyzji<\/h2>\n\n<p>Bez pomiar\u00f3w strojenie pozostaje w sferze domys\u0142\u00f3w, wi\u0119c \u015bledz\u0119 obci\u0105\u017cenie procesora na rdze\u0144 i w\u0119ze\u0142, wykorzystanie pami\u0119ci na w\u0119ze\u0142 i proporcje wykorzystania pami\u0119ci w poszczeg\u00f3lnych w\u0119z\u0142ach. <strong>Zdalny<\/strong>-dost\u0119p\u00f3w. Dla do\u015bwiadczenia u\u017cytkownika, op\u00f3\u017anienia P95\/P99 licz\u0105 si\u0119 znacznie bardziej ni\u017c warto\u015bci \u015brednie, poniewa\u017c warto\u015bci odstaj\u0105ce charakteryzuj\u0105 wra\u017cenie SLA i <strong>Koszty<\/strong> w g\u00f3r\u0119. Uruchamiam realistyczne profile obci\u0105\u017cenia z zimnymi i ciep\u0142ymi pami\u0119ciami podr\u0119cznymi, poniewa\u017c oba \u015bwiaty pokazuj\u0105 r\u00f3\u017cne w\u0105skie gard\u0142a. Po ka\u017cdej zmianie dokumentuj\u0119 ustawienia, dat\u0119 testu i wyniki, dzi\u0119ki czemu mog\u0119 p\u00f3\u017aniej bezpiecznie cofn\u0105\u0107 modyfikacje. <strong>Wiedza<\/strong> nie jest tracona. Je\u015bli skorelujesz r\u00f3wnie\u017c metryki aplikacji - d\u0142ugo\u015b\u0107 kolejek, ponawianie pr\u00f3b, od\u015bmiecanie - z warto\u015bciami systemowymi, mo\u017cesz szybciej rozpozna\u0107 przyczyn\u0119 i skutek.<\/p>\n\n<p>Praktyczna pomoc w analizie:<\/p>\n<ul>\n  <li>numastat (zwi\u0105zane z systemem i procesem) dla lokalnego vs. <strong>Zdalny<\/strong>-Hit<\/li>\n  <li>\/proc\/interrupts i czas SoftIRQ wed\u0142ug CPU dla dryftu IRQ<\/li>\n  <li>zdarzenia perf i statystyki schedulera dotycz\u0105ce g\u0142\u0119boko\u015bci runqueue, prze\u0142\u0105czania kontekstu, braku LLC itp.<\/li>\n  <li>fio\/iperf\/wrk z pulami pracownik\u00f3w specyficznymi dla w\u0119z\u0142a dla powtarzalnych por\u00f3wna\u0144<\/li>\n<\/ul>\n<p>Ocena jest przeprowadzana dla ka\u017cdego w\u0119z\u0142a: Oczekuj\u0119, \u017ce histogramy op\u00f3\u017anie\u0144 b\u0119d\u0105 blisko siebie. Je\u015bli w\u0119ze\u0142 przesunie si\u0119 w g\u00f3r\u0119, najpierw szukam nieprawid\u0142owo roz\u0142o\u017conego obci\u0105\u017cenia IRQ, dryfu w pami\u0119ci podr\u0119cznej stron lub sterty, kt\u00f3re zosta\u0142y przydzielone do niew\u0142a\u015bciwego w\u0119z\u0142a podczas rozgrzewki.<\/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\/06\/hosting-serverraum-8372.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>NUMA w maszynach wirtualnych i kontenerach<\/h2>\n\n<p>W przypadku wirtualizacji, umieszczenie procesor\u00f3w vCPU i pami\u0119ci vRAM na wsp\u00f3lnym w\u0119\u017ale jest wa\u017cne, aby obci\u0105\u017cenia go\u015bcia nie ulega\u0142y rozproszeniu i <strong>Op\u00f3\u017anienie<\/strong> podci\u0105ga. Wymiaruj\u0119 pami\u0119\u0107 RAM tak, aby mie\u015bci\u0142a si\u0119 w lokalnym w\u0119\u017ale i unikam du\u017cych maszyn wirtualnych, kt\u00f3re rozci\u0105gaj\u0105 si\u0119 na kilka w\u0119z\u0142\u00f3w. <strong>Drift<\/strong> trigger. W przypadku kontener\u00f3w u\u017cywam kontroler\u00f3w cpuset, aby grupy pod\u00f3w dzia\u0142a\u0142y sp\u00f3jnie na jednym w\u0119\u017ale, a pami\u0119\u0107 masowa by\u0142a tworzona lokalnie. Preferuj\u0119 umieszczanie go\u015bci o du\u017cym nat\u0119\u017ceniu operacji we\/wy na w\u0119\u017ale z bezpo\u015brednim po\u0142\u0105czeniem z pami\u0119ci\u0105 masow\u0105, aby \u015bcie\u017cki DMA by\u0142y kr\u00f3tkie i aby <strong>IRQ<\/strong>-redukcja szum\u00f3w. Oznacza to, \u017ce nawet g\u0119ste hosty wirtualizacji pozostaj\u0105 przewidywalne i mog\u0105 realizowa\u0107 wi\u0119cej projekt\u00f3w na tym samym sprz\u0119cie.<\/p>\n\n<p>Zwracam uwag\u0119 na <strong>vNUMA<\/strong>-Ekspozycja: Go\u015b\u0107 powinien widzie\u0107 t\u0119 sam\u0105 struktur\u0119 w\u0119z\u0142\u00f3w, kt\u00f3r\u0105 fizycznie zapewnia hiperwizor. Przypinanie vCPU i wi\u0105zanie vRAM nale\u017c\u0105 do siebie; je\u015bli to mo\u017cliwe, przenosz\u0119 hot-addy podczas okien konserwacji, poniewa\u017c w przeciwnym razie nowe strony ko\u0144cz\u0105 si\u0119 zdalnie. W Kubernetes ustawiam \u201egwarantowany\u201c QoS, \u201estatyczny\u201c mened\u017cer CPU i lokowanie uwzgl\u0119dniaj\u0105ce topologi\u0119, aby pody nie przemieszcza\u0142y si\u0119 mi\u0119dzy w\u0119z\u0142ami. W przypadku SR-IOV\/VF przypisuj\u0119 VF do odpowiedniego w\u0119z\u0142a fizycznego i wi\u0105\u017c\u0119 kolejki IRQ z zestawami CPU pods\u00f3w lub maszyn wirtualnych, kt\u00f3re obs\u0142uguj\u0105.<\/p>\n\n<h2>Ukierunkowane przygotowanie pierwszego dotkni\u0119cia, rozgrzewki i zwa\u0142\u00f3w<\/h2>\n\n<p>Wiele b\u0142\u0119d\u00f3w wydajno\u015bci wyst\u0119puje podczas <strong>Start<\/strong>Sterty rosn\u0105 w fazie rozgrzewki, w kt\u00f3rej pojawiaj\u0105 si\u0119 pierwsze \u017c\u0105dania - cz\u0119sto centralnie na w\u0119\u017ale. Dlatego przeprowadzam kontrolowane rozgrzewki dla ka\u017cdego w\u0119z\u0142a: uruchamiam instancje z ustawion\u0105 mask\u0105 CPU\/pami\u0119ci, wykonuj\u0119 ukierunkowane zapytania wst\u0119pnego \u0142adowania i inicjalizuj\u0119 pami\u0119ci podr\u0119czne r\u00f3wnolegle dla ka\u017cdego w\u0119z\u0142a. W przypadku us\u0142ug JVM aktywuj\u0119 wst\u0119pne dotykanie sterty; w przypadku baz danych segmentuj\u0119 pule bufor\u00f3w w\u0119ze\u0142 po w\u0119\u017ale. Zmniejsza to kolejne migracje stron i zapewnia, \u017ce pierwsze \u017c\u0105dania nie charakteryzuj\u0105 losowo rozk\u0142adu pami\u0119ci.<\/p>\n\n<h2>Strojenie j\u0105dra\/BIOS pod k\u0105tem sta\u0142ych op\u00f3\u017anie\u0144<\/h2>\n\n<p>Pod mask\u0105 reguluj\u0119 moc i polityk\u0119 przerywania:<\/p>\n<ul>\n  <li>Ustawi\u0107 CPU Governor na \u201eperformance\u201c, ograniczy\u0107 g\u0142\u0119bokie stany C, ostro\u017cnie u\u017cywa\u0107 pakiet\u00f3w stan\u00f3w C w celu <strong>Jitter<\/strong> zmniejszy\u0107.<\/li>\n  <li>Nie nale\u017cy ogranicza\u0107 cz\u0119stotliwo\u015bci pami\u0119ci; zr\u00f3wnowa\u017cone profile energetyczne cz\u0119sto minimalizuj\u0105 <strong>Przepustowo\u015b\u0107<\/strong> pod obci\u0105\u017ceniem.<\/li>\n  <li>Unikaj modulacji widma rozproszonego \/ zegara, je\u015bli sp\u00f3jno\u015b\u0107 jest wa\u017cniejsza ni\u017c minimalna oszcz\u0119dno\u015b\u0107 energii.<\/li>\n<\/ul>\n<p>Na poziomie j\u0105dra utrzymuj\u0119 procesory sprz\u0105taj\u0105ce oddzielnie od rdzeni op\u00f3\u017aniaj\u0105cych, minimalizuj\u0119 przerwania timera na gor\u0105cych rdzeniach (nohz_full) i parkuj\u0119 prac\u0119 w tle (zag\u0119szczanie, Kswapd) najlepiej na rdzeniach systemowych w\u0119z\u0142a, kt\u00f3ry nie obs\u0142uguje \u015bcie\u017cek op\u00f3\u017anie\u0144.<\/p>\n\n<h2>Rozwi\u0105zywanie problem\u00f3w i typowe b\u0142\u0119dy<\/h2>\n\n<ul>\n  <li><strong>Objaw<\/strong>Op\u00f3\u017anienie P99 skacze po wdro\u017ceniu. <strong>Przyczyna<\/strong>Heaps\/Cache first-touch na niew\u0142a\u015bciwym w\u0119\u017ale. <strong>Rozwi\u0105zanie<\/strong>Rozgrzewka \/ wst\u0119pne dotkni\u0119cie pod docelowym powinowactwem, a nast\u0119pnie otwarty dystrybutor obci\u0105\u017cenia.<\/li>\n  <li><strong>Objaw<\/strong>Wysoki czas SoftIRQ na \u201eniew\u0142a\u015bciwych\u201c procesorach. <strong>Przyczyna<\/strong>irqbalance roz\u0142o\u017cone na w\u0119z\u0142y. <strong>Rozwi\u0105zanie<\/strong>Naprawiono powinowactwo IRQ, ustawiono zgodno\u015b\u0107 z w\u0119z\u0142ami RPS\/RFS\/XPS.<\/li>\n  <li><strong>Objaw<\/strong>OOM w w\u0119\u017ale, mimo \u017ce systemowa pami\u0119\u0107 RAM jest wolna. <strong>Przyczyna<\/strong>\u015acis\u0142a maska NUMA bez bufora. <strong>Rozwi\u0105zanie<\/strong>Popraw pojemno\u015b\u0107 lub u\u017cyj \u201epreferowanego\u201c, ustal alerty na w\u0119ze\u0142.<\/li>\n  <li><strong>Objaw<\/strong>Nieregularna przepustowo\u015b\u0107 z NVMe. <strong>Przyczyna<\/strong>Nieprawid\u0142owe mapowanie kolejek, wsp\u00f3\u0142dzielone kolejki mi\u0119dzy w\u0119z\u0142ami. <strong>Rozwi\u0105zanie<\/strong>: kolejki blk-mq\/NVMe na w\u0119ze\u0142, przypi\u0119te w\u0105tki we\/wy.<\/li>\n<\/ul>\n\n<h2>Lista kontrolna \u0107wicze\u0144<\/h2>\n\n<ul>\n  <li>Topologia zapisu: W\u0119z\u0142y, rdzenie, pami\u0119\u0107 RAM, urz\u0105dzenia PCIe na gniazdo.<\/li>\n  <li>Narysuj sekcj\u0119 us\u0142ugi: Kt\u00f3re \u015bcie\u017cki s\u0105 <strong>Op\u00f3\u017anienie<\/strong>-Krytyczna, kt\u00f3ra partia?<\/li>\n  <li>Ustaw powinowactwo procesora\/pami\u0119ci dla ka\u017cdej klasy; zanotuj pierwsze dotkni\u0119cie na pocz\u0105tku.<\/li>\n  <li>Powi\u0105zanie IRQ\/kolejek w pobli\u017cu w\u0119z\u0142a; sprawdzenie kolejek RSS\/RPS\/XPS i NVMe.<\/li>\n  <li>Monitorowanie na P95\/P99, zdalny dost\u0119p, kolejka uruchamiania, dystrybucja IRQ.<\/li>\n  <li>Kontroluj autobalansowanie w ukierunkowany spos\u00f3b; odpowiednio wybierz tryb THP\/zone_reclaim_mode.<\/li>\n  <li>Zachowaj sp\u00f3jno\u015b\u0107 vNUMA, vCPU pinning i vRAM binding w maszynach wirtualnych\/kontenerach.<\/li>\n  <li>Testuj iteracyjnie, dokumentuj, wycofuj w przypadku dryftu i dostrajaj.<\/li>\n<\/ul>\n\n<h2>Kr\u00f3tkie podsumowanie i harmonogram tuningu<\/h2>\n\n<p>Przynosi to najwi\u0119kszy zwrot, <strong>W\u0105tki<\/strong> i pami\u0119ci, skracanie \u015bcie\u017cek I\/O i ostro\u017cne ich rozdzielanie. Zaczynam od analizy topologii, planuj\u0119 us\u0142ugi w\u0119ze\u0142 po w\u0119\u017ale, ustawiam powinowactwo procesora i pami\u0119ci, odpowiednio \u0142\u0105cz\u0119 sie\u0107 \/ pami\u0119\u0107 masow\u0105 i monitoruj\u0119 warto\u015bci P95 \/ P99, koncentruj\u0105c si\u0119 na <strong>Zdalny<\/strong>-dost\u0119p\u00f3w. Nast\u0119pnie dostosowuj\u0119 rozmiary puli, maski IRQ i zasady, a\u017c szczyty op\u00f3\u017anie\u0144 ust\u0105pi\u0105, a przepustowo\u015b\u0107 wzro\u015bnie. W przypadku maszyn wirtualnych i kontener\u00f3w sprawdzam rozmieszczenie oddzielnie, poniewa\u017c hiperwizor ma du\u017cy wp\u0142yw i <strong>Granice<\/strong> dzia\u0142aj\u0105 inaczej. Je\u015bli powt\u00f3rzysz i udokumentujesz ten proces, uzyskasz wymiernie wi\u0119ksz\u0105 wydajno\u015b\u0107 z Server NUMA Locality i CPU-Memory Affinity - cz\u0119sto taniej ni\u017c modernizacja dodatkowego sprz\u0119tu w euro.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, w jaki spos\u00f3b Server NUMA Locality i CPU-Memory Affinity optymalizuj\u0105 wydajno\u015b\u0107 hostingu. Przewodnik pokazuje praktyczne dostrajanie wydajno\u015bci dla nowoczesnych serwer\u00f3w.<\/p>","protected":false},"author":1,"featured_media":19858,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-19865","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":"82","_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":"Server NUMA","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":"19858","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/19865","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=19865"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/19865\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/19858"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=19865"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=19865"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=19865"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}