{"id":15663,"date":"2025-11-29T18:21:50","date_gmt":"2025-11-29T17:21:50","guid":{"rendered":"https:\/\/webhosting.de\/blog-numa-architektur-server-performance-hosting-hardware-optimierung-infrastruktur\/"},"modified":"2025-11-29T18:21:50","modified_gmt":"2025-11-29T17:21:50","slug":"blog-numa-architektura-serwer-wydajnosc-hosting-sprzet-optymalizacja-infrastruktura","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/blog-numa-architektur-server-performance-hosting-hardware-optimierung-infrastruktur\/","title":{"rendered":"Architektura NUMA: dlaczego odgrywa ona wa\u017cn\u0105 rol\u0119 w nowoczesnych serwerach"},"content":{"rendered":"<p>Die <strong>Architektura NUMA<\/strong> okre\u015bla, jak szybko nowoczesne serwery dostarczaj\u0105 pami\u0119\u0107 do w\u0105tk\u00f3w i jak dobrze skaluj\u0105 si\u0119 obci\u0105\u017cenia przy du\u017cym obci\u0105\u017ceniu. Poka\u017c\u0119, dlaczego lokalny dost\u0119p do pami\u0119ci dominuje w zakresie op\u00f3\u017anie\u0144 i przepustowo\u015bci, w jaki spos\u00f3b hiperwizory wykorzystuj\u0105 NUMA oraz jakie ustawienia w maszynach wirtualnych zapewniaj\u0105 bezpo\u015bredni wzrost wydajno\u015bci.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Kr\u00f3tko podsumowuj\u0119 najwa\u017cniejsze wnioski i podkre\u015blam czynniki, kt\u00f3re maj\u0105 najwi\u0119kszy wp\u0142yw na centra danych.<\/p>\n<ul>\n  <li><strong>Pami\u0119\u0107 lokalna<\/strong> minimalizuje op\u00f3\u017anienia i zwi\u0119ksza przepustowo\u015b\u0107<\/li>\n  <li><strong>W\u0119ze\u0142 NUMA<\/strong> efektywnie organizuj\u0105 procesory i pami\u0119\u0107 RAM<\/li>\n  <li><strong>Rozmiar vCPU<\/strong> dostosowa\u0107 do rozmiaru w\u0119z\u0142a na maszyn\u0119 wirtualn\u0105<\/li>\n  <li><strong>Wirtualna NUMA<\/strong> przekazywanie do systemu operacyjnego hosta<\/li>\n  <li><strong>Zasady rozci\u0105gania<\/strong> dla du\u017cych wymaga\u0144 dotycz\u0105cych pami\u0119ci RAM<\/li>\n<\/ul>\n<p>Skupiam si\u0119 konsekwentnie na <strong>Op\u00f3\u017anienie<\/strong> i blisko\u015b\u0107 danych, poniewa\u017c w\u0142a\u015bnie tam decyduje si\u0119 wydajno\u015b\u0107 serwera. Du\u017ce gniazda, wiele rdzeni i du\u017co pami\u0119ci RAM s\u0105 ma\u0142o przydatne, je\u015bli w\u0105tki ci\u0105gle czekaj\u0105 na odleg\u0142e obszary pami\u0119ci. Skaluj\u0119 maszyny wirtualne tak, aby pasowa\u0142y do w\u0119z\u0142a NUMA, a alokacja pami\u0119ci pozostawa\u0142a lokalna. Wspieram funkcje hiperwizora w spos\u00f3b ukierunkowany, zamiast aktywowa\u0107 wszystko globalnie. W ten spos\u00f3b zapewniam bezpiecze\u0144stwo. <strong>Skalowanie<\/strong> bez niespodzianek podczas szczytowego obci\u0105\u017cenia.<\/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\/2025\/11\/numa-serverarchitektur-4831.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym naprawd\u0119 jest NUMA<\/h2>\n\n<p>My\u015bl\u0119 w <strong>W\u0119ze\u0142<\/strong>: Ka\u017cdy w\u0119ze\u0142 NUMA \u0142\u0105czy rdzenie procesora i lokaln\u0105 pami\u0119\u0107 RAM o bardzo kr\u00f3tkich \u015bcie\u017ckach dost\u0119pu. Je\u015bli w\u0105tek trafia na dane w pami\u0119ci podr\u0119cznej L1, L2 lub L3, wszystko dzia\u0142a niezwykle szybko; je\u015bli zestaw danych znajduje si\u0119 w lokalnej pami\u0119ci RAM, op\u00f3\u017anienie pozostaje niskie. Je\u015bli jednak w\u0105tek uzyskuje dost\u0119p do innego w\u0119z\u0142a, czas oczekiwania wzrasta, a przepustowo\u015b\u0107 spada. To w\u0142a\u015bnie te r\u00f3\u017cnice sprawiaj\u0105, \u017ce <strong>Niejednolity<\/strong> Dost\u0119p do pami\u0119ci. Dlatego dostosowuj\u0119 obci\u0105\u017cenia tak, aby wi\u0119kszo\u015b\u0107 dost\u0119p\u00f3w pozostawa\u0142a lokalna.<\/p>\n\n<h2>Dlaczego UMA napotyka ograniczenia<\/h2>\n\n<p>UMA przypisuje wszystkim procesorom wsp\u00f3lny <strong>\u015bcie\u017cka pami\u0119ci<\/strong> co powoduje zatory przy rosn\u0105cej liczbie rdzeni. Ka\u017cdy dodatkowy rdze\u0144 do\u0142\u0105cza do tych samych kolejek i konkuruje o przepustowo\u015b\u0107. W wielu starszych konfiguracjach powodowa\u0142o to narastanie op\u00f3\u017anie\u0144, a\u017c do momentu, gdy wykorzystanie procesora by\u0142o wysokie, ale aplikacja reagowa\u0142a powoli. Wydaje si\u0119 to by\u0107 \u201eograniczeniem procesora\u201c, chocia\u017c w rzeczywisto\u015bci w\u0105skim gard\u0142em jest dost\u0119p do pami\u0119ci. NUMA rozwi\u0105zuje w\u0142a\u015bnie ten problem. <strong>Blokady<\/strong> poprzez lokalne \u015bcie\u017cki i topologi\u0119 w\u0119z\u0142\u00f3w.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/numa_servermeeting_4027.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>NUMA a UMA: przegl\u0105d r\u00f3\u017cnic<\/h2>\n\n<p>Najwa\u017cniejsze r\u00f3\u017cnice przedstawiam w skr\u00f3conej formie. <strong>Tabela<\/strong> sta\u0142e, aby decyzje by\u0142y podejmowane szybciej. Ten przegl\u0105d pokazuje, co jest wa\u017cne w przypadku architektury, op\u00f3\u017anie\u0144 i skalowania. Pomaga mi on w doborze rozmiaru nowych host\u00f3w, a tak\u017ce w wyszukiwaniu b\u0142\u0119d\u00f3w w \u015brodowiskach produkcyjnych. Kto wyra\u017anie widzi r\u00f3\u017cnic\u0119 mi\u0119dzy dost\u0119pem lokalnym a zdalnym, podejmuje lepsze decyzje dotycz\u0105ce dostosowania maszyn wirtualnych i przydzielania pami\u0119ci RAM. W\u0142a\u015bnie tutaj decyduje si\u0119 <strong>Wydajno\u015b\u0107<\/strong> pod obci\u0105\u017ceniem.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Kryterium<\/th>\n      <th>NUMA<\/th>\n      <th>UMA<\/th>\n      <th>Efekt praktyczny<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>dost\u0119p do pami\u0119ci<\/td>\n      <td>Lokalnie lub zdalnie<\/td>\n      <td>Znormalizowany<\/td>\n      <td>Dost\u0119p lokalny jest szybszy; dost\u0119p zdalny powoduje op\u00f3\u017anienia.<\/td>\n    <\/tr>\n    <tr>\n      <td>Skalowanie<\/td>\n      <td>Bardzo dobrze z w\u0119z\u0142ami<\/td>\n      <td>Wczesne ograniczenie<\/td>\n      <td>Wi\u0119cej rdzeni zapewnia wi\u0119ksz\u0105 niezawodno\u015b\u0107 skalowania w architekturze NUMA<\/td>\n    <\/tr>\n    <tr>\n      <td>Topologia<\/td>\n      <td>Wiele w\u0119z\u0142\u00f3w<\/td>\n      <td>Jednolita pula<\/td>\n      <td>Konieczne planowanie uwzgl\u0119dniaj\u0105ce topologi\u0119<\/td>\n    <\/tr>\n    <tr>\n      <td>hypervisor<\/td>\n      <td>Wirtualna NUMA dost\u0119pna<\/td>\n      <td>Mniej istotne<\/td>\n      <td>System operacyjny go\u015bcia mo\u017ce planowa\u0107 z uwzgl\u0119dnieniem NUMA<\/td>\n    <\/tr>\n    <tr>\n      <td>Precyzyjne dostrajanie<\/td>\n      <td>vCPU\/RAM na w\u0119ze\u0142<\/td>\n      <td>Globalne dostrajanie<\/td>\n      <td>Wirtualne maszyny dostosowane do w\u0119z\u0142\u00f3w zapewniaj\u0105 stabilno\u015b\u0107<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>NUMA w \u015brodowiskach wirtualnych<\/h2>\n\n<p>Pozwalam hiperwizorowi <strong>Topologia<\/strong> przekazywane do systemu operacyjnego hosta, aby harmonogram i zarz\u0105dzanie pami\u0119ci\u0105 by\u0142y planowane lokalnie. Virtual NUMA pokazuje go\u015bciowi granice jego w\u0119z\u0142\u00f3w, dzi\u0119ki czemu bazy danych, JVM i .NET-Worker mog\u0105 bardziej efektywnie rozmieszcza\u0107 swoje sterty i w\u0105tki. W ten spos\u00f3b unikam kosztownych dost\u0119p\u00f3w zdalnych i utrzymuj\u0119 stabiln\u0105 latencj\u0119. W wra\u017cliwych konfiguracjach \u0142\u0105cz\u0119 to z konsekwentn\u0105 strategi\u0105 pinningu i sta\u0142ym przydzia\u0142em pami\u0119ci RAM. Aby uzyska\u0107 wyj\u0105tkowo kr\u00f3tkie czasy odpowiedzi, dodatkowo stosuj\u0119 <a href=\"https:\/\/webhosting.de\/pl\/mikro-opoznienie-hosting-optymalizacja-baza-danych-siec-blyskawiczna\/\">Hosting z mikroop\u00f3\u017anieniami<\/a> w celu dalszego zmniejszenia drga\u0144.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/11\/numa-architektur-servertechnik-9381.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Najlepsze praktyki dotycz\u0105ce rozmiar\u00f3w maszyn wirtualnych i przypisywania procesor\u00f3w<\/h2>\n\n<p>Dimensionuj\u0119 <strong>vCPU<\/strong> tak, aby maszyna wirtualna mie\u015bci\u0142a si\u0119 w w\u0119\u017ale NUMA lub tylko nieznacznie go przekracza\u0142a. Przyk\u0142ad: je\u015bli host ma dwa w\u0119z\u0142y po 20 rdzeni, planuj\u0119 maszyny wirtualne z 4 do 16 vCPU, preferuj\u0105c umieszczenie ich w jednym w\u0119\u017ale. Kto przekracza t\u0119 liczb\u0119, ryzykuje zdalny dost\u0119p i niepotrzebne czasy oczekiwania. Pami\u0119\u0107 RAM rozdzielam w miar\u0119 mo\u017cliwo\u015bci statycznie, aby system operacyjny go\u015bcia przechowywa\u0142 swoje strony lokalnie. W przypadku obci\u0105\u017ce\u0144 o du\u017cym udziale pojedynczych w\u0105tk\u00f3w uwzgl\u0119dniam odpowiedni\u0105 strategi\u0119 rdzeniow\u0105 i korzystam z analiz, takich jak <a href=\"https:\/\/webhosting.de\/pl\/jednowatkowy-vs-wielordzeniowy-webhosting-porownanie-procesorow-2025-wydajnosc\/\">Jednow\u0105tkowy vs. wielordzeniowy<\/a>.<\/p>\n\n<h2>Konkretne zalety sprz\u0119tu hostingowego<\/h2>\n\n<p>Dzi\u0119ki starannemu planowaniu NUMA zwi\u0119kszam <strong>g\u0119sto\u015b\u0107<\/strong> na host, bez po\u015bwi\u0119cania czasu reakcji. W wielu centrach danych mo\u017cna w ten spos\u00f3b obs\u0142ugiwa\u0107 znacznie wi\u0119cej maszyn wirtualnych na gniazdo, przy jednoczesnym zachowaniu niezawodnej reakcji aplikacji. Kr\u00f3tsze op\u00f3\u017anienia maj\u0105 bezpo\u015bredni wp\u0142yw na komfort u\u017cytkowania i przepustowo\u015b\u0107 partii. Koszty na obci\u0105\u017cenie spadaj\u0105, poniewa\u017c czas procesora i pami\u0119\u0107 RAM s\u0105 wykorzystywane bardziej efektywnie. Kto dokonuje przemy\u015blanego wyboru sprz\u0119tu, dodatkowo korzysta z nowoczesnych <a href=\"https:\/\/webhosting.de\/pl\/wysoka-wydajnosc-webhostingu-sprzet-cpu-nvme-pamiec-wydajnosc-turbo-serwer\/\">Wysokowydajny sprz\u0119t do hostingu stron internetowych<\/a> o du\u017cej przepustowo\u015bci pami\u0119ci.<\/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\/2025\/11\/numa_techoffice_nacht9462.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Optymalizacja obci\u0105\u017cenia: bazy danych, pami\u0119ci podr\u0119czne, kontenery<\/h2>\n\n<p>Upewniam si\u0119, \u017ce <strong>Bazy danych<\/strong> utrzymuj\u0105 swoje sterty lokalnie i obliczaj\u0105 w\u0105tki robocze na \u201eswoim\u201c w\u0119\u017ale. W przypadku silnik\u00f3w SQL, pami\u0119ci podr\u0119cznych w pami\u0119ci i maszyn JVM warto zastosowa\u0107 sta\u0142e przypisanie procesor\u00f3w i rezerwacj\u0119 pami\u0119ci. Orkiestracja kontener\u00f3w korzysta z powinowactwa w\u0119z\u0142\u00f3w, dzi\u0119ki czemu pody wykorzystuj\u0105 najkr\u00f3tsze \u015bcie\u017cki pami\u0119ci. W przypadku intensywnego wej\u015bcia\/wyj\u015bcia stawiam na przypisania NVMe zbli\u017cone do NUMA, aby dane pozostawa\u0142y w pobli\u017cu w\u0119z\u0142\u00f3w. Dzi\u0119ki temu \u015bcie\u017cki dost\u0119pu pozostaj\u0105 kr\u00f3tkie, a <strong>Czas reakcji<\/strong> przyjazny.<\/p>\n\n<h2>Monitorowanie i rozwi\u0105zywanie problem\u00f3w w NUMA<\/h2>\n\n<p>Mierz\u0119 <strong>Op\u00f3\u017anienie<\/strong> i dost\u0119p zdalny w spos\u00f3b ukierunkowany, zamiast skupia\u0107 si\u0119 wy\u0142\u0105cznie na procentowym wykorzystaniu procesora. Narz\u0119dzia pokazuj\u0105 mi dla ka\u017cdego w\u0119z\u0142a, ile stron znajduje si\u0119 zdalnie i kt\u00f3re w\u0105tki generuj\u0105 obci\u0105\u017cenie pami\u0119ci. Je\u015bli wzrasta liczba zdalnych b\u0142\u0119d\u00f3w, dostosowuj\u0119 rozmiar vCPU, powinowactwo lub przydzia\u0142 pami\u0119ci RAM. Je\u015bli przepustowo\u015b\u0107 pozostaje niska pomimo wysokich rezerw procesora, cz\u0119sto przyczyn\u0105 s\u0105 \u015bcie\u017cki pami\u0119ci. Widoczno\u015b\u0107 z perspektywy w\u0119z\u0142a jest dla mnie najszybszym sposobem na <strong>Przyczyny<\/strong>, nie tylko do objaw\u00f3w.<\/p>\n\n<h2>NUMA-Spanning: prawid\u0142owe stosowanie<\/h2>\n\n<p>Aktywuj\u0119 <strong>Spanning<\/strong> przeznaczone specjalnie dla maszyn wirtualnych o bardzo du\u017cym zapotrzebowaniu na pami\u0119\u0107 RAM lub wyj\u0105tkowej przepustowo\u015bci. Maszyna wirtualna mo\u017ce wtedy pobiera\u0107 pami\u0119\u0107 z wielu w\u0119z\u0142\u00f3w, co w og\u00f3le umo\u017cliwia dzia\u0142anie pojedynczych instancji o ogromnym \u015bladzie. Cen\u0105 za to s\u0105 sporadyczne dost\u0119py zdalne, kt\u00f3re \u0142agodz\u0119 za pomoc\u0105 powinowactwa procesora i wi\u0119kszego udzia\u0142u lokalno\u015bci stron. W przypadku obci\u0105\u017ce\u0144 mieszanych wol\u0119 wybra\u0107 kilka \u015brednich maszyn wirtualnych zamiast jednej bardzo du\u017cej instancji. W ten spos\u00f3b pozostaje <strong>Mo\u017cliwo\u015b\u0107 planowania<\/strong> w codziennym \u017cyciu.<\/p>\n\n<h2>Licencjonowanie, g\u0119sto\u015b\u0107 i rzeczywiste koszty<\/h2>\n\n<p>Oceniam <strong>Koszty<\/strong> nie na poziomie hosta, ale wed\u0142ug obci\u0105\u017cenia i miesi\u0119cznie w euro. Gdy NUMA zwi\u0119ksza g\u0119sto\u015b\u0107 maszyn wirtualnych, zmniejszaj\u0105 si\u0119 koszty sta\u0142e na instancj\u0119, a rezerwy mocy rosn\u0105. Ma to wp\u0142yw zar\u00f3wno na licencje na rdze\u0144, jak i na koszty wsparcia technicznego i energii. Ograniczaj\u0105c dost\u0119p zdalny, skraca si\u0119 czas obliczeniowy i oszcz\u0119dza energi\u0119 przy wykonywaniu tych samych zada\u0144. Ostatecznie liczy si\u0119 <strong>Og\u00f3lny bilans<\/strong> w euro za wynik, a nie tylko w euro za serwer.<\/p>\n\n<h2>Prawid\u0142owe odczytywanie topologii sprz\u0119tu i po\u0142\u0105cze\u0144 mi\u0119dzysieciowych<\/h2>\n\n<p>Odnosz\u0119 si\u0119 do fizycznej <strong>Topologia<\/strong> aktywnie uwzgl\u0119dniam w moich planach. Nowoczesne serwery wykorzystuj\u0105 wielocz\u0119\u015bciowe konstrukcje procesor\u00f3w i \u0142\u0105cz\u0105 chiplety lub matryce za pomoc\u0105 interkonekt\u00f3w. Oznacza to, \u017ce nie ka\u017cdy rdze\u0144 ma tak\u0105 sam\u0105 drog\u0119 do ka\u017cdego modu\u0142u pami\u0119ci RAM, a nawet w obr\u0119bie jednego gniazda istniej\u0105 preferowane \u015bcie\u017cki. Im wi\u0119kszy ruch przechodzi przez \u0142\u0105cza mi\u0119dzy gniazdami, tym bardziej wzrastaj\u0105 <strong>Op\u00f3\u017anienie<\/strong> i obci\u0105\u017cenie sp\u00f3jno\u015bci. Sprawdzam zatem, ile kana\u0142\u00f3w pami\u0119ci jest aktywnych na ka\u017cdy w\u0119ze\u0142, czy wszystkie gniazda DIMM s\u0105 wyposa\u017cone symetrycznie i jak w\u0119z\u0142y s\u0105 po\u0142\u0105czone na p\u0142ycie g\u0142\u00f3wnej. Funkcje Sub-NUMA, kt\u00f3re dziel\u0105 w\u0119z\u0142y na mniejsze domeny, mog\u0105 wyr\u00f3wna\u0107 obci\u0105\u017cenia, je\u015bli obci\u0105\u017cenia s\u0105 wyra\u017anie podzielone. Obserwuj\u0119 r\u00f3wnie\u017c <strong>Topologia L3<\/strong>: Je\u015bli w\u0105tki i ich dane znajduj\u0105 si\u0119 w r\u00f3\u017cnych domenach pami\u0119ci podr\u0119cznej, sam transfer pami\u0119ci podr\u0119cznej powoduje zauwa\u017calny spadek wydajno\u015bci. Prosty test przepustowo\u015bci i przegl\u0105d topologii szybko pokazuj\u0105, czy platforma zapewnia oczekiwan\u0105 lokalizacj\u0119, czy te\u017c po\u0142\u0105czenia mi\u0119dzysieciowe staj\u0105 si\u0119 w\u0105skim gard\u0142em.<\/p>\n\n<h2>Opcje oprogramowania uk\u0142adowego i BIOS z efektem<\/h2>\n\n<p>W BIOS-ie upewniam si\u0119, \u017ce <strong>Przeplatanie w\u0119z\u0142\u00f3w<\/strong> jest wy\u0142\u0105czona, aby struktura NUMA pozosta\u0142a widoczna. Klasterowanie sub-NUMA lub podobne tryby stosuj\u0119 celowo, gdy obci\u0105\u017cenia maj\u0105 wiele \u015bredniej wielko\u015bci, wyra\u017anie oddzielonych zada\u0144. Aby uzyska\u0107 sp\u00f3jne op\u00f3\u017anienia, wybieram profile energetyczne zorientowane na wydajno\u015b\u0107, redukuj\u0119 g\u0142\u0119bsze <strong>Stany C<\/strong> i unikaj agresywnego parkowania rdzenia. Optymalizuj\u0119 wyposa\u017cenie pami\u0119ci, aby uzyska\u0107 pe\u0142n\u0105 wydajno\u015b\u0107. <strong>Szeroko\u015b\u0107 pasma kana\u0142u pami\u0119ci<\/strong>; niesymetryczne konfiguracje DIMM maj\u0105 bezpo\u015bredni wp\u0142yw na przepustowo\u015b\u0107 i czas oczekiwania. Sprawdzam r\u00f3wnie\u017c opcje prefetcher i RAS: niekt\u00f3re mechanizmy ochronne zwi\u0119kszaj\u0105 op\u00f3\u017anienia, nie wp\u0142ywaj\u0105c pozytywnie na obci\u0105\u017cenie. Wa\u017cne: ka\u017cd\u0105 zmian\u0119 w BIOS-ie testuj\u0119 przy rzeczywistym obci\u0105\u017ceniu, poniewa\u017c mikroefekty spowodowane przez pami\u0119ci podr\u0119czne i po\u0142\u0105czenia mi\u0119dzykomponentowe cz\u0119sto ujawniaj\u0105 si\u0119 dopiero pod obci\u0105\u017ceniem.<\/p>\n\n<h2>System operacyjny go\u015bcia i dostrajanie \u015brodowiska uruchomieniowego: od pierwszego kontaktu do ogromnych stron<\/h2>\n\n<p>W Gast korzystam z <strong>Pierwsze dotkni\u0119cie<\/strong>-Alokacja na moj\u0105 korzy\u015b\u0107: w\u0105tki inicjuj\u0105 \u201eswoj\u0105\u201c pami\u0119\u0107, aby strony by\u0142y tworzone lokalnie. W systemie Linux w\u0142\u0105czam lub wy\u0142\u0105czam automatyczne r\u00f3wnowa\u017cenie NUMA w zale\u017cno\u015bci od obci\u0105\u017cenia; systemy zwi\u0105zane z bazami danych cz\u0119sto korzystaj\u0105 ze stabilnego po\u0142\u0105czenia, podczas gdy rozproszone procesy internetowe radz\u0105 sobie z niewielkimi migracjami. Za pomoc\u0105 numactl lub task-pinning \u0142\u0105cz\u0119 us\u0142ugi z w\u0119z\u0142ami i definiuj\u0119 <strong>membind<\/strong>-Wytyczne. <strong>Ogromne strony<\/strong> zmniejszam obci\u0105\u017cenie TLB; w przypadku baz danych o krytycznej latencji preferuj\u0119 statyczne ogromne strony i pami\u0119\u0107 ciep\u0142\u0105 (pre-touch), aby unikn\u0105\u0107 szczyt\u00f3w b\u0142\u0119d\u00f3w stron. Przezroczyste ogromne strony obs\u0142uguj\u0119 w zale\u017cno\u015bci od silnika na \u201emadvise\u201c lub wy\u0142\u0105czam, je\u015bli powoduj\u0105 op\u00f3\u017anienia defragmentacji. Steruj\u0119 <strong>Affinities IRQ<\/strong> i rozdzielam przerwania sieciowe i NVMe na odpowiednie w\u0119z\u0142y; RPS\/XPS i wielokrotne kolejki pomagaj\u0105 zachowa\u0107 sp\u00f3jno\u015b\u0107 \u015bcie\u017cek danych. W systemie Windows u\u017cywam grup procesor\u00f3w i Soft-NUMA w stosie, zapewniam \u201eLock Pages in Memory\u201c w przypadku us\u0142ug wymagaj\u0105cych du\u017cej ilo\u015bci pami\u0119ci i aktywuj\u0119 GC serwera w .NET. W przypadku JVM stosuj\u0119 heurystyk\u0119 uwzgl\u0119dniaj\u0105c\u0105 NUMA, stosy pre-touche i kontroluj\u0119 powinowactwo w\u0105tk\u00f3w, aby GC i pracownicy korzystali z tych samych w\u0119z\u0142\u00f3w.<\/p>\n\n<h2>Dok\u0142adne dostosowanie ustawie\u0144 specyficznych dla hiperwizora<\/h2>\n\n<p>Pasuj\u0119. <strong>Topologia vNUMA<\/strong> do struktury fizycznej. Parametry \u201eSockets\u201c, \u201eCores per Socket\u201c i \u201eThreads per Core\u201c wybieram tak, aby hiperwizor nie dzieli\u0142 maszyny wirtualnej na w\u0119z\u0142y. Dla instancji wra\u017cliwych na op\u00f3\u017anienia rezerwuj\u0119 pami\u0119\u0107 RAM, aby nie dosz\u0142o do balonowania ani swappingu, a tak\u017ce zabezpieczam zasoby pCPU poprzez powinowactwo lub odpowiednie opcje harmonogramu. Uwaga przy dodawaniu procesora lub pami\u0119ci na gor\u0105co: wiele platform dezaktywuje w ten spos\u00f3b vNUMA w go\u015bciu \u2013 skutkiem tego s\u0105 ukryte dost\u0119py zdalne. Migracj\u0119 na \u017cywo planuj\u0119 tak, aby hosty docelowe mia\u0142y kompatybiln\u0105 topologi\u0119 NUMA, a po migracji daj\u0119 maszynom wirtualnym czas na <strong>Lokalizacja strony<\/strong> (Pre-Touch, Warmlauf). W \u015brodowiskach KVM korzystam z opcji dostrajania NUMA i cpuset-Cgroups; w innych hiperwizorach pomocne s\u0105 narz\u0119dzia typu exstop\/podobne, kt\u00f3re pozwalaj\u0105 na podgl\u0105d dystrybucji vCPU i trafie\u0144 w\u0119z\u0142\u00f3w w czasie rzeczywistym.<\/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\/2025\/11\/numa_server_workspace_8721.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Nie tra\u0107 lokalizacji PCIe i I\/O<\/h2>\n\n<p>Organizuj\u0119 <strong>NVMe<\/strong>-nap\u0119dy, karty HBA i karty sieciowe do w\u0119z\u0142a, na kt\u00f3rym dzia\u0142aj\u0105 w\u0105tki obliczeniowe. Kolejki SR-IOV lub vNIC \u0142\u0105cz\u0119 z rdzeniami tego samego w\u0119z\u0142a i odpowiednio steruj\u0119 przerwaniami. W przypadku wysokich szybko\u015bci pakiet\u00f3w skaluj\u0119 kolejki odbiorcze\/transmisyjne i rozdzielam je r\u00f3wnomiernie mi\u0119dzy lokalne rdzenie. W przypadku stos\u00f3w pami\u0119ci masowej dbam o to, aby w\u0105tki robocze dla przesy\u0142ania i zako\u0144czenia operacji we\/wy dzia\u0142a\u0142y na tym samym w\u0119\u017ale, tak aby \u015bcie\u017cka danych nie przebiega\u0142a przez po\u0142\u0105czenie mi\u0119dzysieciowe. Planuj\u0119 r\u00f3wnie\u017c wielo\u015bcie\u017ckowo\u015b\u0107 i oprogramowanie RAID specyficzne dla w\u0119z\u0142a; \u201ekr\u00f3tsza\u201c \u015bcie\u017cka prawie zawsze wygrywa z \u201eszersz\u0105\u201c \u015bcie\u017ck\u0105 z dost\u0119pem zewn\u0119trznym. W ten spos\u00f3b redukuj\u0119 jitter i pod obci\u0105\u017ceniem I\/O <strong>czas procesora<\/strong> tam, gdzie ma to znaczenie.<\/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\/2025\/11\/numa-serverrack-7412.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Planowanie wydajno\u015bci, nadmierne przydzielanie zasob\u00f3w i funkcje pami\u0119ci<\/h2>\n\n<p>Preferuj\u0119 obs\u0142ug\u0119 obci\u0105\u017ce\u0144 zorientowanych na op\u00f3\u017anienia bez <strong>Nadmierne zaanga\u017cowanie<\/strong> na pami\u0119\u0107 RAM i umiarkowanie na vCPU. Balonowanie, kompresja i zamiana hiperwizora powoduj\u0105 dost\u0119p zewn\u0119trzny lub szczyty b\u0142\u0119d\u00f3w stron \u2014 w\u0142a\u015bnie tego chc\u0119 unikn\u0105\u0107. Transparent Page Sharing jest nieskuteczny w wielu konfiguracjach i mo\u017ce zaciemnia\u0107 obraz rzeczywistej lokalizacji. Kalibruj\u0119 mieszank\u0119 maszyn wirtualnych tak, aby nie dochodzi\u0142o do kolizji wielu instancji wymagaj\u0105cych du\u017cej przepustowo\u015bci pami\u0119ci na tym samym w\u0119\u017ale. W przypadku silnik\u00f3w pami\u0119ciowych planuj\u0119 hojne <strong>Rezerwacje<\/strong> oraz, tam gdzie to ma sens, ogromne strony w go\u015bciu, kt\u00f3re hiperwizor mo\u017ce przekaza\u0107 dalej. Dzi\u0119ki temu wsp\u00f3\u0142czynnik trafie\u0144 TLB i czasy dost\u0119pu pozostaj\u0105 przewidywalne.<\/p>\n\n<h2>Migracja na \u017cywo i wysoka dost\u0119pno\u015b\u0107<\/h2>\n\n<p>Bior\u0119 pod uwag\u0119, \u017ce <strong>Migracja<\/strong> tymczasowo niszcz\u0119 lokalizacj\u0119 boczn\u0105 maszyny wirtualnej. Po przeniesieniu podgrzewam krytyczne sterty i pozwalam zadaniom w tle odbudowa\u0107 zestawy gor\u0105cych danych. Planuj\u0119 hosta docelowego z podobn\u0105 topologi\u0105 NUMA, aby nie trzeba by\u0142o ponownie dzieli\u0107 vNUMA. W przypadku HA z heterogenicznym sprz\u0119tem ustalam zasady: albo akceptuj\u0119 kr\u00f3tkotrwa\u0142e zwi\u0119kszenie op\u00f3\u017anienia, albo nadaj\u0119 priorytet hostom o kompatybilnej wielko\u015bci w\u0119z\u0142a. Wa\u017cna jest obserwacja po migracji: je\u015bli wzrasta udzia\u0142 stron zdalnych, dostosowuj\u0119 powinowactwa lub uruchamiam pre-faulting, a\u017c do momentu, gdy <strong>Lokalizacja<\/strong> zn\u00f3w pasuje.<\/p>\n\n<h2>Praktyczne wzorce diagnostyczne<\/h2>\n\n<p>Typowe problemy NUMA rozpoznaj\u0119 po kilku wzorcach: procesor \u201eprzegrzewa si\u0119\u201c, ale <strong>Instrukcje na cykl<\/strong> pozostaj\u0105 niskie; op\u00f3\u017anienia pojawiaj\u0105 si\u0119 falami; poszczeg\u00f3lne w\u0105tki blokuj\u0105 dost\u0119p do pami\u0119ci, mimo \u017ce rdzenie s\u0105 wolne. W takich przypadkach sprawdzam zdalne trafienia, wykorzystanie po\u0142\u0105cze\u0144 mi\u0119dzysieciowych, braki TLB i rozk\u0142ad aktywnych w\u0105tk\u00f3w na w\u0119ze\u0142. Koreluj\u0119 obci\u0105\u017cenie przerwaniami z rdzeniami obs\u0142uguj\u0105cymi aplikacj\u0119 i sprawdzam, czy pami\u0119ci podr\u0119czne mi\u0119dzy w\u0119z\u0142ami s\u0105 stale uniewa\u017cniane. Prostym testem kontrolnym jest zmniejszenie maszyny wirtualnej do jednego w\u0119z\u0142a: je\u015bli op\u00f3\u017anienia natychmiast spadn\u0105, przyczyn\u0105 by\u0142o rozpi\u0119to\u015b\u0107 lub harmonogramowanie. Podobnie, dedykowane testy ujawniaj\u0105 przepustowo\u015b\u0107 pami\u0119ci RAM na w\u0119ze\u0142 i pokazuj\u0105, czy spowolnienie wynika z wyposa\u017cenia DIMM lub opcji BIOS.<\/p>\n\n<h2>Lista kontrolna dla praktyki<\/h2>\n\n<ul>\n  <li>Rejestrowanie topologii: w\u0119z\u0142y, kana\u0142y pami\u0119ci, przypisanie PCIe, domeny pami\u0119ci podr\u0119cznej<\/li>\n  <li>Sprawd\u017a BIOS: wy\u0142\u0105cz Node Interleaving, profil energetyczny Performance, C-States p\u0142aski<\/li>\n  <li>Ci\u0119cie maszyn wirtualnych: vCPU na maszyn\u0119 wirtualn\u0105 \u2264 rozmiar w\u0119z\u0142a, vNUMA poprawne, zwr\u00f3\u0107 uwag\u0119 na funkcj\u0119 Hot-Add<\/li>\n  <li>Zabezpiecz pami\u0119\u0107 RAM: rezerwacje dla obci\u0105\u017ce\u0144 op\u00f3\u017anionych, ogromne strony tam, gdzie ma to sens<\/li>\n  <li>Ustawianie powinowactwa: powi\u0105zanie w\u0105tk\u00f3w, IRQ i kolejek we\/wy z tym samym w\u0119z\u0142em<\/li>\n  <li>Kontenery\/modu\u0142y: wykorzystanie powinowactwa w\u0119z\u0142\u00f3w, mened\u017cera procesora i \u015bwiadomo\u015bci topologii<\/li>\n  <li>Spanning tylko w spos\u00f3b ukierunkowany: wspieranie du\u017cych instancji za pomoc\u0105 zasad i monitorowania<\/li>\n  <li>Planowanie migracji: odpowiednia topologia docelowa, pre-touch stos\u00f3w, obserwacja lokalno\u015bci<\/li>\n  <li>Usprawnienie monitorowania: dost\u0119p zdalny, przepustowo\u015b\u0107 na w\u0119ze\u0142, wykorzystanie po\u0142\u0105cze\u0144 mi\u0119dzysieciowych<\/li>\n  <li>Regularne testowanie: sprawdzanie przepustowo\u015bci\/op\u00f3\u017anie\u0144 po zmianie oprogramowania sprz\u0119towego lub hosta<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Odkryj, jak architektura NUMA rewolucjonizuje wydajno\u015b\u0107 serwer\u00f3w i dlaczego jest niezb\u0119dna w nowoczesnym sprz\u0119cie hostingowym. Poznaj najlepsze praktyki i wskaz\u00f3wki dotycz\u0105ce optymalizacji.<\/p>","protected":false},"author":1,"featured_media":15656,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[922],"tags":[],"class_list":["post-15663","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie"],"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":"2436","_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":null,"_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"NUMA-Architektur","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":"15656","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/15663","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=15663"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/15663\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/15656"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=15663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=15663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=15663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}