{"id":18689,"date":"2026-04-03T18:19:44","date_gmt":"2026-04-03T16:19:44","guid":{"rendered":"https:\/\/webhosting.de\/server-cpu-affinity-hosting-optimierung-kernelaffinity\/"},"modified":"2026-04-03T18:19:44","modified_gmt":"2026-04-03T16:19:44","slug":"serwer-cpu-affinity-hosting-optymalizacja-kernelaffinity","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/server-cpu-affinity-hosting-optimierung-kernelaffinity\/","title":{"rendered":"Server CPU Affinity: Optymalizacja dzia\u0142ania hostingu"},"content":{"rendered":"<p><strong>Przynale\u017cno\u015b\u0107 procesora serwera<\/strong> w szczeg\u00f3lno\u015bci przypisuje procesy do sta\u0142ych rdzeni procesora, a tym samym ogranicza migracje, prze\u0142\u0105czanie kontekstu i zimne pami\u0119ci podr\u0119czne w stosach hostingowych. Pokazuj\u0119, w jaki spos\u00f3b to przyporz\u0105dkowanie tworzy przewidywalne op\u00f3\u017anienia, wy\u017csze wska\u017aniki trafie\u0144 w pami\u0119ci podr\u0119cznej i sta\u0142\u0105 przepustowo\u015b\u0107 w serwerach WWW, PHP-FPM, bazach danych, maszynach wirtualnych i kontenerach.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<p>Poni\u017csze podstawowe aspekty stanowi\u0105 wytyczne dla skutecznego wdro\u017cenia Affinity w hostingu.<\/p>\n<ul>\n  <li><strong>Blisko\u015b\u0107 pami\u0119ci podr\u0119cznej<\/strong> minimalizuje op\u00f3\u017anienia i zwi\u0119ksza wydajno\u015b\u0107 wielow\u0105tkowych obci\u0105\u017ce\u0144.<\/li>\n  <li><strong>Mo\u017cliwo\u015b\u0107 planowania<\/strong> poprzez przypinanie: mniej warto\u015bci odstaj\u0105cych na p99 i sta\u0142y czas reakcji.<\/li>\n  <li><strong>\u015awiadomo\u015b\u0107 NUMA<\/strong> Zmniejsza ilo\u015b\u0107 pami\u0119ci i procesora, ogranicza kosztowny dost\u0119p zdalny.<\/li>\n  <li><strong>Cgroups<\/strong> uzupe\u0142nienie Affinity o kwoty, priorytety i sprawiedliw\u0105 dystrybucj\u0119.<\/li>\n  <li><strong>Monitoring<\/strong> z perf\/Prometheus odkrywa migracje i chybienia.<\/li>\n<\/ul>\n\n<h2>Co oznacza CPU Affinity w hostingu?<\/h2>\n\n<p>Wi\u0105zanie powinowactwa <strong>W\u0105tki<\/strong> do sta\u0142ych rdzeni, dzi\u0119ki czemu scheduler nie rozrzuca ich po ca\u0142ym gnie\u017adzie. Dzi\u0119ki temu pami\u0119ci podr\u0119czne L1\/L2\/L3 pozostaj\u0105 ciep\u0142e, co jest szczeg\u00f3lnie wa\u017cne w przypadku krytycznych op\u00f3\u017anie\u0144. <strong>Zapytania internetowe<\/strong> liczy. Linux CFS domy\u015blnie balansuje dynamicznie, ale generuje zb\u0119dne migracje w gor\u0105cych fazach. Specjalnie ograniczam te migracje zamiast ca\u0142kowicie spowalnia\u0107 harmonogram. Bardziej szczeg\u00f3\u0142owe wprowadzenie do alternatyw CFS mo\u017cna znale\u017a\u0107 tutaj: <a href=\"https:\/\/webhosting.de\/pl\/linux-scheduler-cfs-alternative-hosting-kernelperf-boost\/\">Opcje harmonogramu systemu Linux<\/a>.<\/p>\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\/cpu-affinity-serverraum-1842.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Analiza i profilowanie obci\u0105\u017cenia<\/h2>\n\n<p>Zanim przypn\u0119, sprawdzam <strong>Charakterystyka<\/strong> us\u0142ug. Serwery internetowe sterowane zdarzeniami generuj\u0105 niewiele zmian kontekstu, ale w znacznym stopniu korzystaj\u0105 ze sp\u00f3jno\u015bci pami\u0119ci podr\u0119cznej. Bazy danych s\u0105 wra\u017cliwe na migracje j\u0105dra podczas intensywnych po\u0142\u0105cze\u0144 lub punkt\u00f3w kontrolnych. Mierz\u0119 op\u00f3\u017anienia p95\/p99, \u015bledz\u0119 migracje procesora za pomoc\u0105 <strong>perf<\/strong> i szukam b\u0142\u0119d\u00f3w LLC. Dopiero wtedy pisz\u0119 sta\u0142e regu\u0142y i testuj\u0119 je pod szczytowym obci\u0105\u017ceniem.<\/p>\n\n<h2>Topologia CPU, SMT i pary rdzeni<\/h2>\n<p>Bior\u0119 pod uwag\u0119 topologi\u0119 fizyczn\u0105: kompleksy rdzenia, plasterki L3 i <strong>SMT<\/strong>-rodze\u0144stwo. W przypadku us\u0142ug o krytycznym op\u00f3\u017anieniu przydzielam tylko jeden w\u0105tek SMT na rdze\u0144, aby gor\u0105ce w\u0105tki nie wsp\u00f3\u0142dzieli\u0142y jednostek wykonawczych. SMT pozostaje aktywny dla zada\u0144 wsadowych, kt\u00f3re korzystaj\u0105 z dodatkowej przepustowo\u015bci. Na AMD-EPYC zwracam uwag\u0119 na limity CCD\/CCX: Pracownicy pozostaj\u0105 w obr\u0119bie segmentu L3, aby utrzyma\u0107 stabilny wysoki poziom trafie\u0144 LLC. W przypadku stos\u00f3w o du\u017cym obci\u0105\u017ceniu NIC, paruj\u0119 kolejki RX\/TX z kolejk\u0105 <strong>Rdzenie<\/strong>, na kt\u00f3rym uruchamiani s\u0105 pracownicy przestrzeni u\u017cytkownika. Takie po\u0142\u0105czenie pozwala unikn\u0105\u0107 szpiegowania mi\u0119dzy rdzeniami i utrzymuje kr\u00f3tkie \u015bcie\u017cki mi\u0119dzy IRQ, SoftIRQ i aplikacj\u0105.<\/p>\n\n<h2>Strategie przypinania dla serwer\u00f3w WWW i PHP-FPM<\/h2>\n\n<p>Dla frontend\u00f3w webowych u\u017cywam <strong>NGINX<\/strong> Cz\u0119sto u\u017cywam w\u0105skiego zestawu rdzeni, na przyk\u0142ad 0-3, aby zapewni\u0107 sta\u0142y czas odpowiedzi. Rozdzielam PHP-FPM: hot workers na 4-7, zadania w tle na 8-11. Odci\u0105\u017cam Node.js w\u0105tkami roboczymi i wi\u0105\u017c\u0119 zadania obci\u0105\u017caj\u0105ce CPU z w\u0142asnymi w\u0105tkami roboczymi. <strong>j\u0105dra<\/strong>. Utrzymuj\u0119 Apache'a w MPM z w\u0105skimi limitami w kolejkach kr\u00f3tkoterminowych. Takie uk\u0142ady utrzymuj\u0105 potoki w czysto\u015bci i zauwa\u017calnie zmniejszaj\u0105 jitter.<\/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\/server_cpu_affinity_3621.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Parametry j\u0105dra i harmonogramu w kontek\u015bcie Affinity<\/h2>\n<p>Affinity ma silniejszy efekt, je\u015bli j\u0105dro nie przeciwdzia\u0142a mu na sta\u0142e. W przypadku us\u0142ug bardzo wra\u017cliwych na pami\u0119\u0107 podr\u0119czn\u0105 zwi\u0119kszam warto\u015b\u0107 <strong>sched_migration_cost_ns<\/strong>, aby CFS rzadziej uznawa\u0142 migracje za \u201etanie\u201c. <strong>sched_min_granularity_ns<\/strong> oraz <strong>sched_wakeup_granularity_ns<\/strong> wp\u0142ywaj\u0105 na odcinki czasu i zachowanie w trybie pre-emption; tutaj u\u017cywam test\u00f3w A\/B. W przypadku j\u0105der o izolowanym op\u00f3\u017anieniu u\u017cywam w szczeg\u00f3lno\u015bci <em>sprz\u0105tanie<\/em>-CPU i umie\u015bci\u0107 w\u0105tki RCU\/j\u0105dra z dala od gor\u0105cych rdzeni (nohz_full\/rcu_nocbs na wybranych hostach). Te interwencje to <strong>zale\u017cny od kontekstu<\/strong>Zmieniam je tylko w zale\u017cno\u015bci od klasy obci\u0105\u017cenia i przywracam je, \u015bci\u015ble monitoruj\u0105c, je\u015bli wariancja lub przepustowo\u015b\u0107 ulegn\u0105 pogorszeniu.<\/p>\n\n<h2>Bazy danych i maski powinowactwa<\/h2>\n\n<p>W bazach danych dobry <strong>Przydzia\u0142<\/strong> Transakcje online, zadania konserwacyjne i obs\u0142uga we\/wy. SQL Server obs\u0142uguje maski powinowactwa, kt\u00f3rych u\u017cywam do definiowania zestaw\u00f3w CPU dla w\u0105tk\u00f3w silnika i oddzielnie dla I\/O. Unikam nak\u0142adania si\u0119 maski powinowactwa i maski I\/O, w przeciwnym razie gor\u0105ce w\u0105tki konkuruj\u0105 z blokowym I\/O. W przypadku host\u00f3w z wi\u0119cej ni\u017c 32 rdzeniami u\u017cywam rozszerzonych 64-bitowych masek. Dzi\u0119ki temu log flushery, check pointery i query workers s\u0105 od siebie odseparowane <strong>izolowany<\/strong>.<\/p>\n\n<h2>\u015acie\u017cki pami\u0119ci masowej i kolejki NVMe<\/h2>\n<p>Na stronie <strong>blk-mq<\/strong> Mapuj\u0119 kolejki NVMe i pami\u0119ci masowej na rdzenie w tej samej domenie NUMA, co pracownicy DB. W\u0105tki p\u0142ukania dziennika i powi\u0105zane IRQ kolejki NVMe l\u0105duj\u0105 na s\u0105siednich rdzeniach, dzi\u0119ki czemu potwierdzenia zapisu nie przechodz\u0105 przez gniazdo. Upewniam si\u0119, \u017ce w\u0105tki aplikacji i intensywnie u\u017cywane IRQ pami\u0119ci masowej nie wsp\u00f3\u0142dziel\u0105 tego samego rdzenia, w przeciwnym razie tworzone s\u0105 bloki head-of-line. U\u017cywam harmonogram\u00f3w wielu kolejek w taki spos\u00f3b, aby liczba kolejek odpowiada\u0142a faktycznie przypisanym rdzeniom - zbyt wiele kolejek tylko zwi\u0119ksza narzut, zbyt ma\u0142o powoduje retencj\u0119 blokad.<\/p>\n\n<h2>Wirtualizacja, vCPU pinning i NUMA<\/h2>\n\n<p>W KVM lub Hyper-V \u0142\u0105cz\u0119 <strong>vCPU<\/strong> do fizycznych rdzeni, aby unikn\u0105\u0107 kradzie\u017cy czasu. Oddzielam kolejki vhost-net\/virtio od gor\u0105cych rdzeni go\u015bcia, aby zapobiec d\u0142awieniu w\u0105tk\u00f3w aplikacji przez IO. NUMA wymaga r\u00f3wnie\u017c zwr\u00f3cenia uwagi na lokalizacj\u0119 pami\u0119ci, w przeciwnym razie czasy dost\u0119pu podwoj\u0105 si\u0119. Wi\u0119cej informacji na temat topologii i strojenia mo\u017cna znale\u017a\u0107 w tym artykule: <a href=\"https:\/\/webhosting.de\/pl\/blog-numa-architektura-serwer-wydajnosc-hosting-sprzet-optymalizacja-infrastruktura\/\">Architektura NUMA w hostingu<\/a>. W g\u0119stych konfiguracjach sprz\u0119\u017cenie to zapewnia zauwa\u017calnie bardziej r\u00f3wnomiern\u0105 prac\u0119. <strong>Op\u00f3\u017anienia<\/strong>.<\/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\/cpu-affinity-optimization-7253.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Orkiestracja kontener\u00f3w: zasady cpuset i QoS<\/h2>\n<p>W pojemnikach umieszczam <strong>cpuset.cpus<\/strong> zgodne z limitami CPU. Kubernetes u\u017cywa mened\u017cera CPU (polityka \u201estatyczna\u201c), aby zapewni\u0107 wy\u0142\u0105czne rdzenie dla pod\u00f3w w klasie Guaranteed QoS, je\u015bli ustawiono Requests=Limits. Oznacza to, \u017ce krytyczne pody l\u0105duj\u0105 na sta\u0142ych rdzeniach, podczas gdy obci\u0105\u017cenia wymagaj\u0105ce najwi\u0119kszego wysi\u0142ku pozostaj\u0105 elastyczne. Planuj\u0119 pody z uwzgl\u0119dnieniem topologii: dziel\u0119 \u015bcie\u017cki op\u00f3\u017anie\u0144 (wej\u015bcie, aplikacja, pami\u0119\u0107 podr\u0119czna) na w\u0119ze\u0142 NUMA, aby pami\u0119\u0107 i obci\u0105\u017cenie IRQ pozosta\u0142y lokalne. Wa\u017cne jest, aby <strong>Mo\u017cliwo\u015b\u0107 planowania<\/strong> r\u00f3wnie\u017c w przypadku rollout\u00f3w: repliki otrzymuj\u0105 identyczne zestawy rdzeni, w przeciwnym razie zmierzone warto\u015bci r\u00f3\u017cni\u0105 si\u0119 mi\u0119dzy instancjami.<\/p>\n\n<h2>Grupy, sprawiedliwo\u015b\u0107 i izolacja<\/h2>\n\n<p>Samo pokrewie\u0144stwo nie gwarantuje <strong>Sprawiedliwo\u015b\u0107<\/strong>, dlatego \u0142\u0105cz\u0119 je z cgroups. cpu.shares nadaje grupom wzgl\u0119dne priorytety, cpu.max ustala twarde g\u00f3rne limity na wycinek czasu. W ten spos\u00f3b utrzymuj\u0119 ha\u0142a\u015bliwych s\u0105siad\u00f3w w ryzach, nawet je\u015bli pracuj\u0105 na CPU. W hostingu dla wielu dzier\u017cawc\u00f3w chroni\u0119 krytyczne us\u0142ugi wy\u017cszymi udzia\u0142ami. Podsumowuj\u0105c, tworzy to wyra\u017any <strong>Separacja<\/strong> bez nadmiernego ryzyka.<\/p>\n\n<h2>Zarz\u0105dzanie energi\u0105 i cz\u0119stotliwo\u015bci\u0105 dla przewidywalnych op\u00f3\u017anie\u0144<\/h2>\n<p>Stany zasilania maj\u0105 zauwa\u017calny wp\u0142yw na jitter. Dla \u015bcis\u0142ych cel\u00f3w p99, utrzymuj\u0119 stabilne wysokie cz\u0119stotliwo\u015bci bazowe na gor\u0105cych rdzeniach (wydajno\u015b\u0107 gubernatora lub wysokie <em>energy_performance_preference<\/em>) i ograniczy\u0107 g\u0142\u0119bokie stany C, aby czasy wybudzania nie dominowa\u0142y. U\u017cywam Turbo z umiarem: poszczeg\u00f3lne w\u0105tki odnosz\u0105 korzy\u015bci, ale ograniczenia termiczne mog\u0105 powodowa\u0107 r\u00f3wnoleg\u0142e dzia\u0142anie <strong>j\u0105dra<\/strong> przepustnica. Aby uzyska\u0107 r\u00f3wnomiern\u0105 przepustowo\u015b\u0107, ustawiam g\u00f3rne\/ dolne limity cz\u0119stotliwo\u015bci na gniazdo i przenosz\u0119 logik\u0119 oszcz\u0119dzania energii na zimne rdzenie. Zmniejsza to wariancj\u0119 bez nadmiernego ograniczania og\u00f3lnej przepustowo\u015bci.<\/p>\n\n<h2>systemd, taskset i Windows: Wdro\u017cenie<\/h2>\n\n<p>Do sta\u0142ych us\u0142ug u\u017cywam <strong>systemd<\/strong> z CPUAffinity=0-3 w jednostce, w po\u0142\u0105czeniu z CPUSchedulingPolicy=fifo dla obci\u0105\u017ce\u0144 RT. Uruchamiam jednorazowe zadania z zestawem zada\u0144 -c 4-7, aby kopie zapasowe nie trafia\u0142y do gor\u0105cych pami\u0119ci podr\u0119cznych. Enkapsuluj\u0119 kontenery za pomoc\u0105 cpuset.cpus i cgroupv2, aby str\u0105ki otrzymywa\u0142y swoje sta\u0142e rdzenie. W systemie Windows ustawiam ProcessorAffinity na mask\u0119 bitow\u0105 hex za pomoc\u0105 PowerShell. Te opcje daj\u0105 mi precyzyjne <strong>Kontrola<\/strong> do limitu j\u0105dra.<\/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\/cpu_affinity_optimization_9876.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitorowanie i testowanie: pomiar zamiast zgadywania<\/h2>\n\n<p>Sprawdzam sukces za pomoc\u0105 <strong>perf<\/strong> (prze\u0142\u0105czenia kontekstu, migracje, pomini\u0119cia pami\u0119ci podr\u0119cznej) i \u015bledzenie p95\/p99 na seri\u0119 czasow\u0105. Powt\u00f3rki obci\u0105\u017cenia z wrk, hey lub sysbench pokazuj\u0105, czy warto\u015bci odstaj\u0105ce s\u0105 coraz mniejsze. Monitoruj\u0119 r\u00f3wnie\u017c czas kradzie\u017cy w maszynach wirtualnych i obci\u0105\u017cenie IRQ na rdzeniach hosta. Kr\u00f3tkie por\u00f3wnanie A\/B przy szczytowym obci\u0105\u017ceniu ujawnia b\u0142\u0119dne za\u0142o\u017cenia. Dopiero gdy liczby si\u0119 zgadzaj\u0105, zamra\u017cam regu\u0142y na sta\u0142e <strong>Zasady<\/strong> w.<\/p>\n\n<h2>Ryzyko, ograniczenia i przeciwwskazania<\/h2>\n\n<p>Sztywne rdzenie do puszek <strong>wyschn\u0105\u0107<\/strong> gdy ruch jest zmienny. Dlatego ustawiam tylko krytyczne w\u0105tki i pozostawiam te niekrytyczne w harmonogramie. Overcommit r\u00f3wnie\u017c poch\u0142ania zasoby, je\u015bli dwie ha\u0142a\u015bliwe maszyny wirtualne chc\u0105 tego samego rdzenia. Je\u015bli naprawisz zbyt wiele, b\u0119dziesz p\u00f3\u017aniej zmaga\u0107 si\u0119 z hotspotami i s\u0142abym wykorzystaniem. Dobry test rzeczywisto\u015bci: ten artyku\u0142 na temat przypinania procesora to <a href=\"https:\/\/webhosting.de\/pl\/przypisywanie-procesora-hosting-rzadko-ma-sens-optymalizacja-tuning\/\">Rzadko przydatne<\/a> wzywa do wywa\u017conego podej\u015bcia z jasnymi celami i rozstrzygaj\u0105cymi <strong>Metryki<\/strong>.<\/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\/server_cpu_affinity_1984.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Przypadki szczeg\u00f3lne: Wysoka cz\u0119stotliwo\u015b\u0107 i czas rzeczywisty<\/h2>\n\n<p>Dla sub-milisekund linkuj\u0119 <strong>Affinity<\/strong> z polityk\u0105 RT, dostrajaniem IRQ i sp\u00f3jno\u015bci\u0105 NUMA. Wi\u0105\u017c\u0119 sieciowe IRQ z ich w\u0142asnymi rdzeniami i trzymam w\u0105tki przestrzeni u\u017cytkownika z dala od nich. Na AMD-EPYC z topologi\u0105 chiplet zapewniam kr\u00f3tkie \u015bcie\u017cki mi\u0119dzy rdzeniem, kontrolerem pami\u0119ci i kart\u0105 sieciow\u0105. Du\u017ce strony (HugeTLB) pomagaj\u0105 zmniejszy\u0107 wsp\u00f3\u0142czynnik braku TLB. Te kroki znacznie zmniejszaj\u0105 wariancj\u0119 i tworz\u0105 <strong>Mo\u017cliwo\u015b\u0107 planowania<\/strong> z HF-Traffic.<\/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\/serverraum-cpu-affinitat-8291.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Dostosowanie do popularnych stos\u00f3w<\/h2>\n\n<p>Na stronie <strong>PHP-FPM<\/strong> Ustawi\u0142em pm dynamic z dopasowaniem pm.max_children i process_idle_timeout, aby bezczynni pracownicy byli pomijani. NGINX dzia\u0142a z worker_processes auto, ale wi\u0105\u017c\u0119 pracownik\u00f3w specjalnie z gor\u0105cymi rdzeniami. Utrzymuj\u0119 Apache w event-MPM kr\u00f3tko, aby kolejka uruchamiania nie ros\u0142a. W przypadku Node.js hermetyzuj\u0119 obci\u0105\u017cenie procesora w w\u0105tkach roboczych z ich w\u0142asnym powinowactwem. Dzi\u0119ki temu p\u0119tla zdarze\u0144 jest wolna i responsywna <strong>szybki<\/strong> do wej\u015bcia\/wyj\u015bcia.<\/p>\n\n<h2>Kontrola IRQ i separacja wej\u015b\u0107\/wyj\u015b\u0107<\/h2>\n\n<p>I pin <strong>IRQ<\/strong>-handler za po\u015brednictwem smp_affinity na dedykowanych rdzeniach, dzi\u0119ki czemu zalew pakiet\u00f3w nie wypiera w\u0105tk\u00f3w aplikacji. Wsp\u00f3\u0142dziel\u0119 karty sieciowe z wieloma kolejkami na kilka rdzeni, aby dopasowa\u0107 dystrybucj\u0119 RSS. Oddzielam przerwania pami\u0119ci masowej od sieciowych IRQ, aby unikn\u0105\u0107 blokowania nag\u0142\u00f3wka linii. Asynchroniczne I\/O i pule w\u0105tk\u00f3w w NGINX zapobiegaj\u0105 blokowaniu wywo\u0142a\u0144 syscall na gor\u0105cych rdzeniach. Ta separacja utrzymuje kr\u00f3tkie \u015bcie\u017cki i chroni <strong>Obci\u0105\u017cenie szczytowe<\/strong>.<\/p>\n\n<h2>Przewodnik dotycz\u0105cy stopniowego wprowadzania<\/h2>\n\n<p>Zaczynam od <strong>Profilowanie<\/strong> w Real-Traffic, a nast\u0119pnie ustawiam tylko krytyczne us\u0142ugi. Nast\u0119pnie sprawdzam p95\/p99 i migracje przed powi\u0105zaniem kolejnych w\u0105tk\u00f3w. Cgroups daje mi opcje korekty bez restartu. Dokumentuj\u0119 zmiany dla ka\u017cdego hosta i podsumowuj\u0119 regu\u0142y w jednostkach systemd. Dopiero po stabilnych zmierzonych warto\u015bciach wdra\u017cam <strong>Konfiguracja<\/strong> szeroko.<\/p>\n\n<h2>Obs\u0142uga, zarz\u0105dzanie zmianami i wycofywanie<\/h2>\n<p>Regu\u0142y affinity traktuj\u0119 jak kod. Wersjonuj\u0119 jednostki systemd i zasady cgroup, rozwijam je <strong>zainscenizowany<\/strong> (najpierw kanarki, potem szerzej) i przygotowa\u0107 jasn\u0105 drog\u0119 powrotn\u0105. Szybki rollback jest obowi\u0105zkowy, je\u015bli p99 SLO si\u0119 zepsuje lub przepustowo\u015b\u0107 spadnie. Zamra\u017cam zmiany przed godzinami szczytu i monitoruj\u0119 wska\u017aniki migracji, wska\u017aniki braku LLC i wykorzystanie na rdze\u0144 po ka\u017cdym kroku. Zmniejsza to ryzyko operacyjne i zapobiega generowaniu przez \u201edobre\u201c indywidualne optymalizacje niepo\u017c\u0105danych efekt\u00f3w ubocznych w sieci.<\/p>\n\n<h2>Efekty bezpiecze\u0144stwa i izolacji<\/h2>\n<p>Affinity pomaga r\u00f3wnie\u017c w <strong>Izolacja<\/strong>W \u015brodowiskach z wieloma dzier\u017cawcami nie udost\u0119pniam rodze\u0144stwa SMT mi\u0119dzy klientami, aby zminimalizowa\u0107 przes\u0142uch i kana\u0142y boczne. Wra\u017cliwe us\u0142ugi dzia\u0142aj\u0105 na wy\u0142\u0105cznych rdzeniach, oddzielonych od ha\u0142a\u015bliwych \u017ar\u00f3de\u0142 IRQ. Ograniczenia j\u0105dra przed spekulacyjnymi lukami w wykonywaniu zwi\u0119kszaj\u0105 koszty prze\u0142\u0105czania kontekstu - czyste przypinanie minimalizuje ten efekt, poniewa\u017c mniej w\u0105tk\u00f3w przekracza granice kafelk\u00f3w. Wa\u017cne: Nale\u017cy zr\u00f3wnowa\u017cy\u0107 cele bezpiecze\u0144stwa i wydajno\u015bci; czasami \u201ewy\u0142\u0105czenie SMT\u201c jest uzasadnione dla kilku obci\u0105\u017ce\u0144, kt\u00f3re s\u0105 szczeg\u00f3lnie warte ochrony, podczas gdy reszta nadal korzysta z przepustowo\u015bci SMT.<\/p>\n\n<h2>KPI, SLO i rentowno\u015b\u0107<\/h2>\n<p>Definiuj\u0119 <strong>z g\u00f3ry<\/strong> przejrzyste wska\u017aniki KPI: op\u00f3\u017anienie p95\/p99, przepustowo\u015b\u0107, cs\/req (prze\u0142\u0105czenia kontekstu na \u017c\u0105danie), migracje na sekund\u0119 i wska\u017anik braku LLC. Docelowe korytarze pomagaj\u0105 oceni\u0107 kompromisy, takie jak \u201ep99 -25% przy \u22645% mniejszej maksymalnej przepustowo\u015bci\u201c. Na poziomie hosta monitoruj\u0119 nier\u00f3wnowag\u0119 rdzeni i czas bezczynno\u015bci, aby przypinanie nie prowadzi\u0142o do kosztownego czasu bezczynno\u015bci. Affinity ma sens ekonomiczny, je\u015bli osi\u0105gni\u0119ta przewidywalno\u015b\u0107 zmniejsza kary SLO lub zwi\u0119ksza g\u0119sto\u015b\u0107 w klastrach, poniewa\u017c bufory rezerwowe mog\u0105 by\u0107 mniejsze. Bez tej numerycznej \u015bcie\u017cki, pinning pozostaje przeczuciem - z ni\u0105 staje si\u0119 odporny. <strong>Optymalizacja<\/strong>.<\/p>\n\n<h2>Przegl\u0105d i kategoryzacja<\/h2>\n\n<p>Affinity zapewnia <strong>Serwery<\/strong> z wieloma rdzeniami cz\u0119sto oferuje niesamowit\u0105 przewidywalno\u015b\u0107 przy niewielkiej interwencji. W przypadku maszyn wirtualnych z nadmiernym zaanga\u017cowaniem lub silnie zmiennym ruchem, d\u0142awi\u0119 wdro\u017cenie. \u015awiadomo\u015b\u0107 NUMA, dostrajanie IRQ i sprawiedliwe przydzia\u0142y decyduj\u0105 o sukcesie. Bez monitorowania, pinning szybko staje si\u0119 obci\u0105\u017ceniem, z liczbami pozostaje narz\u0119dziem. Selektywne podej\u015bcie wygrywa <strong>Przewidywalno\u015b\u0107<\/strong> i efektywnie wykorzystuje sprz\u0119t.<\/p>\n\n<h2>Podsumowanie<\/h2>\n\n<p>U\u017cywam <strong>Przynale\u017cno\u015b\u0107 procesora serwera<\/strong>, aby utrzyma\u0107 gor\u0105ce w\u0105tki blisko ich danych, ograniczy\u0107 migracje i wyg\u0142adzi\u0107 skoki op\u00f3\u017anie\u0144. W serwerach internetowych, PHP-FPM, bazach danych i maszynach wirtualnych \u0142\u0105cz\u0119 Affinity z Cgroups, strojeniem IRQ i dyscyplin\u0105 NUMA. Opcje systemd, taskset i kontenerowe cpusety sprawiaj\u0105, \u017ce implementacja nadaje si\u0119 do codziennego u\u017cytku. Zabezpieczam efekt pomiarami za pomoc\u0105 perf i szereg\u00f3w czasowych i stopniowo w\u0142\u0105czam kontrolki. Je\u015bli u\u017cyjesz pinowania w ukierunkowany spos\u00f3b, uzyskasz sta\u0142e czasy odpowiedzi, czyste pami\u0119ci podr\u0119czne i wymiernie wy\u017csz\u0105 wydajno\u015b\u0107. <strong>Przepustowo\u015b\u0107<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Server CPU Affinity optymalizuje wydajno\u015b\u0107 hostingu poprzez przypinanie i dostrajanie proces\u00f3w. Mniejsze op\u00f3\u017anienia, wy\u017csza przepustowo\u015b\u0107 - praktyczne wskaz\u00f3wki.<\/p>","protected":false},"author":1,"featured_media":18682,"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-18689","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":"529","_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 CPU 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":"18682","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/18689","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=18689"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/18689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/18682"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=18689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=18689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=18689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}