{"id":21443,"date":"2026-09-16T08:36:31","date_gmt":"2026-09-16T06:36:31","guid":{"rendered":"https:\/\/webhosting.de\/linux-numa-statistiken-auswerten\/"},"modified":"2026-09-16T08:36:31","modified_gmt":"2026-09-16T06:36:31","slug":"analiza-statystyk-numa-w-systemie-linux","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/linux-numa-statistiken-auswerten\/","title":{"rendered":"Jak prawid\u0142owo analizowa\u0107 statystyki NUMA w systemie Linux"},"content":{"rendered":"<p><strong>Linux NUMA<\/strong> Statystyki pokazuj\u0105 mi, jak skutecznie procesy zarz\u0105dzaj\u0105 pami\u0119ci\u0105 lokaln\u0105 oraz gdzie zdalny dost\u0119p powoduje wzrost op\u00f3\u017anie\u0144. Wyja\u015bniam, w jaki spos\u00f3b celowo analizuj\u0119 te dane, oceniam trendy w czasie i na tej podstawie opracowuj\u0119 jasne kroki optymalizacyjne dla <strong>Wydajno\u015b\u0107<\/strong> derive.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<ul>\n  <li><strong>Zrozumie\u0107 liczniki<\/strong>: numa_hit, numa_miss, numa_foreign, local_node, other_node, interleave_hit<\/li>\n  <li><strong>Ocena kontekstu<\/strong>: profil obci\u0105\u017cenia, topologia, typ obci\u0105\u017cenia<\/li>\n  <li><strong>Mierzenie trend\u00f3w<\/strong>: Przed\/po oraz w odst\u0119pach czasu<\/li>\n  <li><strong>Sprawdzanie proces\u00f3w<\/strong>: w ca\u0142ym systemie a w poszczeg\u00f3lnych procesach<\/li>\n  <li><strong>Zastosuj tuning<\/strong>: Affinity, Zasady, Umiejscowienie<\/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\/09\/linux-numa-analyse-8293.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Co naprawd\u0119 pokazuj\u0105 statystyki NUMA<\/h2>\n\n<p>Traktuj\u0119 dane NUMA jako map\u0119 dla <strong>Miejsce przechowywania<\/strong> oraz \u015bcie\u017cki danych. Wysoki <strong>numa_hit<\/strong> oznacza, \u017ce alokacje trafi\u0142y do \u017c\u0105danego w\u0119z\u0142a. Natomiast numa_miss sygnalizuje, \u017ce j\u0105dro musia\u0142o przenie\u015b\u0107 si\u0119 na inny w\u0119ze\u0142. Licznik numa_foreign wskazuje odpowiednik na w\u0119\u017ale docelowym i uzupe\u0142nia obraz sytuacji. Dzi\u0119ki local_node i other_node mog\u0119 stwierdzi\u0107, czy operacje dost\u0119pu pozosta\u0142y lokalne, czy te\u017c wykorzystano pami\u0119\u0107 zdaln\u0105.<\/p>\n\n<p>Warto\u015bci te nie powinny by\u0107 nigdy interpretowane w oderwaniu od kontekstu, poniewa\u017c <strong>Obci\u0105\u017cenia<\/strong> reaguj\u0105 bardzo r\u00f3\u017cnie. Kr\u00f3tkie procesy powoduj\u0105 sporadyczne b\u0142\u0119dy, nie zmieniaj\u0105c jednak w zauwa\u017calny spos\u00f3b og\u00f3lnej wydajno\u015bci. Z kolei zasady interleave\u2019u powoduj\u0105 celowo roz\u0142o\u017cone alokacje, co powoduje wzrost warto\u015bci interleave_hit. Dlatego zawsze sprawdzam zamierzon\u0105 polityk\u0119 i aktualne obci\u0105\u017cenie. Dopiero wtedy decyduj\u0119, czy dana warto\u015b\u0107 wymaga podj\u0119cia dzia\u0142a\u0144, czy te\u017c jest zgodna z za\u0142o\u017ceniami projektu.<\/p>\n\n<p>Dla mnie g\u0142\u00f3wna idea brzmi: <strong>Licznik<\/strong> dostarczaj\u0105 sygna\u0142\u00f3w, a nie ocen. Szukam wzorc\u00f3w w czasie, a nie pojedynczych warto\u015bci. W ten spos\u00f3b rozpoznaj\u0119, czy zmiana w systemie powoduje przesuni\u0119cie lokalizacji. Dopiero na podstawie tego obrazu trend\u00f3w oceniam, czy nale\u017cy przenie\u015b\u0107 procesy, dostosowa\u0107 zasady lub ustawi\u0107 przypisania procesora. Ka\u017cda analiza NUMA rozpoczyna si\u0119 zatem od jasno sformu\u0142owanego pytania i powtarzalnych punkt\u00f3w pomiarowych.<\/p>\n\n<h2>Interpretowanie licznik\u00f3w rdzeniowych w kontek\u015bcie<\/h2>\n\n<p>Zawsze por\u00f3wnuj\u0119 <strong>numa_hit<\/strong> i por\u00f3wna\u0107 ze sob\u0105 numa_miss, zamiast analizowa\u0107 warto\u015bci bezwzgl\u0119dne. Je\u015bli liczba b\u0142\u0119d\u00f3w wzrasta, r\u00f3wnolegle sprawdzam zmiany warto\u015bci numa_foreign na potencjalnym w\u0119\u017ale docelowym. Je\u015bli oba wska\u017aniki s\u0105 ze sob\u0105 zgodne, oznacza to rzeczywiste przeniesienie, a nie zwyk\u0142y artefakt odczytu. local_node i other_node uzupe\u0142niaj\u0105 ten obraz o informacje dotycz\u0105ce faktycznych dost\u0119p\u00f3w. W ten spos\u00f3b rozpoznaj\u0119, czy alokacja rozpocz\u0119\u0142a si\u0119 lokalnie, ale operacja p\u00f3\u017aniej odczytywa\u0142a dane z bardziej odleg\u0142ej pami\u0119ci.<\/p>\n\n<p>Pojedynczy wysoki <strong>other_node<\/strong> Nie przeszkadza mi, gdy obci\u0105\u017cenie jest celowo rozdzielane. Natomiast serwery WWW z du\u017c\u0105 liczb\u0105 proces\u00f3w roboczych zyskuj\u0105 na sp\u00f3jnej lokalizacji. Dlatego przygl\u0105dam si\u0119 procesom, a nie tylko og\u00f3lnemu obrazowi sytuacji. Gdy tylko poszczeg\u00f3lne us\u0142ugi zaczynaj\u0105 si\u0119 wyr\u00f3\u017cnia\u0107, analizuj\u0119 ich rozmieszczenie. Dopiero gdy w ca\u0142ym systemie pojawiaj\u0105 si\u0119 problemy, szukam przyczyn zwi\u0105zanych z topologi\u0105 lub obci\u0105\u017ceniem.<\/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\/09\/linux_numa_meeting_8326.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Por\u00f3wnania w czasie: procedura pomiarowa, kt\u00f3ra si\u0119 sprawdza<\/h2>\n\n<p>Odczytuj\u0119 stany licznik\u00f3w na pocz\u0105tku i na ko\u0144cu <strong>Faza ko\u0144cowa<\/strong> i obliczam r\u00f3\u017cnic\u0119. Pojedyncze warto\u015bci zacieraj\u0105 efekty, natomiast r\u00f3\u017cnice wskazuj\u0105 na zmiany. Powtarzaj\u0105ce si\u0119 interwa\u0142y, na przyk\u0142ad od 30 do 60 sekund, cz\u0119sto wystarczaj\u0105 do rozpoznania trend\u00f3w. Po wdro\u017ceniach, aktualizacjach j\u0105dra lub zmianach sprz\u0119towych ponownie por\u00f3wnuj\u0119 te same interwa\u0142y. Je\u015bli w\u00f3wczas pojawi si\u0119 wi\u0119cej b\u0142\u0119d\u00f3w lub warto\u015b\u0107 local_node ulegnie przesuni\u0119ciu, oznacza to rzeczywist\u0105 zmian\u0119.<\/p>\n\n<p>Takie szeregi czasowe obejmuj\u0105 <strong>B\u0142\u0105d w rozmieszczeniu<\/strong> szybciej ni\u017c na podstawie pojedynczych migawek. Koreluj\u0119 te linie z obci\u0105\u017ceniem procesora, zmianami kontekstu i zaj\u0119to\u015bci\u0105 pami\u0119ci na w\u0119ze\u0142. Dzi\u0119ki temu widz\u0119, czy w\u0105skie gard\u0142a w pami\u0119ci RAM danego w\u0119z\u0142a prowadz\u0105 do dzia\u0142a\u0144 zast\u0119pczych. Albo czy nowe procesy zaburzaj\u0105 r\u00f3wnowag\u0119 w w\u0119z\u0142ach. Sam stosunek trafie\u0144 do pomy\u0142ek przedstawiam zawsze jako wykres, a nie jako pojedyncz\u0105 liczb\u0119.<\/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\/09\/linux-numa-stat-analysis-4857.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Sprawd\u017a w ca\u0142ym systemie, a nast\u0119pnie przyjrzyj si\u0119 bli\u017cej procesom<\/h2>\n\n<p>Zaczn\u0119 od og\u00f3lnego przegl\u0105du sytuacji <strong>numastat<\/strong> i dopiero potem sprawdzam poszczeg\u00f3lne procesy. Taka kolejno\u015b\u0107 pozwala zaoszcz\u0119dzi\u0107 czas, poniewa\u017c wiele efekt\u00f3w staje si\u0119 widocznych globalnie. W widoku proces\u00f3w korzystam z wy\u015bwietlania specyficznego dla danego procesu, aby wyodr\u0119bni\u0107 us\u0142ugi, kt\u00f3re rzucaj\u0105 si\u0119 w oczy. Gdy tylko zidentyfikuj\u0119 potencjalne przyczyny, dostosowuj\u0119 <strong>Umieszczenie<\/strong> dotycz\u0105ce obci\u0105\u017cenia procesora i pami\u0119ci. Praktyczne wskaz\u00f3wki na ten temat zawarto w artykule po\u015bwi\u0119conym <a href=\"https:\/\/webhosting.de\/pl\/serwer-numa-lokalnosc-cpu-powinowactwo-pamieci-optymalizacja-rdzen\/\">Afiniowo\u015b\u0107 procesora i pami\u0119ci<\/a>.<\/p>\n\n<p>Zw\u0142aszcza w przypadku us\u0142ug Java, PHP-FPM lub baz danych cz\u0119sto wystarczy czysta <strong>Affinity<\/strong>, aby znacznie zmniejszy\u0107 liczb\u0119 b\u0142\u0119d\u00f3w. Orkiestracja kontener\u00f3w cz\u0119sto maskuje te problemy, poniewa\u017c harmonogramy rozdzielaj\u0105 zasoby bez uwzgl\u0119dnienia architektury NUMA. Dlatego sprawdzam przypisanie w\u0119z\u0142\u00f3w dla ka\u017cdego poda lub maszyny wirtualnej. Gdy zestawy procesor\u00f3w i przydzia\u0142 pami\u0119ci RAM s\u0105 zgodne, warto\u015b\u0107 local_node wyra\u017anie wzrasta. Niekt\u00f3re problemy rozwi\u0105zuj\u0105 si\u0119, gdy proces dzia\u0142a w pobli\u017cu wymaganego zestawu danych.<\/p>\n\n<h2>Przegl\u0105d licznik\u00f3w NUMA (tabela)<\/h2>\n\n<p>Poni\u017csz\u0105 tabel\u0119 wype\u0142niam podczas oceny nowego systemu, aby m\u00f3c sprawdzi\u0107 ka\u017cd\u0105 <strong>Kluczowa liczba<\/strong> szybko j\u0105 klasyfikuj\u0119. Przedstawia ona znaczenie, typow\u0105 interpretacj\u0119 i mo\u017cliwe dzia\u0142ania. Nie traktuj\u0119 jej jako sztywnego schematu, lecz jako list\u0119 kontroln\u0105. Kluczowe znaczenie ma por\u00f3wnanie z profilem obci\u0105\u017cenia i topologi\u0105 serwer\u00f3w. Dopiero w tym kontek\u015bcie podejmuj\u0119 sensown\u0105 decyzj\u0119.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>Licznik<\/strong><\/th>\n      <th><strong>Znaczenie<\/strong><\/th>\n      <th><strong>Interpretacja<\/strong><\/th>\n      <th><strong>Podej\u015bcie<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>numa_hit<\/td>\n      <td>Alokacja w wybranym w\u0119\u017ale<\/td>\n      <td>Wysoka warto\u015b\u0107 jest pozytywna<\/td>\n      <td>Utrzymanie pozycji<\/td>\n    <\/tr>\n    <tr>\n      <td>numa_miss<\/td>\n      <td>Alokacja zosta\u0142a przeniesiona na inne w\u0119z\u0142y<\/td>\n      <td>Zwi\u0119kszone ryzyko op\u00f3\u017anie\u0144<\/td>\n      <td>Sprawd\u017a zgodno\u015b\u0107\/polityk\u0119<\/td>\n    <\/tr>\n    <tr>\n      <td>numa_foreign<\/td>\n      <td>Alokacja obca w tym w\u0119\u017ale<\/td>\n      <td>Odpowiednik numa_miss<\/td>\n      <td>Analiza w\u0119z\u0142\u00f3w docelowych<\/td>\n    <\/tr>\n    <tr>\n      <td>local_node<\/td>\n      <td>Dost\u0119p do pami\u0119ci lokalnej<\/td>\n      <td>Im wy\u017cej, tym taniej<\/td>\n      <td>Proces bli\u017cej pami\u0119ci RAM<\/td>\n    <\/tr>\n    <tr>\n      <td>other_node<\/td>\n      <td>Dost\u0119p do pami\u0119ci zdalnej<\/td>\n      <td>To po prostu budzi obawy, cho\u0107 nie jest zamierzone<\/td>\n      <td>Sprawd\u017a topologi\u0119\/obci\u0105\u017cenie<\/td>\n    <\/tr>\n    <tr>\n      <td>interleave_hit<\/td>\n      <td>Wyniki dla rozk\u0142adu typu interleave<\/td>\n      <td>Oczekiwane w przypadku polityki interleave<\/td>\n      <td>Ocena r\u00f3wnomierno\u015bci<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Dzi\u0119ki temu <strong>Przegl\u0105d<\/strong> szybciej podejmuj\u0119 decyzj\u0119, kiedy nale\u017cy podj\u0105\u0107 dzia\u0142ania. Wzrost warto\u015bci numa_miss bez wyra\u017anej przyczyny powoduje rozpocz\u0119cie analizy przyczyn. Je\u015bli warto\u015bci interleave_hit pozostaj\u0105 wysokie, sprawdzam, czy polityka jest aktywna zgodnie z zamierzeniami. Je\u015bli warto\u015b\u0107 other_node ro\u015bnie bez wzrostu obci\u0105\u017cenia, sprawdzam, czy nie wyst\u0119puj\u0105 obci\u0105\u017cenia wypieraj\u0105ce. W ten spos\u00f3b tabela staje si\u0119 punktem wyj\u015bcia do podj\u0119cia ukierunkowanych dzia\u0142a\u0144.<\/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\/09\/NUMA_Statistik_Auswertung_1023.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Zrozumienie i wykorzystanie topologii NUMA<\/h2>\n\n<p>Zanim zaczn\u0119 tuningowa\u0107, sprawdzam <strong>Topologia<\/strong> serwera: gniazda, rdzenie, kana\u0142y pami\u0119ci, \u015bcie\u017cki op\u00f3\u017anie\u0144. Je\u015bli proces dzia\u0142a na gnie\u017adzie 0, ale utrzymuje bloki danych na gnie\u017adzie 1, wyd\u0142u\u017ca si\u0119 czas dost\u0119pu. Obni\u017ca to przepustowo\u015b\u0107 i powoduje wahania czas\u00f3w odpowiedzi. Us\u0142ugi wymagaj\u0105ce du\u017cej ilo\u015bci pami\u0119ci szczeg\u00f3lnie odczuwaj\u0105 ka\u017cdy niepotrzebny dystans. Dlatego procesy intensywnie wykorzystuj\u0105ce dane przypisuj\u0119 do w\u0119z\u0142\u00f3w z wystarczaj\u0105c\u0105 ilo\u015bci\u0105 wolnej pami\u0119ci RAM.<\/p>\n\n<p>Asymetryczne <strong>Po\u0142\u0105czenia<\/strong> wzmacniaj\u0105 te efekty, na przyk\u0142ad gdy w\u0119ze\u0142 wykorzystuje mniej kana\u0142\u00f3w. W takich przypadkach celowo przenosz\u0119 buforowane dane, zamiast rozdziela\u0107 proces. Konfiguruj\u0119 hosty maszyn wirtualnych i kontener\u00f3w w taki spos\u00f3b, aby ka\u017cda instancja mia\u0142a sp\u00f3jne przypisanie do w\u0119z\u0142a. W ten spos\u00f3b ograniczam zdalny ruch danych bez konieczno\u015bci stosowania limit\u00f3w przepustowo\u015bci. Ograniczenia wyznacza fizyka maszyny, a ja si\u0119 ich trzymam.<\/p>\n\n<h2>W\u0142a\u015bciwe zrozumienie poj\u0119\u0107 \u201einterleave\u201d i \u201ebalancing\u201d<\/h2>\n\n<p>Zasady przeplatania celowo rozdzielaj\u0105 pami\u0119\u0107 mi\u0119dzy w\u0119z\u0142ami, tak aby <strong>Przepustowo\u015b\u0107<\/strong> wzrasta na proces lub malej\u0105 punkty newralgiczne. W tej konfiguracji wysokie warto\u015bci interleave_hit s\u0105 po\u017c\u0105dane. Sprawdzam wtedy przede wszystkim r\u00f3wnomierno\u015b\u0107, a nie bezwzgl\u0119dn\u0105 lokalno\u015b\u0107. AutoNUMA lub r\u00f3wnowa\u017cenie NUMA mog\u0105 pom\u00f3c, ale nie w ka\u017cdej sytuacji.<\/p>\n\n<p>W zale\u017cno\u015bci od sytuacji decyduj\u0119, czy automatyczne <strong>R\u00f3wnowa\u017cenie<\/strong> pozostaje aktywna. W przypadku sp\u00f3jnych, d\u0142ugotrwa\u0142ych us\u0142ug raczej stosuj\u0119 sta\u0142e powi\u0105zania. W przypadku zmiennych obci\u0105\u017ce\u0144 AutoNUMA mo\u017ce reagowa\u0107 w odpowiedni spos\u00f3b. Dobry przegl\u0105d korzy\u015bci i zagro\u017ce\u0144 znajduje si\u0119 w artykule <a href=\"https:\/\/webhosting.de\/pl\/wylaczyc-lub-pozostawic-wlaczona-funkcje-numa-balancing-aby-uzyskac-optymalna-wydajnosc-systemu-linux\/\">R\u00f3wnowa\u017cenie NUMA<\/a>. Dopiero gdy cel i ramy s\u0105 jasno okre\u015blone, wybieram odpowiedni tryb.<\/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\/09\/NUMA_Statistik_Auswertung_1023.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wzorce obci\u0105\u017cenia: bazy danych, maszyny wirtualne, us\u0142ugi internetowe<\/h2>\n\n<p>Bazy danych s\u0105 wra\u017cliwe na <strong>Op\u00f3\u017anienie<\/strong> mi\u0119dzy procesorem a pami\u0119ci\u0105 RAM. Dlatego utrzymuj\u0119 instancj\u0119, pami\u0119\u0107 buforow\u0105 oraz aktywne fragmenty na tym samym w\u0119\u017ale. Maszyny wirtualne korzystaj\u0105 z jasno zdefiniowanych zestaw\u00f3w procesor\u00f3w oraz pami\u0119ci RAM w\u0119z\u0142a, dzi\u0119ki czemu systemy operacyjne go\u015bci widz\u0105 sp\u00f3jne \u015bcie\u017cki. Us\u0142ugi internetowe z du\u017c\u0105 liczb\u0105 pracownik\u00f3w dzia\u0142aj\u0105 najlepiej, gdy grupy pracownik\u00f3w pozostaj\u0105 przypisane do jednego w\u0119z\u0142a. W przypadku strategii pami\u0119ciowej stosuj\u0119, w zale\u017cno\u015bci od sytuacji, ukierunkowane <a href=\"https:\/\/webhosting.de\/pl\/zasady-pamieci-numa-serwer-baz-danych-optymalizacja-serwer\/\">Zasady dotycz\u0105ce pami\u0119ci NUMA<\/a>.<\/p>\n\n<p>Natomiast zadania analityczne i du\u017ce skanowania wykonuj\u0119 cz\u0119\u015bciowo <strong>rozdzielone<\/strong> . W tym przypadku interleave cz\u0119sto zapewnia lepsz\u0105 przepustowo\u015b\u0107 ni\u017c \u015bcis\u0142a lokalno\u015b\u0107. Wa\u017cne jest, aby obiektywnie przyjrze\u0107 si\u0119 wzorcom operacji wej\u015bcia\/wyj\u015bcia (IO) danego obci\u0105\u017cenia. Zapisy dominuj\u0105 w inny spos\u00f3b ni\u017c odczyty, a dost\u0119py losowe r\u00f3\u017cni\u0105 si\u0119 od sekwencyjnych. Wybieram strategi\u0119, kt\u00f3ra pasuje do wzorca dost\u0119pu, a nie t\u0119, kt\u00f3ra brzmi dobrze w podr\u0119czniku.<\/p>\n\n<h2>Praktyczna procedura pomiarowa i narz\u0119dzia<\/h2>\n\n<p>Na pocz\u0105tek wystarczy mi <strong>numastat<\/strong> oraz widok procesu. Rejestruj\u0119 stany licznik\u00f3w wraz z dat\u0105, numerem PID i wska\u017anikami obci\u0105\u017cenia. Wa\u017cne jest, aby pomiary przeprowadza\u0107 w identycznych przedzia\u0142ach czasowych. Pozwala to na dok\u0142adne odzwierciedlenie r\u00f3\u017cnic przed i po zmianie. W okresach produkcyjnych odnotowuj\u0119 te r\u00f3\u017cnice i koreluj\u0119 je z datami wydania aktualizacji.<\/p>\n\n<p>W przypadku widocznych <strong>Us\u0142ugi<\/strong> Dodatkowo sprawdzam obci\u0105\u017cenie procesora i widok w\u0119z\u0142\u00f3w za pomoc\u0105 narz\u0119dzi takich jak lscpu, numactl oraz widok perf dotycz\u0105cy obci\u0105\u017cenia zdalnego. W ka\u017cdym cyklu pomiarowym dokumentuj\u0119 wybran\u0105 polityk\u0119. Po wprowadzeniu zmiany ponownie wykonuj\u0119 pomiary. Dopiero gdy linie trendu ustabilizuj\u0105 si\u0119, oceniam efekt jako udany. \u015alepe prze\u0142\u0105czanie cz\u0119sto prowadzi do pozornych popraw.<\/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\/09\/linux_numa_auswertung_7463.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak unikn\u0105\u0107 cz\u0119stych b\u0142\u0119d\u00f3w w interpretacji<\/h2>\n\n<p>Wysoki <strong>interleave_hit<\/strong> nie jest b\u0142\u0119dem, je\u015bli funkcja Interleave jest celowo aktywna. Podobnie pojedynczy b\u0142\u0105d przy d\u0142ugim czasie dzia\u0142ania jest nieistotny. Zawsze sprawdzam g\u0119sto\u015b\u0107 i rozk\u0142ad w ca\u0142ym przedziale czasowym, a nie tylko warto\u015bci szczytowe. Niekt\u00f3rzy interpretuj\u0105 warto\u015b\u0107 \u201eother_node\u201d jako og\u00f3lnie negatywn\u0105 i pomijaj\u0105 charakter obci\u0105\u017cenia. Dlatego najpierw analizuj\u0119 cel projektowy, a dopiero potem oceniam dane liczbowe.<\/p>\n\n<p>Kolejny b\u0142\u0105d: <strong>Widok og\u00f3lny<\/strong> No c\u00f3\u017c, w sumie wszystko w porz\u0105dku. Cz\u0119sto warto\u015bci odstaj\u0105ce wyst\u0119puj\u0105 tylko w niekt\u00f3rych PID-ach. Albo harmonogram kontener\u00f3w rozdziela pody mi\u0119dzy w\u0119z\u0142ami, mimo \u017ce sensowniejsze by\u0142oby utworzenie lokalnej grupy. Takie zjawiska dostrzegam dopiero wtedy, gdy dokonuj\u0119 pomiar\u00f3w dla poszczeg\u00f3lnych proces\u00f3w. Bez takiej szczeg\u00f3\u0142owo\u015bci analiza pozostaje niekompletna.<\/p>\n\n<h2>Skuteczne zabiegi tuningowe<\/h2>\n\n<p>Zaczynam od <strong>Umieszczenie<\/strong>: Procesy na w\u0119z\u0142ach, na kt\u00f3rych znajduj\u0105 si\u0119 lub powinny znajdowa\u0107 si\u0119 dane. Nast\u0119pnie ustawiam powinowactwo procesora (CPU affinity), aby w\u0105tki nie przeskakiwa\u0142y mi\u0119dzy gniazdami. Kolejnym krokiem jest przypisanie pami\u0119ci, aby j\u0105dro przydziela\u0142o j\u0105 w \u017c\u0105danym miejscu. W przypadku zmiennych obci\u0105\u017ce\u0144 sprawdzam zasady i, je\u015bli to odpowiednie, w\u0142\u0105czam AutoNUMA.<\/p>\n\n<p>Nast\u0119pnie zadbam o <strong>Sp\u00f3jno\u015b\u0107<\/strong> W cyklu \u017cycia: ponowne uruchomienia, wdro\u017cenia i skalowanie nie mog\u0105 przypadkowo zmienia\u0107 powi\u0105za\u0144 w\u0119z\u0142\u00f3w. Dokumentuj\u0119 powi\u0105zania w kodzie, aby zachowa\u0107 ich powtarzalno\u015b\u0107. Nast\u0119pnie ponownie dokonuj\u0119 pomiar\u00f3w, oceniam r\u00f3\u017cnice i podejmuj\u0119 decyzj\u0119 o dopracowaniu. Ka\u017cda zmiana zas\u0142uguje na jasny dow\u00f3d w postaci pomiar\u00f3w.<\/p>\n\n<h2>Przyk\u0142ad z praktyki: Od pora\u017cki do sukcesu<\/h2>\n\n<p>Za\u0142\u00f3\u017cmy, \u017ce pewna <strong>Baza danych<\/strong> pod obci\u0105\u017ceniem wykazuje wy\u017csz\u0105 warto\u015b\u0107 numa_miss i rosn\u0105c\u0105 warto\u015b\u0107 other_node. Op\u00f3\u017anienia zapyta\u0144 ulegaj\u0105 wi\u0119kszym wahaniom. Najpierw sprawdzam przypisanie proces\u00f3w i stwierdzam, \u017ce po wdro\u017ceniu us\u0142uga dzia\u0142a na w\u0119\u017ale A, ale pami\u0119\u0107 podr\u0119czna zosta\u0142a przydzielona do w\u0119z\u0142a B. Po sta\u0142ym przypisaniu procesora i pami\u0119ci do w\u0119z\u0142a B stosunek ten ulega odwr\u00f3ceniu: wska\u017anik numa_hit ro\u015bnie, a liczba nieudanych trafie\u0144 maleje. Czasy odpowiedzi staj\u0105 si\u0119 bardziej stabilne, a obci\u0105\u017cenie procesora nieznacznie spada, poniewa\u017c eliminowane s\u0105 dost\u0119py zdalne.<\/p>\n\n<p>R\u00f3wnolegle sprawdzam <strong>Polityka<\/strong>. Funkcja Interleave by\u0142a przypadkowo w\u0142\u0105czona i rozdziela\u0142a przydzia\u0142y pami\u0119ci. Po prze\u0142\u0105czeniu na preferowany w\u0119ze\u0142 pami\u0119\u0107 podr\u0119czna pozostaje zamkni\u0119ta lokalnie. Po godzinie pomiar\u00f3w r\u00f3\u017cnice potwierdzaj\u0105 popraw\u0119. Dopiero wtedy uznaj\u0119 to dostrojenie za sukces. Bez tej dodatkowej weryfikacji chwilowy odczyt m\u00f3g\u0142by wprowadzi\u0107 w b\u0142\u0105d.<\/p>\n\n<h2>Wska\u017aniki i warto\u015bci orientacyjne w praktyce<\/h2>\n\n<p>Przy podejmowaniu decyzji korzystam z niezawodnych <strong>Szanse<\/strong> zamiast pojedynczych warto\u015bci surowych. Dla ka\u017cdego procesu obliczam wska\u017anik alokacji local_alloc = numa_hit \/ (numa_hit + numa_miss). Dodatkowo analizuj\u0119 <strong>Wska\u017anik dost\u0119pno\u015bci<\/strong> local_access = local_node \/ (local_node + other_node). Oba wska\u017aniki razem pokazuj\u0105, czy pami\u0119\u0107 pozostaje wykorzystywana lokalnie r\u00f3wnie\u017c po alokacji. Jako orientacyjne warto\u015bci przyjmuj\u0119: w przypadku us\u0142ug, dla kt\u00f3rych op\u00f3\u017anienie ma kluczowe znaczenie, d\u0105\u017c\u0119 do tego, by dost\u0119p zdalny wynosi\u0142 poni\u017cej 5\u201310 %. W przypadku obci\u0105\u017ce\u0144 analitycznych zwi\u0105zanych z przepustowo\u015bci\u0105 dopuszczam 20\u201330 %, o ile wzrasta przepustowo\u015b\u0107. Decyduj\u0105ce znaczenie ma <strong>Stabilno\u015b\u0107<\/strong> w czasie. Wol\u0119 warto\u015b\u0107, kt\u00f3ra pozostaje stabilna pod obci\u0105\u017ceniem, ni\u017c kr\u00f3tki skok z idealnymi wynikami. Dokumentuj\u0119 te przedzia\u0142y docelowe dla ka\u017cdego przegl\u0105du, aby p\u00f3\u017aniejsze pomiary mo\u017cna by\u0142o jednoznacznie zaklasyfikowa\u0107.<\/p>\n\n<h2>Cgroups, kontenery i pu\u0142apki zwi\u0105zane z harmonogramowaniem<\/h2>\n\n<p>W \u015brodowiskach kontenerowych najpierw sprawdzam <strong>zestaw procesor\u00f3w<\/strong>\u2011Przypisanie: zestawy procesor\u00f3w i <em>cpuset.mems<\/em> musz\u0105 obejmowa\u0107 t\u0119 sam\u0105 przestrze\u0144 w\u0119z\u0142\u00f3w, w przeciwnym razie nieuchronnie pojawi\u0105 si\u0119 b\u0142\u0119dy. Dbam o to, aby pody ze sta\u0142ymi \u017c\u0105daniami procesora nie by\u0142y rozdzielane na kilka w\u0119z\u0142\u00f3w NUMA oraz aby harmonogram nie rozdziela\u0142 proces\u00f3w roboczych tej samej aplikacji mi\u0119dzy r\u00f3\u017cne w\u0119z\u0142y. W przypadku typ\u00f3w typu burst ograniczam maksymaln\u0105 liczb\u0119 w\u0105tk\u00f3w na pod tak, aby mie\u015bci\u0142y si\u0119 one w obr\u0119bie jednego w\u0119z\u0142a. Dokumentuj\u0119 <strong>Domena NUMA<\/strong> na wdro\u017cenie i wymagam sp\u00f3jnych replik (jedna grupa robot\u00f3w na w\u0119ze\u0142, a nie po\u0142\u00f3wki grup roz\u0142o\u017cone na dwa w\u0119z\u0142y). Je\u015bli zbyt w\u0105sko oblicz\u0119 wielko\u015b\u0107 pami\u0119ci na ka\u017cdy pod, narzuc\u0119 sobie niechcian\u0105 presj\u0119: niewielki zapas na ka\u017cdy w\u0119ze\u0142 zapobiega sytuacji, w kt\u00f3rej j\u0105dro musi przedwcze\u015bnie prze\u0142\u0105cza\u0107 si\u0119 na inne w\u0119z\u0142y. Je\u015bli kontenery s\u0105 cz\u0119sto restartowane, zwracam uwag\u0119 na deterministyczne przypisanie, aby <strong>Zimny start<\/strong> nie dosta\u0107 przez przypadek gorszej lokalizacji.<\/p>\n\n<h2>Sp\u00f3jne dostosowanie maszyn wirtualnych i vNUMA<\/h2>\n\n<p>W przypadku maszyn wirtualnych skupiam swoj\u0105 uwag\u0119 na <strong>vNUMA<\/strong>: Topologia wirtualna musi odpowiada\u0107 topologii fizycznej. Rozdzielam procesory vCPU w taki spos\u00f3b, aby ka\u017cdy w\u0119ze\u0142 vNUMA znajdowa\u0142 si\u0119 dok\u0142adnie na jednym fizycznym w\u0119\u017ale NUMA. Po stronie hosta przypisuj\u0119 w\u0105tki QEMU\/hypervisora do tej domeny i upewniam si\u0119, \u017ce przydzielona pami\u0119\u0107 RAM jest w ca\u0142o\u015bci udost\u0119pniana z tego w\u0119z\u0142a. <strong>Baloniarstwo<\/strong> A w przypadku maszyn wirtualnych, dla kt\u00f3rych op\u00f3\u017anienia maj\u0105 kluczowe znaczenie, z rezerw\u0105 akceptuj\u0119 overcommit; agresywne ballooning mo\u017ce wyprze\u0107 zestawy \u201ehot\u201d z w\u0119z\u0142a i spowodowa\u0107 wzrost liczby dost\u0119p\u00f3w zdalnych. W przypadku migracji na \u017cywo po przeniesieniu ponownie weryfikuj\u0119 przypisania \u2013 niekt\u00f3re \u015brodowiska trac\u0105 przy tym precyzyjnie skonfigurowane przypisania procesora i pami\u0119ci. Dopiero gdy wyr\u00f3wnanie vNUMA jest prawid\u0142owe, oceniam numastat w ca\u0142ym systemie: w przeciwnym razie naprawiam objawy, a nie przyczyn\u0119.<\/p>\n\n<h2>THP, Hugepages i migracja stron<\/h2>\n\n<p><strong>Przejrzyste ogromne strony<\/strong> (THP) mog\u0105 zar\u00f3wno pomaga\u0107, jak i przeszkadza\u0107. Wi\u0119ksze strony zmniejszaj\u0105 liczb\u0119 b\u0142\u0119d\u00f3w TLB i poprawiaj\u0105 przepustowo\u015b\u0107, jednak je\u015bli j\u0105dro dopiero p\u00f3\u017ano wdro\u017cy obs\u0142ug\u0119 Hugepages <em>zawali\u0142 si\u0119<\/em> lub przeniesione, mog\u0105 pojawi\u0107 si\u0119 nieodpowiednie <strong>Odleg\u0142o\u015bci dalekie<\/strong> powstaj\u0105. Trzymam si\u0119 dw\u00f3ch zasad: po pierwsze, <strong>Polityka<\/strong> wyra\u017anie zdefiniowa\u0107 (np. preferowany w\u0119ze\u0142) i w miar\u0119 mo\u017cliwo\u015bci od samego pocz\u0105tku przydziela\u0107 du\u017ce zasoby lokalnie. Po drugie, w przypadku obci\u0105\u017ce\u0144 z ustalonymi, du\u017cymi pami\u0119ciami podr\u0119cznymi, w miar\u0119 mo\u017cliwo\u015bci ustawiam statyczne strony typu hugepage (hugetlb), kt\u00f3re wyra\u017anie rezerwuj\u0119 na jednym w\u0119\u017ale. Zmniejsza to fragmentacj\u0119 i ruchy kompensacyjne. Je\u015bli na wykresach czasowych zauwa\u017c\u0119, \u017ce po d\u0142u\u017cszym czasie dzia\u0142ania <em>other_node<\/em>\u2013 wzrasta udzia\u0142, sprawdzam, czy <strong>Migracja stron<\/strong> czy nast\u0119puje kompresja i czy ustawienia THP pasuj\u0105 do danego wzorca. Dla mnie wa\u017cne jest, aby nie wy\u0142\u0105cza\u0107 ani nie w\u0142\u0105cza\u0107 tej funkcji globalnie \u2013 podejmuj\u0119 decyzj\u0119 dla ka\u017cdej us\u0142ugi z osobna i mierz\u0119 wp\u0142yw na lokalno\u015b\u0107 oraz op\u00f3\u017anienie.<\/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\/09\/linux-numa-analyse-4746.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak prawid\u0142owo interpretowa\u0107 wska\u017aniki \u201eReclaim\u201d, \u201eSwap\u201d i \u201eMemory\u2011Pressure\u201d<\/h2>\n\n<p>Je\u015bli wyniki rosn\u0105 bez widocznej zmiany pozycji, szukam <strong>ci\u015bnienie w zbiorniku<\/strong> na w\u0119ze\u0142. Pe\u0142ne w\u0119z\u0142y zmuszaj\u0105 j\u0105dro do odzyskiwania pami\u0119ci i kompakcji, cz\u0119\u015bciowo wywo\u0142anych przez <em>kswapd<\/em> na innym w\u0119\u017ale \u2013 powoduje to skutki uboczne w licznikach. Sprawdzam dla ka\u017cdego w\u0119z\u0142a ilo\u015b\u0107 wolnej pami\u0119ci oraz obci\u0105\u017cenie pami\u0119ci podr\u0119cznej stron. W\u0142\u0105czone <strong>Zamiana<\/strong> mo\u017ce wypiera\u0107 hot sety i spowodowa\u0107 gwa\u0142towny wzrost op\u00f3\u017anie\u0144; w przypadku szczeg\u00f3lnie wra\u017cliwych us\u0142ug wy\u0142\u0105czam swap lub \u015bci\u015ble go ograniczam. W logach i widokach perf szukam szczyt\u00f3w odzyskiwania pami\u0119ci podczas szczyt\u00f3w obci\u0105\u017cenia. Celem jest zapewnienie wystarczaj\u0105cej ilo\u015bci wolnej, <strong>lokalne<\/strong> Utrzymywanie pami\u0119ci RAM w w\u0119\u017ale docelowym, aby alokacje nie ulega\u0142y przesuni\u0119ciu. Je\u015bli w tym celu konieczne jest zmniejszenie rozmiaru pami\u0119ci podr\u0119cznej, nadaj\u0119 priorytet zestawowi roboczemu us\u0142ugi wzgl\u0119dem og\u00f3lnej pami\u0119ci podr\u0119cznej stron.<\/p>\n\n<h2>Praktyczne polecenia i analiza wynik\u00f3w<\/h2>\n\n<p>W widoku procesu korzystam z <code>numastat -p<\/code> i dodaj\u0119: <code>cat \/proc\/\/numa_maps<\/code>, aby wy\u015bwietli\u0107 przydzia\u0142y wed\u0142ug obszaru (anonimowe, oparte na plikach) oraz wed\u0142ug w\u0119z\u0142a. <code>numactl --hardware<\/code> podaje mi macierze op\u00f3\u017anie\u0144 i rozmiary w\u0119z\u0142\u00f3w, <code>lscpu --extended<\/code> pokazuje przypisanie procesora do w\u0119z\u0142\u00f3w. W przypadku operacji dost\u0119pu do pami\u0119ci, w kt\u00f3rych nacisk k\u0142adzie si\u0119 na \u015bcie\u017cki zdalne, ustawiam <code>pami\u0119\u0107 perf<\/code> w celu weryfikacji wzorc\u00f3w obci\u0105\u017cenia. Dane delta gromadz\u0119 w spos\u00f3b powtarzalny, np.:<\/p>\n\n<p><em>Procedura pomiaru<\/em><\/p>\n<ul>\n  <li>t0: numastat (og\u00f3\u0142em) oraz numastat -p w celu utworzenia kopii zapasowej najlepszych PID-\u00f3w<\/li>\n  <li>30\u201360 s pracy pod obci\u0105\u017ceniem, identyczna faza obci\u0105\u017cenia<\/li>\n  <li>t1: ponowne odczytanie numastatu, obliczenie warto\u015bci delta dla ka\u017cdego licznika<\/li>\n  <li>Rejestrowanie warto\u015bci procesora r\u00f3wnoleg\u0142ego, zmian kontekstu oraz pami\u0119ci w\u0119z\u0142a<\/li>\n<\/ul>\n\n<p>Nast\u0119pnie obliczam <strong>Szanse<\/strong> i zaznaczam, kt\u00f3re procesy znacznie odbiegaj\u0105 od trend\u00f3w og\u00f3lnosystemowych. W przypadku utrzymuj\u0105cej si\u0119 niepewno\u015bci powtarzam pomiar co najmniej trzy razy. Jedynie sp\u00f3jne odchylenia uznaj\u0119 za wiarygodne. W celu ci\u0105g\u0142ego monitorowania mapuj\u0119 liczniki na szeregi czasowe i \u0142\u0105cz\u0119 je z metadanymi wersji \u2013 w ten spos\u00f3b rozpoznaj\u0119 <strong>Punkty regresji<\/strong> natychmiast.<\/p>\n\n<h2>Lista kontrolna dotycz\u0105ca systematycznego dostrajania NUMA<\/h2>\n\n<ul>\n  <li>Okre\u015blenie celu: op\u00f3\u017anienie a przepustowo\u015b\u0107, obci\u0105\u017cenie sta\u0142e a zmienne<\/li>\n  <li>Analiza topologii: w\u0119z\u0142y, op\u00f3\u017anienia, wolne zasoby pami\u0119ci RAM na w\u0119ze\u0142<\/li>\n  <li>Pomiar warto\u015bci bazowych: numastat og\u00f3\u0142em i w podziale na procesy, obliczenie wska\u017anik\u00f3w<\/li>\n  <li>Korekta przypisania: powinowactwo procesora, przypisanie pami\u0119ci, zasady<\/li>\n  <li>Konfiguracja kontener\u00f3w\/maszyn wirtualnych: cpuset.cpus = w\u0119ze\u0142, cpuset.mems odpowiednio; prawid\u0142owe mapowanie vNUMA<\/li>\n  <li>\u015awiadomy wyb\u00f3r THP\/Hugepages, z uwzgl\u0119dnieniem fragmentacji<\/li>\n  <li>Zmniejszenie obci\u0105\u017cenia pami\u0119ci: sprawdzi\u0107 rezerw\u0119 pami\u0119ci dla ka\u017cdego w\u0119z\u0142a oraz strategi\u0119 wymiany<\/li>\n  <li>Pomiar kontrolny: por\u00f3wnanie warto\u015bci delta, zapewnienie stabilno\u015bci w czasie<\/li>\n  <li>Dokumentacja: powi\u0105zania jako kod, informacje o wydaniu w kontek\u015bcie NUMA<\/li>\n<\/ul>\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>Analizuj\u0119 dane NUMA poprzez <strong>Sygna\u0142y<\/strong> W tym kontek\u015bcie warto zapozna\u0107 si\u0119 z: parami licznik\u00f3w, przebiegami czasowymi i widokiem procesu. Kluczowe warto\u015bci, takie jak numa_hit, numa_miss, numa_foreign, local_node, other_node oraz interleave_hit, wskazuj\u0105 mi lokalno\u015b\u0107, ruchy zast\u0119pcze i strategie dystrybucji. Podejmuj\u0119 decyzje w oparciu o topologi\u0119 i obci\u0105\u017cenie, a nie na podstawie sztywnych warto\u015bci granicznych. Optymalizacja zaczyna si\u0119 od rozmieszczenia, powinowactwa, odpowiedniej polityki i przejrzystej procedury pomiarowej. W ten spos\u00f3b zapewniam sta\u0142\u0105 <strong>Wydajno\u015b\u0107<\/strong>, poniewa\u017c procesor i pami\u0119\u0107 RAM s\u0105 dostosowane do aplikacji, a operacje na odleg\u0142ych zasobach zdarzaj\u0105 si\u0119 rzadko.<\/p>","protected":false},"excerpt":{"rendered":"<p>Jak prawid\u0142owo analizowa\u0107 statystyki NUMA w systemie Linux: zrozumienie statystyk NUMA, sprawdzanie lokalizacji pami\u0119ci i celowa poprawa wydajno\u015bci serwera.<\/p>","protected":false},"author":1,"featured_media":21436,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21443","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":"65","_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":"Linux NUMA","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21436","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21443","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=21443"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21443\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21436"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}