{"id":19625,"date":"2026-06-02T18:18:36","date_gmt":"2026-06-02T16:18:36","guid":{"rendered":"https:\/\/webhosting.de\/server-process-affinity-numa-awareness-hosting-ressourcentuning\/"},"modified":"2026-06-02T18:18:36","modified_gmt":"2026-06-02T16:18:36","slug":"server-process-affinity-numa-awareness-hosting-ressourcentuning","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/server-process-affinity-numa-awareness-hosting-ressourcentuning\/","title":{"rendered":"Optymalizacja powinowactwa proces\u00f3w serwera i \u015bwiadomo\u015b\u0107 NUMA w hostingu"},"content":{"rendered":"<p>Zwi\u0119kszam wydajno\u015b\u0107 serwera poprzez <strong>Przynale\u017cno\u015b\u0107 do procesu<\/strong> i \u015bwiadomo\u015b\u0107 NUMA w ukierunkowany spos\u00f3b, a tym samym optymalnie organizowa\u0107 w\u0105tki, rdzenie i pami\u0119\u0107 wzgl\u0119dem siebie. Pozwala mi to zmniejszy\u0107 op\u00f3\u017anienia, zwi\u0119kszy\u0107 przepustowo\u015b\u0107 i osi\u0105gn\u0105\u0107 sp\u00f3jne czasy odpowiedzi w \u015brodowiskach hostingowych z wieloma aplikacjami.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Zanim wprowadz\u0119 jakiekolwiek konkretne ustawienia, wyja\u015bniam moje cele, wzorce obci\u0105\u017cenia i istniej\u0105c\u0105 topologi\u0119 sprz\u0119tow\u0105. Analizuj\u0119, kt\u00f3re w\u0105tki wymagaj\u0105 szczeg\u00f3lnie du\u017co pami\u0119ci i kt\u00f3re procesy wymagaj\u0105 kr\u00f3tkich czas\u00f3w reakcji. Rozwa\u017cam, ile rdzeni jest dost\u0119pnych na w\u0119ze\u0142 NUMA i ile jest lokalnej pami\u0119ci RAM. Planuj\u0119 \u0142\u0105czy\u0107 us\u0142ugi w\u0119ze\u0142 po w\u0119\u017ale, tak aby <strong>Lokalizacja procesora<\/strong> jest utrzymywana. Mierz\u0119 ka\u017cd\u0105 zmian\u0119 za pomoc\u0105 test\u00f3w por\u00f3wnawczych i monitorowania, aby unikn\u0105\u0107 fa\u0142szywych za\u0142o\u017ce\u0144.<\/p>\n<ul>\n  <li><strong>Affinity<\/strong>Powi\u0105zanie proces\u00f3w z grupami podstawowymi<\/li>\n  <li><strong>NUMA<\/strong>Zachowaj pami\u0119\u0107 lokaln\u0105<\/li>\n  <li><strong>Topologia<\/strong>Skalowanie w\u0119ze\u0142 po w\u0119\u017ale<\/li>\n  <li><strong>Monitoring<\/strong>Uczy\u0144 zdalny dost\u0119p widocznym<\/li>\n  <li><strong>Hosting<\/strong>Kontrola rozmieszczenia hiperwizora<\/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-optimierung-8392.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Co oznacza Process Affinity na serwerze?<\/h2>\n\n<p>Z <strong>Przynale\u017cno\u015b\u0107 do procesu<\/strong> Okre\u015blam, na kt\u00f3rych rdzeniach procesora dzia\u0142a proces lub w\u0105tek, zamiast pozwala\u0107 systemowi operacyjnemu swobodnie decydowa\u0107. Dzi\u0119ki temu zawarto\u015b\u0107 pami\u0119ci podr\u0119cznej jest sp\u00f3jna, co zmniejsza liczb\u0119 pomini\u0119\u0107 pami\u0119ci podr\u0119cznej i prze\u0142\u0105cze\u0144 kontekstu. Przypinam w\u0105tki tak, aby efektywnie wykorzystywa\u0142y swoje pami\u0119ci podr\u0119czne L1\/L2\/L3 i nie przeskakiwa\u0142y mi\u0119dzy rdzeniami. Poprawia to przewidywalno\u015b\u0107 op\u00f3\u017anie\u0144 przy du\u017cym obci\u0105\u017ceniu i zapewnia r\u00f3wnomierne wykorzystanie zarezerwowanych rdzeni. Praktycznym wprowadzeniem jest ten przewodnik po <a href=\"https:\/\/webhosting.de\/pl\/serwer-cpu-affinity-hosting-optymalizacja-kernelaffinity\/\">Zasobno\u015b\u0107 procesora w hostingu<\/a>, poniewa\u017c u\u017cywam go do por\u00f3wnywania typowych wariant\u00f3w przypinania.<\/p>\n\n<h2>Zrozumienie NUMA: dost\u0119p lokalny i zdalny<\/h2>\n\n<p><strong>NUMA<\/strong> dzieli pami\u0119\u0107 robocz\u0105 na w\u0119z\u0142y, z kt\u00f3rych ka\u017cdy jest \u015bci\u015ble powi\u0105zany z okre\u015blonymi gniazdami procesora. W\u0105tek uzyskuje dost\u0119p do lokalnej pami\u0119ci RAM szybciej ni\u017c do pami\u0119ci zdalnej na innych w\u0119z\u0142ach. Ta asymetria ma znacz\u0105cy wp\u0142yw na rzeczywiste obci\u0105\u017cenia, zw\u0142aszcza w przypadku wielu rdzeni i du\u017cej ilo\u015bci pami\u0119ci RAM. Dlatego przypisuj\u0119 w\u0105tki i ich dost\u0119p do pami\u0119ci do wsp\u00f3lnego w\u0119z\u0142a, aby zmniejszy\u0107 op\u00f3\u017anienia i zwi\u0119kszy\u0107 przepustowo\u015b\u0107. Je\u015bli chcesz zag\u0142\u0119bi\u0107 si\u0119 w topologi\u0119, zapoznaj si\u0119 z praktycznymi wskaz\u00f3wkami na stronie <a href=\"https:\/\/webhosting.de\/pl\/numa-nodes-hosting-serwerow-duze-systemy-serverboost\/\">W\u0119z\u0142y NUMA w serwerze<\/a> a nast\u0119pnie mierzy efekty w codziennym \u017cyciu.<\/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_optimierung_meeting_5492.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>\u015awiadomo\u015b\u0107 NUMA w systemie operacyjnym i aplikacji<\/h2>\n\n<p>Aktywuj\u0119 <strong>\u015awiadomo\u015b\u0107 NUMA<\/strong> w systemie operacyjnym, hiperwizorze i aplikacji, aby pami\u0119\u0107 by\u0142a przydzielana lokalnie. Tam, gdzie to mo\u017cliwe, utrzymuj\u0119 w\u0105tki instancji na rdzeniach tego samego w\u0119z\u0142a NUMA, zamiast dystrybuowa\u0107 je mi\u0119dzy w\u0119z\u0142ami. Wol\u0119 tworzy\u0107 du\u017ce sterty lub bufory w lokalnej pami\u0119ci RAM, aby drogie zdalne dost\u0119py pozosta\u0142y rzadkie. Je\u015bli aplikacja ma kilku pracownik\u00f3w, uk\u0142adam ich w\u0119ze\u0142 po w\u0119\u017ale w pule, aby unikn\u0105\u0107 zak\u0142\u00f3ce\u0144. Tworzy to wyra\u017an\u0105 alokacj\u0119 procesora i pami\u0119ci, co zauwa\u017calnie skraca czas odpowiedzi.<\/p>\n\n<h2>Interakcja mi\u0119dzy Affinity i NUMA<\/h2>\n\n<p><strong>Affinity<\/strong> bez planowania NUMA marnuje potencja\u0142, je\u015bli pami\u0119\u0107 znajduje si\u0119 na odleg\u0142ych w\u0119z\u0142ach. Podobnie, obserwacja NUMA jest ma\u0142o przydatna, je\u015bli planowanie cz\u0119sto przenosi w\u0105tki. W zwi\u0105zku z tym wi\u0105\u017c\u0119 w\u0105tki z rdzeniami okre\u015blonego w\u0119z\u0142a i zapewniam lokaln\u0105 alokacj\u0119 pami\u0119ci r\u00f3wnolegle. Je\u015bli skaluj\u0119 aplikacj\u0119, najpierw zape\u0142niam w\u0119ze\u0142 przed w\u0142\u0105czeniem kolejnych w\u0119z\u0142\u00f3w. Takie sprz\u0119\u017cenie polityki przypinania rdzeni i pami\u0119ci generuje sta\u0142e profile op\u00f3\u017anie\u0144 pod obci\u0105\u017ceniem.<\/p>\n\n<h2>Strojenie sprz\u0119tu i oprogramowania uk\u0142adowego (UEFI\/BIOS)<\/h2>\n\n<p>Aby Affinity i NUMA dzia\u0142a\u0142y, ustawi\u0142em baz\u0119 w oprogramowaniu uk\u0142adowym na stabiln\u0105. Preferuj\u0119 sta\u0142e tryby wydajno\u015bci zamiast agresywnych opcji oszcz\u0119dzania energii, aby zminimalizowa\u0107 wahania zegara i op\u00f3\u017anie\u0144. Wa\u017cne punkty, kt\u00f3re sprawdzam:<\/p>\n<ul>\n  <li>Profil wydajno\u015bci: maksymalna moc\/wydajno\u015b\u0107 zamiast zr\u00f3wnowa\u017conej; ograniczenie niskich stan\u00f3w C, je\u015bli op\u00f3\u017anienia s\u0105 bardziej krytyczne ni\u017c wydajno\u015b\u0107.<\/li>\n  <li>Strategia Turbo\/boost: Deterministyczny boost na \u017c\u0105danie w celu unikni\u0119cia waha\u0144 liczby rdzeni P.<\/li>\n  <li>SMT\/Hyper-Threading: Testowanie w zale\u017cno\u015bci od obci\u0105\u017cenia - w przypadku trudnych um\u00f3w SLA dotycz\u0105cych op\u00f3\u017anie\u0144 cz\u0119sto przypinam krytyczne w\u0105tki do fizycznych rdzeni i oddzielam rodze\u0144stwo SMT.<\/li>\n  <li>Przeplatanie pami\u0119ci: Wy\u0142\u0105czone dla optymalizacji NUMA, aby w\u0119z\u0142y pozosta\u0142y wyra\u017anie oddzielone.<\/li>\n  <li>Kana\u0142y pami\u0119ci: Symetryczna konfiguracja gniazd DIMM na w\u0119ze\u0142 dla maksymalnej przepustowo\u015bci.<\/li>\n<\/ul>\n\n<h2>\u015acie\u017cka konfiguracji: Analiza do przypi\u0119cia<\/h2>\n\n<p>Zaczynam od nagrania topologii, zazwyczaj od <strong>lscpu<\/strong>, numactl -hardware lub hwloc. Nast\u0119pnie definiuj\u0119 wymagan\u0105 liczb\u0119 rdzeni dla ka\u017cdej us\u0142ugi i przypisuj\u0119 je do w\u0119z\u0142a. Wdra\u017cam przypinanie za pomoc\u0105 zestawu zada\u0144 lub opcji systemd, aby przypisanie pozosta\u0142o powtarzalne. Podczas testu dostosowuj\u0119 rozmiar grup rdzeni, a\u017c op\u00f3\u017anienie i przepustowo\u015b\u0107 s\u0105 w dobrym stosunku. Upewniam si\u0119, \u017ce \u017cadne us\u0142ugi intensywnie korzystaj\u0105ce z procesora nie wsp\u00f3\u0142dziel\u0105 tej samej puli rdzeni, a tym samym nie wypieraj\u0105 nawzajem swoich pami\u0119ci podr\u0119cznych.<\/p>\n\n<p>W Linuksie lubi\u0119 deklaratywnie ustawia\u0107 powinowactwo i polityk\u0119 pami\u0119ci poprzez cgroups (v2): Definiuj\u0119 cpuset.cpus i cpuset.mems w zale\u017cno\u015bci od w\u0119z\u0142a i uruchamiam us\u0142ugi z parametrami systemd, takimi jak CPUAffinity= i NUMAMask=. Utrzymuj\u0119 oddzielne pule dla proces\u00f3w wsadowych lub drugorz\u0119dnych, aby nie dosta\u0142y si\u0119 one do rdzeni warstwy krytycznej pod wzgl\u0119dem op\u00f3\u017anie\u0144. W przypadku powtarzaj\u0105cych si\u0119 zada\u0144 planuj\u0119 dok\u0142adne okna startowe, w kt\u00f3rych rdzenie s\u0105 wolne.<\/p>\n\n<h2>Powinowactwo przerwa\u0144 i wej\u015b\u0107\/wyj\u015b\u0107<\/h2>\n\n<p>Nie tylko w\u0105tki aplikacji wymagaj\u0105 lokalno\u015bci - r\u00f3wnie\u017c <strong>Przerwania<\/strong> i \u015bcie\u017cki I\/O, kt\u00f3re organizuj\u0119 w pobli\u017cu w\u0119z\u0142a:<\/p>\n<ul>\n  <li>Sie\u0107: Powi\u0105\u017c kolejki RX\/TX karty sieciowej z rdzeniami tego samego w\u0119z\u0142a NUMA (skonfiguruj RSS\/XPS), aby przetwarzanie pakiet\u00f3w i w\u0105tki aplikacji wsp\u00f3\u0142dzieli\u0142y pami\u0119\u0107 podr\u0119czn\u0105 i lokalno\u015b\u0107 pami\u0119ci RAM.<\/li>\n  <li>Pami\u0119\u0107 masowa: przypnij kolejki NVMe i w\u0105tki IO na w\u0119ze\u0142; sprawd\u017a rozk\u0142ad kolejek dla blk-mq, aby gor\u0105ce woluminy nie krzy\u017cowa\u0142y si\u0119 z w\u0119z\u0142ami.<\/li>\n  <li>irqbalance: Skonfiguruj specjalnie lub wy\u0142\u0105cz dla krytycznych kolejek i ustaw r\u0119cznie za pomoc\u0105 smp_affinity.<\/li>\n<\/ul>\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-optimize-numa-awareness-2381.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Ukierunkowane wykorzystanie funkcji systemu operacyjnego<\/h2>\n\n<p>Celowo u\u017cywam funkcji j\u0105dra dla \u015bcis\u0142ych profili op\u00f3\u017anie\u0144:<\/p>\n<ul>\n  <li>isolcpus\/nohz_full\/rcu_nocbs: oddziela rdzenie od og\u00f3lnego harmonogramu, minimalizuje obci\u0105\u017cenie tickiem i przenosi wywo\u0142ania zwrotne RCU - idealne dla w\u0105tk\u00f3w o wysokiej wydajno\u015bci.<\/li>\n  <li>Zasady harmonogramu: U\u017cywaj SCHED_FIFO\/RR oszcz\u0119dnie dla komponent\u00f3w czasu rzeczywistego; w przeciwnym razie u\u017cywaj CFS z bliskim powinowactwem.<\/li>\n  <li>Automatyczne r\u00f3wnowa\u017cenie NUMA: cz\u0119sto wy\u0142\u0105czane w przypadku obci\u0105\u017ce\u0144 \u015bci\u015ble przypi\u0119tych, aby j\u0105dro nie przesuwa\u0142o pami\u0119ci.<\/li>\n  <li>Transparent Huge Pages: Przewa\u017cnie ustawione na madvise i u\u017cywaj\u0105ce jawnych Huge Pages dla naprawd\u0119 du\u017cych stert, aby zmniejszy\u0107 liczb\u0119 pomini\u0119\u0107 TLB.<\/li>\n<\/ul>\n\n<h2>Polityka pami\u0119ci masowej uwzgl\u0119dniaj\u0105ca NUMA<\/h2>\n\n<p>Z <strong>numactl<\/strong> Wymuszam preferowan\u0105 alokacj\u0119 pami\u0119ci lokalnej lub korzystam z zasad, takich jak preferowane i interleave. Tam, gdzie to mo\u017cliwe, utrzymuj\u0119 du\u017ce struktury w pami\u0119ci, takie jak pule bufor\u00f3w baz danych w obr\u0119bie w\u0119z\u0142a. Je\u015bli zapotrzebowanie na pami\u0119\u0107 wzrasta, obserwuj\u0119 wzrost zdalnych dost\u0119p\u00f3w i reaguj\u0119 poprzez segmentacj\u0119 lub sharding. Praktyczne spostrze\u017cenia na temat strojenia dostarczaj\u0105 mi wskaz\u00f3wek dotycz\u0105cych <a href=\"https:\/\/webhosting.de\/pl\/numa-rownowazenie-pamieci-serwera-optymalizacja-sprzetu-numaflux\/\">R\u00f3wnowa\u017cenie NUMA<\/a>, co nast\u0119pnie potwierdzam testami obci\u0105\u017ceniowymi. Dzi\u0119ki temu czas dost\u0119pu do pami\u0119ci jest niski i przewidywalny.<\/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_optimierung_tech_office_4821.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Techniki przechowywania danych: Ogromne strony, sterty i zbieranie \u015bmieci<\/h2>\n\n<p>Zarz\u0105dzanie pami\u0119ci\u0105 cz\u0119sto determinuje op\u00f3\u017anienia P99. U\u017cywam ogromnych stron, gdzie dominuj\u0105 du\u017ce, d\u0142ugo \u017cyj\u0105ce sterty (np. bufory DB, sterty JVM). Zmniejsza to liczb\u0119 pomini\u0119\u0107 TLB i spacer\u00f3w po stronach. W przypadku obci\u0105\u017ce\u0144 JVM zwracam uwag\u0119 na rozmiar sterty na w\u0119ze\u0142 i aktywuj\u0119 optymalizacj\u0119 NUMA, aby w\u0105tki GC i sterty pozosta\u0142y lokalne. W przypadku .NET i Go planuj\u0119 GC i pule goroutine, aby nie wype\u0142nia\u0142y rdzeni mi\u0119dzy w\u0119z\u0142ami w niekontrolowany spos\u00f3b. W bazach danych dziel\u0119 du\u017ce pule bufor\u00f3w na segmenty lokalne dla w\u0119z\u0142\u00f3w lub uruchamiam wiele mniejszych instancji na w\u0119ze\u0142.<\/p>\n\n<h2>Praktyczny hosting: typowe obci\u0105\u017cenia<\/h2>\n\n<p>Bazy danych, pami\u0119ci podr\u0119czne i du\u017ce serwery aplikacji reaguj\u0105 wra\u017cliwie na <strong>Lokalizacja procesora<\/strong> i op\u00f3\u017anienia pami\u0119ci. Rozproszona maszyna wirtualna na kilku w\u0119z\u0142ach NUMA zwi\u0119ksza \u015bcie\u017cki obliczeniowe i pami\u0119ciowe oraz spowalnia zapytania lub wywo\u0142ania API. Dlatego umieszczam maszyny wirtualne tak, aby ich jednostki vCPU by\u0142y przypisane do fizycznego w\u0119z\u0142a, a pami\u0119\u0107 pozostawa\u0142a tam. Pule kontener\u00f3w otrzymuj\u0105 sp\u00f3jne zestawy CPU, dzi\u0119ki czemu pracownicy nie przeskakuj\u0105 mi\u0119dzy w\u0119z\u0142ami. Ta ostro\u017cno\u015b\u0107 op\u0142aca si\u0119 szczeg\u00f3lnie w przypadku handlu elektronicznego i us\u0142ug API o wysokiej r\u00f3wnoleg\u0142o\u015bci.<\/p>\n\n<h2>Drobnoziarniste strategie aplikacji<\/h2>\n\n<p>Na poziomie aplikacji od\u0142\u0105czam w\u0119z\u0142y, aby zachowa\u0107 lokalno\u015b\u0107:<\/p>\n<ul>\n  <li>Pule robocze: Jedna pula na w\u0119ze\u0142 NUMA, ka\u017cda z lokaln\u0105 kolejk\u0105 w celu unikni\u0119cia komunikacji mi\u0119dzy w\u0119z\u0142ami.<\/li>\n  <li>Sharding: Utrzymuj dane i sesje w w\u0119z\u0142ach lokalnych; wybierz hashowanie, aby gor\u0105ce fragmenty nie przekracza\u0142y wielu w\u0119z\u0142\u00f3w.<\/li>\n  <li>Pami\u0119ci podr\u0119czne: Replikowane zamiast scentralizowanych; czytelnicy wol\u0105 kopie lokalne w w\u0119z\u0142ach.<\/li>\n  <li>Przypinanie w\u0105tk\u00f3w w \u015brodowiskach uruchomieniowych: W przypadku stos\u00f3w sieciowych (np. Netty) i klient\u00f3w DB, wi\u0105\u017c pracownik\u00f3w ze sta\u0142ymi rdzeniami, obserwuj blisko\u015b\u0107 IRQ.<\/li>\n<\/ul>\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\/devdesk_serveroptimierung_4832.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitorowanie i rozwi\u0105zywanie problem\u00f3w<\/h2>\n\n<p>Rozs\u0105dne monitorowanie pokazuje wi\u0119cej ni\u017c og\u00f3lne wykorzystanie mocy, poniewa\u017c <strong>NUMA<\/strong>-Efekty s\u0105 ukryte w warto\u015bciach szczeg\u00f3\u0142owych w\u0119z\u0142a. Monitoruj\u0119 obci\u0105\u017cenie procesora na rdze\u0144 i w\u0119ze\u0142, wykorzystanie pami\u0119ci na w\u0119ze\u0142 i szybko\u015b\u0107 zdalnego dost\u0119pu. Je\u015bli poszczeg\u00f3lne rdzenie s\u0105 przepe\u0142nione, podczas gdy inne pozostaj\u0105 nieu\u017cywane, oznacza to s\u0142ab\u0105 konfiguracj\u0119 powinowactwa. Je\u015bli pami\u0119\u0107 RAM jednego w\u0119z\u0142a jest pe\u0142na, podczas gdy inny ma rezerw\u0119, musz\u0119 dostosowa\u0107 polityk\u0119 pami\u0119ci lub rozmieszczenie. U\u017cywam tych sygna\u0142\u00f3w do obiektywnego dokumentowania w\u0105skich garde\u0142 i wyprowadzania kolejnych zmian.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Metryki<\/th>\n      <th>Uwaga\/Objaw<\/th>\n      <th>Typowa przyczyna<\/th>\n      <th>Szybkie dzia\u0142anie<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Procesor na rdze\u0144<\/strong><\/td>\n      <td>Niekt\u00f3re rdzenie s\u0105 stale wysokie<\/td>\n      <td>Nieprawid\u0142owe przypi\u0119cie<\/td>\n      <td>Redystrybucja grup podstawowych<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Pami\u0119\u0107 RAM na w\u0119ze\u0142<\/strong><\/td>\n      <td>W\u0119ze\u0142 w limicie<\/td>\n      <td>Pami\u0119\u0107 nie lokalna<\/td>\n      <td>set numactl preferred<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Stawka zdalna<\/strong><\/td>\n      <td>Wysoki dost\u0119p zdalny<\/td>\n      <td>Maszyna wirtualna\/kontener za po\u015brednictwem w\u0119z\u0142\u00f3w<\/td>\n      <td>Zestaw vCPU\/CPU w pakiecie<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Prze\u0142\u0105czniki kontekstowe<\/strong><\/td>\n      <td>Nieregularne op\u00f3\u017anienia<\/td>\n      <td>W\u0119dr\u00f3wka w\u0105tku<\/td>\n      <td>Pin Affinity twardszy<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Anty-wzorce i typowe przeszkody<\/h2>\n\n<p>Unikam globalnych limit\u00f3w CPU niezale\u017cnie od NUMA, poniewa\u017c alokuj\u0105 one rdzenie mi\u0119dzy w\u0119z\u0142ami. R\u00f3wnie\u017c \u201ejedna du\u017ca maszyna wirtualna\u201c ze zbyt du\u017c\u0105 liczb\u0105 vCPU rzadko skaluje si\u0119 liniowo - wiele instancji lokalnych w\u0119z\u0142\u00f3w jest lepszych. Przezroczyste ogromne strony w trybie always czasami powoduj\u0105 szczyty b\u0142\u0119d\u00f3w stron; madvise plus ukierunkowane ogromne strony s\u0105 bardziej przewidywalne. irqbalance dzia\u0142aj\u0105cy w spos\u00f3b niekontrolowany os\u0142abia lokalno\u015b\u0107 we \/ wy. I: Zbyt mocne przypinanie bez rdzeni buforuj\u0105cych mo\u017ce utrudni\u0107 konserwacj\u0119 i obci\u0105\u017cenie boczne - zawsze planuj\u0119 kilka wolnych rdzeni na w\u0119ze\u0142.<\/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\/serverprozessoptimierung-4812.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Mierzalno\u015b\u0107 efekt\u00f3w wydajno\u015bci<\/h2>\n\n<p>Mierz\u0119 efekty <strong>Affinity<\/strong> i NUMA zmieniaj\u0105 si\u0119 zawsze z powtarzalnymi benchmarkami. Por\u00f3wnania \"przed\" i \"po\" z identycznym zestawem danych w przejrzysty spos\u00f3b pokazuj\u0105 ulepszenia. \u0141\u0105cz\u0119 testy syntetyczne z realistycznymi profilami obci\u0105\u017cenia, aby optymalizacje przynosi\u0142y efekty w codziennym u\u017cytkowaniu. Kluczowe wyniki, takie jak op\u00f3\u017anienia P95 i P99, s\u0105 cz\u0119sto bardziej znacz\u0105ce ni\u017c warto\u015bci \u015brednie. Pozwala mi to weryfikowa\u0107 decyzje i rozpoznawa\u0107 efekty uboczne na wczesnym etapie.<\/p>\n\n<h2>Wirtualizacja i kontenery<\/h2>\n\n<p>W konfiguracjach hiperwizora u\u017cywam <strong>vNUMA<\/strong>, aby maszyna wirtualna-go\u015b\u0107 rozumia\u0142a fizyczn\u0105 topologi\u0119. Pakuj\u0119 vCPU maszyny wirtualnej do fizycznie pasuj\u0105cego w\u0119z\u0142a, aby zminimalizowa\u0107 zdalny dost\u0119p. W przypadku kontener\u00f3w definiuj\u0119 \u017c\u0105dania i limity procesora, aby zestawy procesor\u00f3w pozosta\u0142y sp\u00f3jne, a mened\u017cer topologii przestrzega\u0142 lokalizacji w\u0119z\u0142a. Du\u017ce maszyny wirtualne z wieloma jednostkami vCPU rozmieszczam w w\u0119z\u0142ach tylko wtedy, gdy aplikacja pozwala na wewn\u0119trzn\u0105 segmentacj\u0119. Ka\u017cde rozmieszczenie oceniam na podstawie op\u00f3\u017anie\u0144, przepustowo\u015bci i wykorzystania na w\u0119ze\u0142.<\/p>\n\n<h2>Orkiestracja: Cgroups, Kubernetes i inne.<\/h2>\n\n<p>W kontenerach polegam na klasach gwarantowanych lub burstable ze stabilnymi zestawami CPU i przydzia\u0142em mems. Mened\u017cer topologii w trybie \u201esingle-numa-node\u201c pomaga utrzyma\u0107 lokalno\u015b\u0107 w\u0119z\u0142\u00f3w. W przypadku d\u0142ugo dzia\u0142aj\u0105cych cz\u0119\u015bci czasu rzeczywistego u\u017cywam mened\u017cera CPU w trybie \u201estatycznym\u201c, aby zachowa\u0107 wy\u0142\u0105czno\u015b\u0107 rdzeni. Planuj\u0119 HugePages jako \u017c\u0105dania\/limity i grupuj\u0119 pody wed\u0142ug roli obci\u0105\u017cenia, aby w\u0119z\u0142y nie by\u0142y heterogenicznie przeci\u0105\u017cone. Wa\u017cne: nale\u017cy prawid\u0142owo utrzymywa\u0107 etykiety w\u0119z\u0142\u00f3w, aby regu\u0142y umieszczania nie narusza\u0142y lokalno\u015bci w spos\u00f3b niezamierzony.<\/p>\n\n<h2>Rola dostawcy us\u0142ug hostingowych<\/h2>\n\n<p>Dobry dostawca zapewnia przejrzysto\u015b\u0107 <strong>Topologia NUMA<\/strong>, opcje powinowactwa i wgl\u0105d w metryki w\u0119z\u0142\u00f3w. Upewniam si\u0119, \u017ce hiperwizor i orkiestracja powa\u017cnie traktuj\u0105 \u015bwiadomo\u015b\u0107 NUMA i \u017ce rozmieszczenie vCPU pozostaje pod kontrol\u0105. Wa\u017cne jest r\u00f3wnie\u017c monitorowanie, kt\u00f3re zapewnia limity procesora, pami\u0119ci RAM i zdalne na w\u0119ze\u0142. Pozwala mi to samodzielnie decydowa\u0107 o tym, jak rygorystycznie przypinam i jak ustawiam zasady dotycz\u0105ce pami\u0119ci. Taka kontrola sprawia, \u017ce wymagaj\u0105ce obci\u0105\u017cenia s\u0105 niezawodne i przewidywalne.<\/p>\n\n<h2>Model operacyjny: bezpieczne wprowadzanie zmian<\/h2>\n\n<p>Zasady pinowania i NUMA wprowadzam iteracyjnie: najpierw na w\u0119\u017ale, z jasno okre\u015blonymi krokami wycofywania. Dokumentuj\u0119 topologi\u0119, przypisania i parametry j\u0105dra, aby zapewni\u0107 powtarzalno\u015b\u0107. W przypadku wyda\u0144 u\u017cywam ruchu kanaryjskiego, monitoruj\u0119 P95\/P99, prze\u0142\u0105czniki kontekstowe i stawki zdalne przez co najmniej jedn\u0105 faz\u0119 pe\u0142nego obci\u0105\u017cenia, a dopiero potem wdra\u017cam je szerzej. Dzi\u0119ki temu ulepszenia s\u0105 stabilne, a ryzyko mo\u017cliwe do kontrolowania.<\/p>\n\n<h2>Najlepsze praktyki, kompaktowo stosowane<\/h2>\n\n<p>Ka\u017cd\u0105 optymalizacj\u0119 rozpoczynam od dok\u0142adnego <strong>Analiza topologii<\/strong> i udokumentowa\u0107 przypisanie rdzenia i w\u0119z\u0142a. Nast\u0119pnie dziel\u0119 obci\u0105\u017cenia tak, aby baza danych, pami\u0119\u0107 podr\u0119czna i serwer aplikacji otrzyma\u0142y oddzielne zasoby w\u0119z\u0142a. Przypinam krytyczne procesy i nadaj\u0119 priorytet pami\u0119ci lokalnej przed dostrojeniem rozmiaru grupy. Ka\u017cdemu dostrojeniu towarzysz\u0105 testy por\u00f3wnawcze i metryki w\u0119z\u0142\u00f3w, aby wyra\u017anie zobaczy\u0107 efekty. W przypadku wzrostu planuj\u0119 w\u0119ze\u0142 po w\u0119\u017ale i utrzymuj\u0119 szczup\u0142e instancje zamiast wysadza\u0107 monolityczn\u0105 gigantyczn\u0105 instancj\u0119.<\/p>\n\n<h2>Podsumowanie i kolejne kroki<\/h2>\n\n<p>Z ukierunkowanymi <strong>Przynale\u017cno\u015b\u0107 do procesu<\/strong> i prawdziw\u0105 \u015bwiadomo\u015b\u0107 NUMA, znacznie przyspieszam obci\u0105\u017cenia na tym samym sprz\u0119cie. Wyra\u017ane rozmieszczenie, lokalna alokacja pami\u0119ci i sp\u00f3jne pomiary wynik\u00f3w maj\u0105 kluczowe znaczenie. \u0141\u0105czenie maszyn wirtualnych i kontener\u00f3w blisko w\u0119z\u0142a zmniejsza op\u00f3\u017anienia i zwi\u0119ksza przepustowo\u015b\u0107. Zalecam rozpocz\u0119cie projektu pilota\u017cowego na ho\u015bcie, przetestowanie powinowactwa i polityki pami\u0119ci oraz przyj\u0119cie najlepszych ustawie\u0144. W ten spos\u00f3b wydajno\u015b\u0107 ro\u015bnie krok po kroku bez konieczno\u015bci zakupu nowych serwer\u00f3w.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak zmaksymalizowa\u0107 wydajno\u015b\u0107 hostingu i jak najlepiej wykorzysta\u0107 lokalno\u015b\u0107 procesor\u00f3w dzi\u0119ki Server Process Affinity i \u015bwiadomo\u015bci NUMA.<\/p>","protected":false},"author":1,"featured_media":19618,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-19625","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":"70","_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":"Process Affinity","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":"19618","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/19625","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=19625"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/19625\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/19618"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=19625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=19625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=19625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}