{"id":21103,"date":"2026-08-28T11:49:48","date_gmt":"2026-08-28T09:49:48","guid":{"rendered":"https:\/\/webhosting.de\/numa-balancing-deaktivieren-oder-aktiv-lassen-linux-performance-optimal\/"},"modified":"2026-08-28T11:49:48","modified_gmt":"2026-08-28T09:49:48","slug":"wylaczyc-lub-pozostawic-wlaczona-funkcje-numa-balancing-aby-uzyskac-optymalna-wydajnosc-systemu-linux","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/numa-balancing-deaktivieren-oder-aktiv-lassen-linux-performance-optimal\/","title":{"rendered":"R\u00f3wnowa\u017cenie NUMA w systemie Linux: wy\u0142\u0105czy\u0107 czy pozostawi\u0107 w\u0142\u0105czone?"},"content":{"rendered":"<p>R\u00f3wnowa\u017cenie NUMA w systemie Linux decyduje o tym, czy <strong>J\u0105dro<\/strong> Czy dost\u0119p do pami\u0119ci jest lokalizowany automatycznie, czy te\u017c sam celowo steruj\u0119 jego rozmieszczeniem. W tym przewodniku poka\u017c\u0119, kiedy pozostawiam funkcj\u0119 \u201enuma balancing\u201d w\u0142\u0105czon\u0105, a kiedy j\u0105 wy\u0142\u0105czam dla <strong>Op\u00f3\u017anienie<\/strong>-Wy\u0142\u0105cz zabezpieczenie.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>Automatyczny<\/strong> pomaga w przypadku zr\u00f3\u017cnicowanych obci\u0105\u017ce\u0144 bez dostosowywania NUMA.<\/li>\n  <li><strong>Wy\u0142\u0105cz<\/strong> w przypadku pinningu, statycznych zasad lub du\u017cych op\u00f3\u017anie\u0144.<\/li>\n  <li><strong>Nad g\u0142ow\u0105<\/strong> powstaje w wyniku skanowania, b\u0142\u0119d\u00f3w i migracji.<\/li>\n  <li><strong>Konfiguracja<\/strong> sterowa\u0107 za pomoc\u0105 sysctl lub parametr\u00f3w rozruchowych.<\/li>\n  <li><strong>Testowanie<\/strong> i najpierw zmierzy\u0107, a nie zgadywa\u0107, a dopiero potem podj\u0105\u0107 decyzj\u0119.<\/li>\n<\/ul>\n\n<h2>NUMA w skr\u00f3cie: op\u00f3\u017anienia i lokalno\u015b\u0107<\/h2>\n\n<p>W systemach NUMA sprz\u0119t dzieli pami\u0119\u0107 na kilka w\u0119z\u0142\u00f3w, z kt\u00f3rych ka\u017cdy <strong>Procesory<\/strong> znajduj\u0105 si\u0119 blisko. Dost\u0119p z lokalnych \u017ar\u00f3de\u0142 zajmuje mniej czasu ni\u017c z odleg\u0142ych, co od razu zauwa\u017cy\u0142em w <strong>Op\u00f3\u017anienie<\/strong> i przepustowo\u015b\u0107. Je\u015bli proces dzia\u0142a na jednym w\u0119\u017ale, a dane znajduj\u0105 si\u0119 na innym, trac\u0119 cenne mikrosekundy przy ka\u017cdym dost\u0119pie. W\u0142a\u015bnie w tym momencie wkracza j\u0105dro i optymalizuje <strong>Miejscowo\u015b\u0107<\/strong> stron. Kto zrozumie podstawow\u0105 ide\u0119, szybko zda sobie spraw\u0119, \u017ce blisko\u015b\u0107 mi\u0119dzy rdzeniami obliczeniowymi a danymi to bezpo\u015brednia droga do sta\u0142ej <strong>Wydajno\u015b\u0107<\/strong>.<\/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\/08\/linux-numa-balancing-2345.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak dzia\u0142a automatyczne r\u00f3wnowa\u017cenie NUMA<\/h2>\n\n<p>J\u0105dro \u015bledzi, z kt\u00f3rych j\u0105dra proces dost\u0119puje do stron, i uruchamia w spos\u00f3b ukierunkowany <strong>Wskaz\u00f3wka<\/strong>-Faults. W ten spos\u00f3b system rozpoznaje, kt\u00f3ry w\u0119ze\u0142 odnotowuje dominuj\u0105cy ruch, a nast\u0119pnie przenosi tam odpowiednie strony. Takie migracje ograniczaj\u0105 zdalny ruch i zwi\u0119kszaj\u0105 lokaln\u0105 <strong>Wsp\u00f3\u0142czynnik trafie\u0144<\/strong>. Efekt ten dostrzegam zw\u0142aszcza w przypadku dynamicznych obci\u0105\u017ce\u0144, w kt\u00f3rych w\u0105tki si\u0119 przemieszczaj\u0105, a pami\u0119\u0107 ulega zmianom. Osoby pragn\u0105ce zg\u0142\u0119bi\u0107 ten temat mog\u0105 zapozna\u0107 si\u0119 z zale\u017cno\u015bciami mi\u0119dzy blisko\u015bci\u0105 procesora a pami\u0119ci\u0105 za po\u015brednictwem <a href=\"https:\/\/webhosting.de\/pl\/serwer-numa-lokalnosc-cpu-powinowactwo-pamieci-optymalizacja-rdzen\/\">Zwi\u0105zanie procesora z pami\u0119ci\u0105<\/a> zrozumie\u0107 to w praktyce.<\/p>\n\n<h2>Kiedy pozostawi\u0107 aktywne: typowe obci\u0105\u017cenia<\/h2>\n\n<p>Pozostawiam t\u0119 funkcj\u0119 w\u0142\u0105czon\u0105, je\u015bli aplikacje nie posiadaj\u0105 w\u0142asnej logiki NUMA, a procesy cz\u0119sto <strong>zmiana<\/strong>. Typowymi przyk\u0142adami s\u0105 serwery aplikacji, bazy danych o zmiennym obci\u0105\u017ceniu oraz serwery z du\u017c\u0105 liczb\u0105 <strong>kontenerowanie<\/strong>. W takich konfiguracjach system automatycznie zbli\u017ca do siebie strony i w\u0105tki, dzi\u0119ki czemu nie musz\u0119 r\u0119cznie przypinac ich na g\u00f3rze. Szczeg\u00f3lnie na serwerach z wieloma gniazdami odsetek lokalnych odwiedzin wyra\u017anie wzrasta. Dla administrator\u00f3w obs\u0142uguj\u0105cych zr\u00f3\u017cnicowane us\u0142ugi stanowi to dobre <strong>Kompromis<\/strong> z punktu widzenia szybko\u015bci i nak\u0142adu pracy.<\/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\/08\/numa_balancing_linux_5843.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kiedy wy\u0142\u0105czy\u0107: jasne kryteria<\/h2>\n\n<p>Wy\u0142\u0105czam tryb automatyczny, gdy tylko \u015bwiadomie wykonuj\u0119 ruchy wios\u0142em lub p\u0142yn\u0119 <strong>Zasady<\/strong> ustawiam. Je\u015bli korzystam z numactl, cgroups lub MPOL_BIND\/MPOL_PREFERRED, \u015bcie\u017cki pami\u0119ci s\u0105 ju\u017c na sta\u0142e ustalone. W\u00f3wczas b\u0142\u0119dy typu \u201ehint-fault\u201d i migracje powoduj\u0105 niepotrzebne <strong>Nad g\u0142ow\u0105<\/strong>. To samo dotyczy scenariuszy w czasie rzeczywistym lub HFT, w kt\u00f3rych liczy si\u0119 ka\u017cda mikrosekunda, a przewidywalno\u015b\u0107 ma priorytetowe znaczenie. Kto zag\u0142\u0119bi si\u0119 w temat wyboru regu\u0142 umieszczania zlece\u0144, zyska na zapoznaniu si\u0119 z odpowiednimi <a href=\"https:\/\/webhosting.de\/pl\/zasady-pamieci-numa-serwer-baz-danych-optymalizacja-serwer\/\">Zasady dotycz\u0105ce pami\u0119ci<\/a>.<\/p>\n\n<h2>Zrozumienie i pomiar obci\u0105\u017cenia og\u00f3lnego<\/h2>\n\n<p>Automatyczne wywa\u017canie wymaga pewnego nak\u0142adu pracy: skanowanie, <strong>Usterki<\/strong> a migracje stron poch\u0142aniaj\u0105 czas procesora. Jest to ledwo zauwa\u017calne, gdy liczba dost\u0119p\u00f3w zdalnych znacznie spada, ale nie op\u0142aca si\u0119 to w przypadku ju\u017c lokalnego uk\u0142adu strony. Dlatego zawsze sprawdzam rzeczywisty wp\u0142yw za pomoc\u0105 numastat, perf i miarodajnych <strong>Benchmarki<\/strong>. Interesuj\u0105cy jest przebieg w skali minut, a nie tylko kr\u00f3tki skok. Dopiero gdy odczyty konsekwentnie wskazuj\u0105, \u017ce lokalny ruch ro\u015bnie, a op\u00f3\u017anienia malej\u0105, pozostaj\u0119 przy tym trybie.<\/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\/08\/numa-balancing-decision-linux-4539.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Konfiguracja: sysctl i parametry rozruchowe<\/h2>\n\n<p>Sprawdzam ten status za pomoc\u0105 \/proc lub sysctl i w razie potrzeby natychmiast go zmieniam, bez <strong>Restart<\/strong>. Do cel\u00f3w testowych wystarcz\u0105 proste polecenia, takie jak te poni\u017cej, kt\u00f3re wykonuj\u0119 w konsoli. Na sta\u0142e zapisuj\u0119 t\u0119 warto\u015b\u0107 w pliku sysctl, aby zosta\u0142a zachowana po ponownym uruchomieniu systemu. Je\u015bli chcesz ustawi\u0107 t\u0119 opcj\u0119 ju\u017c podczas uruchamiania systemu, u\u017cyj parametru j\u0105dra numa_balancing=enable lub <strong>wy\u0142\u0105cz<\/strong>. Dokumentuj\u0119 ka\u017cd\u0105 zmian\u0119 i odnotowuj\u0119, w kt\u00f3rej fazie obci\u0105\u017cenia j\u0105 wprowadzi\u0142em.<\/p>\n\n<pre><code>cat \/proc\/sys\/kernel\/numa_balancing\necho 0 &gt; \/proc\/sys\/kernel\/numa_balancing\nsysctl -w kernel.numa_balancing=1\n# \/etc\/sysctl.d\/90-numa.conf\n# kernel.numa_balancing = 0\n<\/code><\/pre>\n\n<h2>Scenariusze zwi\u0105zane z kontenerami i wirtualizacj\u0105<\/h2>\n\n<p>Na serwerach z du\u017c\u0105 liczb\u0105 maszyn wirtualnych i kontener\u00f3w automatyczne <strong>Lokalizacja<\/strong> cz\u0119sto wykorzystuj\u0105 swoje mocne strony. Procesy uruchamiaj\u0105 si\u0119 i ko\u0144cz\u0105, grupy Cgroup przenosz\u0105 obci\u0105\u017cenie, a j\u0105dro utrzymuje pami\u0119\u0107 bli\u017cej aktywnych proces\u00f3w. Obserwuj\u0119 to przede wszystkim na du\u017cych serwerach wieloprocesorowych z kilkoma <strong>W\u0119z\u0142y<\/strong>. Przypadki szczeg\u00f3lne, w kt\u00f3rych poszczeg\u00f3lne instancje s\u0105 \u015bci\u015ble przypisane, wyra\u017anie oddzielam i w tych miejscach celowo wy\u0142\u0105czam tryb automatyczny. Aby uzyska\u0107 szerszy obraz sytuacji, warto zapozna\u0107 si\u0119 z praktycznymi <a href=\"https:\/\/webhosting.de\/pl\/numa-rownowazenie-pamieci-serwera-optymalizacja-sprzetu-numaflux\/\">Optymalizacja NUMA<\/a> w trybie hosta.<\/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\/08\/numa_balancing_linux_5823.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tabela decyzyjna do zastosowania w praktyce<\/h2>\n\n<p>Poni\u017cszy przegl\u0105d zawiera podsumowanie typowych scenariuszy, oczekiwanych skutk\u00f3w oraz moje jasne <strong>Zalecenie<\/strong>. Wykorzystuj\u0119 je jako punkt wyj\u015bcia, ale nigdy nie zast\u0119puj\u0119 nimi warto\u015bci pomiarowych z rzeczywistego systemu. Ka\u017cde \u015brodowisko ma swoje specyficzne cechy, a decyzje podejmuj\u0119 dopiero po uzyskaniu powtarzalnych <strong>Wyniki<\/strong> na pewno. Kto dzia\u0142a systematycznie, oszcz\u0119dza p\u00f3\u017aniej czas na szukanie b\u0142\u0119d\u00f3w i dostrajanie. Ma\u0142e testy przed wdro\u017ceniem prawie zawsze si\u0119 op\u0142acaj\u0105 w <strong>Constance<\/strong> oraz przewidywalno\u015b\u0107.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Scenariusz<\/th>\n      <th>Typowe dzia\u0142anie<\/th>\n      <th>Moja rekomendacja<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Standardowe obci\u0105\u017cenia bez optymalizacji NUMA<\/td>\n      <td>Wi\u0119cej odwiedzin z okolicy, mniej z daleka <strong>Odczyty<\/strong><\/td>\n      <td>Pozostaw aktywne<\/td>\n    <\/tr>\n    <tr>\n      <td>Bazy danych o zmiennym obci\u0105\u017ceniu<\/td>\n      <td>Dynamiczna lokalizacja stron, umiarkowana <strong>Skany<\/strong><\/td>\n      <td>Pozostawi\u0107 w stanie aktywnym, przetestowa\u0107<\/td>\n    <\/tr>\n    <tr>\n      <td>Handel w czasie rzeczywistym lub HFT<\/td>\n      <td>Op\u00f3\u017anienie zwi\u0105zane z b\u0142\u0119dem Hint-Fault jest uci\u0105\u017cliwe <strong>Jitter<\/strong>-Cele<\/td>\n      <td>Wy\u0142\u0105cz, przypi\u0105\u0107 r\u0119cznie<\/td>\n    <\/tr>\n    <tr>\n      <td>R\u0119czne przypisywanie zasob\u00f3w za pomoc\u0105 numactl\/cgroups<\/td>\n      <td>System automatyczny koliduje z elementami sta\u0142ymi <strong>Zasady<\/strong><\/td>\n      <td>Wy\u0142\u0105cz<\/td>\n    <\/tr>\n    <tr>\n      <td>Statyczne zasady zarz\u0105dzania pami\u0119ci\u0105 (MPOL_BIND itp.)<\/td>\n      <td>Migracje nie przynosz\u0105 \u017cadnego rzeczywistego <strong>Przewaga<\/strong><\/td>\n      <td>Wy\u0142\u0105cz<\/td>\n    <\/tr>\n    <tr>\n      <td>\u015arodowisko testowe\/analityczne<\/td>\n      <td>Dobra widoczno\u015b\u0107 na teren i <strong>Efekty<\/strong><\/td>\n      <td>Pozostawi\u0107 w stanie aktywnym, sprawdzi\u0107 warianty<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Wytyczne dotycz\u0105ce test\u00f3w i walidacji<\/h2>\n\n<p>Zaczynam z w\u0142\u0105czonym modu\u0142em Balancer i rejestruj\u0119 dane dotycz\u0105ce po\u0142\u0105cze\u0144 lokalnych i zdalnych <strong>Dost\u0119py<\/strong> za pomoc\u0105 numastat. Nast\u0119pnie wy\u0142\u0105czam t\u0119 funkcj\u0119 i powtarzam pomiary w identyczny spos\u00f3b. R\u00f3\u017cnice oceniam nie tylko na podstawie warto\u015bci \u015brednich, ale tak\u017ce na podstawie <strong>Procenty<\/strong>. Testy regresyjne z wykorzystaniem profili obci\u0105\u017cenia z produkcji dostarczaj\u0105 najbardziej wiarygodnych wynik\u00f3w. Dopiero wtedy podejmuj\u0119 ostateczn\u0105 decyzj\u0119 dotycz\u0105c\u0105 wyboru serwera, maszyny wirtualnej lub konkretnego <strong>Serwis<\/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\/08\/devdesk_linux_numa_bal_7283.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Typowe przeszkody i mity<\/h2>\n\n<p>Powszechnym b\u0142\u0119dnym przekonaniem jest twierdzenie, \u017ce automatyka zast\u0119puje ka\u017cde <strong>Przypinanie<\/strong>. To nieprawda, poniewa\u017c sztywne bud\u017cety op\u00f3\u017anie\u0144 praktycznie nie pozwalaj\u0105 na dodatkowe b\u0142\u0119dy. R\u00f3wnie b\u0142\u0119dne jest za\u0142o\u017cenie, \u017ce migracje zawsze <strong>nieodp\u0142atnie<\/strong> zdarzy\u0107 si\u0119. Zw\u0142aszcza w przypadku uk\u0142ad\u00f3w, kt\u00f3re i tak maj\u0105 charakter lokalny, obci\u0105\u017cenie to cz\u0119\u015bciej przynosi wi\u0119cej szkody ni\u017c po\u017cytku. Kto nie daje si\u0119 zwie\u015b\u0107 mitom i dokonuje rzetelnych pomiar\u00f3w, podejmuje decyzje o znacznie wy\u017cszej <strong>Dok\u0142adno\u015b\u0107<\/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\/08\/linux-numa-balancing-8192.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Ograniczenia trybu automatycznego i interakcje<\/h2>\n\n<p>AutoNUMA ma znacz\u0105cy wp\u0142yw na strony anonimowe, kt\u00f3re proces przydziela samodzielnie. Nie wszystko jednak da si\u0119 sensownie przenie\u015b\u0107. Strony przypi\u0119te (mlock), pami\u0119\u0107 DMA\/urz\u0105dze\u0144, obszary zarejestrowane przez DAX lub RDMA pozostaj\u0105 na swoich miejscach. R\u00f3wnie\u017c strony wsp\u00f3\u0142dzielone (np. intensywnie wsp\u00f3\u0142dzielone biblioteki lub pami\u0119\u0107 podr\u0119czna stron) przynosz\u0105 jedynie ograniczone korzy\u015bci z migracji, poniewa\u017c wiele proces\u00f3w konkuruje o <strong>Wzorzec dost\u0119pu<\/strong> wytworzy\u0107. Bior\u0119 r\u00f3wnie\u017c pod uwag\u0119 koszty <strong>Przejrzyste ogromne strony<\/strong> (THP): ich migracja jest dro\u017csza ni\u017c w przypadku stron o rozmiarze 4 KiB i mo\u017ce powodowa\u0107 skoki obci\u0105\u017cenia. U\u017cytkownicy, kt\u00f3rzy d\u0105\u017c\u0105 do osi\u0105gni\u0119cia \u015bcis\u0142ych cel\u00f3w dotycz\u0105cych op\u00f3\u017anie\u0144, cz\u0119sto \u0142\u0105cz\u0105 ustawienie THP=never lub madvise z wy\u0142\u0105czonym r\u00f3wnowa\u017ceniem i czystym pinningiem, aby wykluczy\u0107 nieoczekiwane sytuacje.<\/p>\n\n<p>Kolejnym aspektem jest wsp\u00f3\u0142dzia\u0142anie z harmonogramem procesora. Harmonogram stara si\u0119 umieszcza\u0107 w\u0105tki tam, gdzie znajduj\u0105 si\u0119 ich dane \u2013 a modu\u0142 r\u00f3wnowa\u017c\u0105cy przenosi dane tam, gdzie dzia\u0142aj\u0105 w\u0105tki. Oba rozwi\u0105zania wzajemnie si\u0119 uzupe\u0142niaj\u0105, ale przy niestabilnym obci\u0105\u017ceniu mo\u017ce to chwilowo prowadzi\u0107 do <strong>Oscylacje<\/strong> prowadzi\u0107. W praktyce interwa\u0142y skanowania \u0142agodz\u0105 te efekty; je\u015bli zauwa\u017cysz wyj\u0105tkowo niestabilne profile obci\u0105\u017cenia, mo\u017cesz z\u0142agodzi\u0107 sytuacj\u0119, stosuj\u0105c d\u0142u\u017csze okresy skanowania lub bardziej stabilne przypinanie w\u0105tk\u00f3w.<\/p>\n\n<h2>Precyzyjne dostosowanie parametr\u00f3w skanowania<\/h2>\n\n<p>Opr\u00f3cz globalnego prze\u0142\u0105cznika istniej\u0105 parametry j\u0105dra, za pomoc\u0105 kt\u00f3rych mog\u0119 precyzyjnie dostosowa\u0107 intensywno\u015b\u0107 dzia\u0142ania automatyki. Dok\u0142adne nazwy mog\u0105 si\u0119 nieznacznie r\u00f3\u017cni\u0107 w zale\u017cno\u015bci od wersji j\u0105dra, ale ich przeznaczenie pozostaje takie samo:<\/p>\n\n<ul>\n  <li>kernel.numa_balancing_scan_delay_ms: Czas oczekiwania po uruchomieniu, wykonaniu polecenia \u201efork\u201d lub \u201eexec\u201d do momentu rozpocz\u0119cia pierwszego skanowania.<\/li>\n  <li>kernel.numa_balancing_scan_period_min_ms \/ _max_ms: dolna i g\u00f3rna granica cz\u0119stotliwo\u015bci skanowania dla ka\u017cdego zakresu adres\u00f3w procesu.<\/li>\n  <li>kernel.numa_balancing_rate_limit_mb: G\u00f3rna granica migracji stron w danym przedziale czasowym w celu oszcz\u0119dzania przepustowo\u015bci pami\u0119ci.<\/li>\n  <li>kernel.numa_balancing_scan_size_mb: Ilo\u015b\u0107 pami\u0119ci, kt\u00f3ra jest oznaczana w ka\u017cdym przebiegu skanowania (je\u015bli jest dost\u0119pna).<\/li>\n<\/ul>\n\n<p>W konfiguracjach, w kt\u00f3rych op\u00f3\u017anienie ma kluczowe znaczenie, ostro\u017cnie zwi\u0119kszam minimalne i maksymalne okresy oraz obni\u017cam limity cz\u0119stotliwo\u015bci, zamiast od razu wy\u0142\u0105cza\u0107 tryb automatyczny. Cz\u0119sto zapewnia to dobry kompromis: mniej b\u0142\u0119d\u00f3w \u201ehint\u201d, mniej migracji, ale wci\u0105\u017c wystarczaj\u0105c\u0105 reakcj\u0119 na rzeczywiste nieprawid\u0142owe rozmieszczenia.<\/p>\n\n<pre><code>Przyk\u0142ady # (tymczasowe, do momentu ponownego uruchomienia)\nsysctl -w kernel.numa_balancing_scan_period_min_ms=60000\nsysctl -w kernel.numa_balancing_scan_period_max_ms=240000\nsysctl -w kernel.numa_balancing_rate_limit_mb=64\n<\/code><\/pre>\n\n<h2>Szczeg\u00f3\u0142owe wska\u017aniki i diagnostyka<\/h2>\n\n<p>Aby podejmowa\u0107 trafne decyzje, analizuj\u0119 wska\u017aniki, kt\u00f3re bezpo\u015brednio ukazuj\u0105 dzia\u0142anie danego mechanizmu. Regularnie korzystam z trzech \u017ar\u00f3de\u0142:<\/p>\n\n<ul>\n  <li>numastat: Stosunek dost\u0119p\u00f3w lokalnych do zdalnych w ca\u0142ym systemie oraz dla poszczeg\u00f3lnych proces\u00f3w.<\/li>\n  <li>\/proc\/\/numa_maps: rozk\u0142ad stron pami\u0119ci procesu na w\u0119z\u0142ach, wraz z flagami takimi jak active, file, anon.<\/li>\n  <li>\/proc\/vmstat: Liczniki takie jak numa_hint_faults, numa_hint_faults_local i numa_pages_migrated wskazuj\u0105, czy modu\u0142 r\u00f3wnowa\u017cenia obci\u0105\u017cenia dzia\u0142a i czy <strong>Sukces<\/strong> Ma.<\/li>\n<\/ul>\n\n<pre><code># \u2013 przegl\u0105d dla ka\u017cdego procesu\nnumastat -p \n\n# \u2013 widok szczeg\u00f3\u0142owy: gdzie znajduj\u0105 si\u0119 poszczeg\u00f3lne obszary?\ngrep -E 'anon|file' \/proc\/\/numa_maps | head\n\n# Widok aktywno\u015bci AutoNUMA w ca\u0142ym j\u0105drze\ngrep -E 'numa_(hint_faults|pages_migrated)' \/proc\/vmstat\n<\/code><\/pre>\n\n<p>W wynikach szukam trend\u00f3w: czy odsetek lokalnych odwiedzin stabilnie ro\u015bnie? Czy jednocze\u015bnie maleje liczba b\u0142\u0119d\u00f3w \u201ehint-fault\u201d? W takim przypadku sprawdza si\u0119 dobry uk\u0142ad strony. Je\u015bli udzia\u0142 ruchu lokalnego pozostaje na sta\u0142ym poziomie pomimo licznych migracji, raczej po\u015bwi\u0119cam na to kolejne cykle. W przypadku cel\u00f3w dotycz\u0105cych op\u00f3\u017anie\u0144 sprawdzam dodatkowo 95. i 99. percentyl czas\u00f3w odpowiedzi; niewielkie poprawy \u015brednich warto\u015bci mog\u0105 zosta\u0107 zniwelowane przez <strong>Jitter<\/strong> zosta\u0107 zakryte.<\/p>\n\n<h2>Profile obci\u0105\u017cenia: co zazwyczaj si\u0119 sprawdza<\/h2>\n\n<p>Z praktyki wy\u0142oni\u0142y si\u0119 pewne wzorce wskazuj\u0105ce, kiedy AutoNUMA zazwyczaj pomaga, a kiedy nie:<\/p>\n\n<ul>\n  <li>Us\u0142ugi JVM i serwery aplikacji: cz\u0119sto przynosz\u0105 korzy\u015bci, o ile nie jest aktywna \u017cadna rygorystyczna strategia przypisywania w\u0105tk\u00f3w ani \u017cadna agresywna, w\u0142asna logika NUMA. Niekt\u00f3re \u015brodowiska uruchomieniowe oferuj\u0105 opcje NUMA; je\u015bli korzystam z nich rygorystycznie, ograniczam dzia\u0142anie automatyki lub j\u0105 wy\u0142\u0105czam.<\/li>\n  <li>Bazy danych relacyjnych: Przy zmiennym obci\u0105\u017ceniu i mieszanych pami\u0119ciach podr\u0119cznych automatyka cz\u0119sto dzia\u0142a dobrze. Je\u015bli jednak w\u0142\u0105cz\u0119 dedykowane przypisywanie (Worker-to-Node, bufory wsp\u00f3\u0142dzielone \u015bci\u015ble rozdzielone), wy\u0142\u0105czam r\u00f3wnowa\u017cenie, aby zapewni\u0107 pe\u0142n\u0105 powtarzalno\u015b\u0107 wynik\u00f3w.<\/li>\n  <li>Pami\u0119ci w pami\u0119ci operacyjnej i pami\u0119ci podr\u0119czne: du\u017cy, intensywnie wykorzystywany zestaw danych zyskuje na umieszczeniu w pami\u0119ci lokalnej. Je\u015bli instancja dzia\u0142a w trybie jednow\u0105tkowym lub jest \u015bci\u015ble przypi\u0119ta, zapobiegam niepotrzebnym migracjom poprzez wy\u0142\u0105czenie tej funkcji.<\/li>\n  <li>HPC\/MPI i kody naukowe: W wi\u0119kszo\u015bci przypadk\u00f3w istniej\u0105 jasne zasady rozmieszczenia i wi\u0105zania (OpenMP\/numactl). Tutaj przewidywalno\u015b\u0107 jest wa\u017cniejsza ni\u017c automatyzacja \u2013 rezygnuj\u0119 z r\u00f3wnowa\u017cenia NUMA.<\/li>\n<\/ul>\n\n<h2>Wirtualizacja: vNUMA, pinning i migracja na \u017cywo<\/h2>\n\n<p>W relacji mi\u0119dzy gospodarzem a go\u015bciem bior\u0119 pod uwag\u0119 oba wymiary:<\/p>\n\n<ul>\n  <li>Je\u015bli topologia vNUMA w systemie-go\u015bciu pokrywa si\u0119 z fizyczn\u0105 topologi\u0105 NUMA hosta, modu\u0142 r\u00f3wnowa\u017cenia obci\u0105\u017cenia systemu-go\u015bcia mo\u017ce podejmowa\u0107 trafne decyzje. W przypadku odst\u0119pstw od tej topologii powstaj\u0105 \u201eb\u0142\u0119dne s\u0105siedztwa\u201c, kt\u00f3re funkcja AutoNUMA kompensuje jedynie w ograniczonym stopniu.<\/li>\n  <li>Je\u015bli przypisuj\u0119 procesory vCPU na sta\u0142e do procesor\u00f3w hosta i przypisuj\u0119 pami\u0119\u0107 go\u015bcia do okre\u015blonych w\u0119z\u0142\u00f3w, jest to wyra\u017ana zasada \u2013 ograniczam lub wy\u0142\u0105czam funkcj\u0119 AutoNUMA na poziomie tej maszyny wirtualnej, aby unikn\u0105\u0107 podw\u00f3jnych migracji.<\/li>\n  <li>Po migracjach na \u017cywo zauwa\u017cam faz\u0119 \u201erozgrzewki\u201d: liczba b\u0142\u0119d\u00f3w typu \u201eHint-Fault\u201d ro\u015bnie, dop\u00f3ki nie ustabilizuje si\u0119 nowa r\u00f3wnowaga. W tym czasie planuj\u0119 bufory na <strong>Op\u00f3\u017anienie<\/strong>-ko\u0144c\u00f3wki.<\/li>\n<\/ul>\n\n<p>Na g\u0119sto obci\u0105\u017conych hostach wirtualizacyjnych, gdzie instancje s\u0105 uruchamiane i zatrzymywane, a grupy Cgroup przenosz\u0105 obci\u0105\u017cenie, automatyka na poziomie hosta cz\u0119sto stanowi wyra\u017an\u0105 korzy\u015b\u0107. W przypadku dedykowanych maszyn wirtualnych wra\u017cliwych na \u201eha\u0142a\u015bliwych s\u0105siad\u00f3w\u201c starannie izoluj\u0119 zasoby i ustalam regu\u0142y statycznie.<\/p>\n\n<h2>Pragmatyczne warto\u015bci docelowe i kryteria akceptacji<\/h2>\n\n<p>Na wst\u0119pie zdefiniuj\u0119, co oznacza \u201edobrze\u201c, \u017ceby nie musie\u0107 bez ko\u0144ca dopracowywa\u0107 szczeg\u00f3\u0142\u00f3w:<\/p>\n\n<ul>\n  <li>Us\u0142ugi og\u00f3lne: 70\u201385% \u2013 dost\u0119p lokalny cz\u0119sto wystarcza, o ile wariancja pozostaje niewielka.<\/li>\n  <li>Umowy SLA dotycz\u0105ce op\u00f3\u017anie\u0144: cel &gt;90% lokalnie, jasno okre\u015blone g\u00f3rne limity wska\u017anika b\u0142\u0119d\u00f3w (Hint-Fault-Rate) oraz stabilne 99. percentyle.<\/li>\n  <li>Du\u017ce obci\u0105\u017cenie przepustowo\u015bci\u0105: migracje nie mog\u0105 powodowa\u0107 przeci\u0105\u017cenia kana\u0142\u00f3w pami\u0119ci \u2013 nale\u017cy odpowiednio dostosowa\u0107 limity przepustowo\u015bci i okresy.<\/li>\n<\/ul>\n\n<p>Dokumentuj\u0119 te progi i analizuj\u0119 wyniki test\u00f3w A\/B w kilku fazach obci\u0105\u017cenia. Decyzj\u0119 podejmuj\u0119 dopiero wtedy, gdy wyniki s\u0105 powtarzalne.<\/p>\n\n<h2>Lista kontrolna rozwi\u0105zywania problem\u00f3w<\/h2>\n\n<ul>\n  <li>Nag\u0142e skoki op\u00f3\u017anie\u0144: Sprawdzi\u0107, czy migracje THP lub skoki warto\u015bci w \u201enuma_hint_faults\u201d s\u0105 ze sob\u0105 powi\u0105zane. \u015arodek zaradczy: Wyd\u0142u\u017cy\u0107 okresy skanowania, ustawi\u0107 THP na \u201emadvise\/never\u201d, w razie potrzeby wy\u0142\u0105czy\u0107 funkcj\u0119 \u201eBalance\u201d.<\/li>\n  <li>Brak efektu pomimo aktywacji: czy w\u0105tki s\u0105 mocno przypi\u0119te lub czy obowi\u0105zuj\u0105 sztywne zasady zarz\u0105dzania pami\u0119ci\u0105? W takim przypadku automatyka koliduje z tymi wytycznymi.<\/li>\n  <li>Wysokie tempo migracji, a mimo to du\u017ca liczba po\u0142\u0105cze\u0144 zdalnych: nale\u017cy sprawdzi\u0107 i zwi\u0119kszy\u0107 limit szybko\u015bci; alternatywnie \u2013 ustabilizowa\u0107 obci\u0105\u017cenie (przypisanie w\u0105tk\u00f3w, utrzymanie wysokiego poziomu wype\u0142nienia pami\u0119ci podr\u0119cznej).<\/li>\n  <li>Niejasne wyniki pomiar\u00f3w: nale\u017cy korzysta\u0107 z widoku poszczeg\u00f3lnych proces\u00f3w za pomoc\u0105 numastat -p i \/proc\/\/numa_maps, a nie tylko z og\u00f3lnych warto\u015bci systemowych.<\/li>\n<\/ul>\n\n<h2>Cz\u0119sto pomijane szczeg\u00f3\u0142y<\/h2>\n\n<ul>\n  <li>Obci\u0105\u017cenia oparte g\u0142\u00f3wnie na pami\u0119ci podr\u0119cznej stron: funkcja AutoNUMA dzia\u0142a przede wszystkim w przypadku anonimowych stron. U\u017cytkownicy, kt\u00f3rych praca opiera si\u0119 g\u0142\u00f3wnie na operacjach wej\u015bcia\/wyj\u015bcia, nie powinni oczekiwa\u0107 cudownych efekt\u00f3w od r\u00f3wnowa\u017cenia obci\u0105\u017cenia.<\/li>\n  <li>Cgroups i cpusets: plik cpuset.mems ogranicza, do kt\u00f3rych w\u0119z\u0142\u00f3w dana grupa ma dost\u0119p. Stanowi to sztywne ramy, w kt\u00f3rych dzia\u0142a mechanizm automatyczny.<\/li>\n  <li>Pod\u0142\u0105czanie pami\u0119ci w trakcie pracy\/wy\u0142\u0105czanie w\u0119z\u0142\u00f3w: Dynamiczne topologie zmieniaj\u0105 odleg\u0142o\u015bci; po wprowadzeniu zmian warto przeprowadzi\u0107 ponowny test i, w razie potrzeby, dostosowa\u0107 parametry skanowania.<\/li>\n<\/ul>\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>W przypadku og\u00f3lnych obci\u0105\u017ce\u0144 serwera pozostawiam t\u0119 funkcj\u0119 w\u0142\u0105czon\u0105, poniewa\u017c bez r\u0119cznej interwencji pozwala ona niemal <strong>Dane<\/strong> co powoduje aktywacj\u0119 rdzeni. W przypadku pracy w czasie rzeczywistym, handlu wysokich cz\u0119stotliwo\u015bci (HFT), r\u0119cznego przypisywania lub sta\u0142ych zasad wy\u0142\u0105czam je, aby unikn\u0105\u0107 obci\u0105\u017cenia i wahania. W fazach testowych pracuj\u0119 iteracyjnie: mierz\u0119, podejmuj\u0119 decyzj\u0119, powtarzam <strong>zatwierdza\u0107<\/strong>. Staram si\u0119, by konfiguracja by\u0142a prosta, dokumentuj\u0119 ka\u017cd\u0105 zmian\u0119 i sprawdzam jej skutki za pomoc\u0105 wiarygodnych wska\u017anik\u00f3w. W ten spos\u00f3b wykorzystuj\u0119 zalety sprz\u0119tu NUMA bez niepotrzebnych <strong>Ryzyko<\/strong> podj\u0105\u0107.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak r\u00f3wnowa\u017cenie NUMA wp\u0142ywa na wydajno\u015b\u0107 systemu Linux na nowoczesnym sprz\u0119cie serwerowym oraz kiedy warto wy\u0142\u0105czy\u0107 t\u0119 funkcj\u0119, a kiedy pozostawi\u0107 j\u0105 w\u0142\u0105czon\u0105. Temat: r\u00f3wnowa\u017cenie NUMA.<\/p>","protected":false},"author":1,"featured_media":21096,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21103","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":"169","_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":"numa balancing","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":"21096","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21103","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=21103"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21096"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}