{"id":21507,"date":"2026-09-18T08:32:17","date_gmt":"2026-09-18T06:32:17","guid":{"rendered":"https:\/\/webhosting.de\/tickless-mode-linux-kernel-rhythmus\/"},"modified":"2026-09-18T08:32:17","modified_gmt":"2026-09-18T06:32:17","slug":"tryb-bez-zegarowy-jadro-systemu-linux-rytm","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/tickless-mode-linux-kernel-rhythmus\/","title":{"rendered":"Tryb beztykowy harmonogramu j\u0105dra \u2013 wyja\u015bnienie: zalety, zagro\u017cenia i optymalizacja"},"content":{"rendered":"<p>Wyja\u015bni\u0119 to <strong>tryb bez sygna\u0142u zegara<\/strong> j\u0105dra systemu Linux w przyst\u0119pny spos\u00f3b oraz pokazuj\u0119, kiedy ma ono pozytywny wp\u0142yw na wydajno\u015b\u0107, op\u00f3\u017anienia i zu\u017cycie energii. W tym celu wskazuj\u0119 jasne korzy\u015bci, potencjalne zagro\u017cenia oraz konkretne kroki optymalizacyjne, kt\u00f3re stosuj\u0119 w praktyce.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Podsumowuj\u0119 najwa\u017cniejsze z nich <strong>G\u0142\u00f3wne tematy<\/strong> zebrane w zwi\u0119z\u0142y spos\u00f3b, aby\u015b od razu wiedzia\u0142, na co nale\u017cy zwr\u00f3ci\u0107 uwag\u0119. Harmonogram systemu Linux i dynamiczny tick s\u0105 ze sob\u0105 \u015bci\u015ble powi\u0105zane i kszta\u0142tuj\u0105 zachowanie twojego <strong>Procesory<\/strong>. W zale\u017cno\u015bci od obci\u0105\u017cenia decyduj\u0119, czy wystarczy tryb \u201eTickless Idle\u201d, czy te\u017c skorzystam z trybu \u201eFull Tickless\u201d z izolowanymi rdzeniami. Aby uzyska\u0107 powtarzalne wyniki, starannie planuj\u0119 procesy porz\u0105dkowe procesora, przypisanie IRQ oraz wywo\u0142ania zwrotne RCU. Ostatecznie licz\u0105 si\u0119 wyniki pomiar\u00f3w op\u00f3\u017anie\u0144, zu\u017cycia energii i przepustowo\u015bci w twoim <strong>Konfiguracja<\/strong> naprawd\u0119 pokaza\u0107.<\/p>\n<ul>\n  <li><strong>Praca na biegu ja\u0142owym bez tykania<\/strong>: mniej impuls\u00f3w na biegu ja\u0142owym<\/li>\n  <li><strong>NO_HZ_FULL<\/strong>: spokojne, odizolowane osady<\/li>\n  <li><strong>Zwi\u0105zanie z IRQ<\/strong>: \u0141\u0105czenie \u017ar\u00f3de\u0142 zak\u0142\u00f3ce\u0144<\/li>\n  <li><strong>Przypinanie procesora<\/strong>: Sta\u0142e przypisanie w\u0105tk\u00f3w<\/li>\n  <li><strong>Zmierzone warto\u015bci<\/strong>: op\u00f3\u017anienie, energia, jitter<\/li>\n<\/ul>\n<p>Lista zawiera d\u017awignie regulacyjne, kt\u00f3re sprawdzam i \u0142\u0105cz\u0119 w pierwszej kolejno\u015bci. Dzi\u0119ki temu szybko rozpoznaj\u0119, gdzie wyst\u0119puje najwi\u0119kszy <strong>D\u017awignia<\/strong> i w jakim stopniu dostosowuj\u0119 j\u0105dro.<\/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\/09\/kernel-tickless-6359.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jakie s\u0105 praktyczne skutki taktu j\u0105dra<\/h2>\n\n<p>Okresowy sygna\u0142 wyzwala w j\u0105drze systemowym pomiar czasu, zarz\u0105dzanie timerami oraz nowe <strong>Planowanie<\/strong>-decyzje. Jest prosty, ale budzi j\u0105dra nawet wtedy, gdy nie ma \u017cadnej sensownej pracy do wykonania. Dzi\u0119ki trybowi \u201etickless\u201d j\u0105dro planuje nast\u0119pne wybudzenie zgodnie z potrzebami i unika niepotrzebnych <strong>Przerwania<\/strong>. Dzi\u0119ki temu procesory d\u0142u\u017cej pozostaj\u0105 w g\u0142\u0119bokich stanach C i generuj\u0105 mniejsze wahania w przypadku zada\u0144, w kt\u00f3rych op\u00f3\u017anienia maj\u0105 kluczowe znaczenie. Wykorzystuj\u0119 ten mechanizm do tworzenia spokojnych okien wykonania dla wra\u017cliwych w\u0105tk\u00f3w.<\/p>\n\n<h2>Warianty: przegl\u0105d funkcji \u201eTickless Idle\u201d i \u201eNO_HZ_FULL\u201d<\/h2>\n\n<p><strong>Praca na biegu ja\u0142owym bez tykania<\/strong> (CONFIG_NO_HZ_IDLE) wy\u0142\u0105cza regularny sygna\u0142 taktuj\u0105cy, gdy procesor pozostaje bezczynny. Zmniejsza to pob\u00f3r mocy i wydzielanie ciep\u0142a, poniewa\u017c procesor rzadziej jest wybudzany ze stanu g\u0142\u0119bokiego u\u015bpienia. <strong>NO_HZ_FULL<\/strong> idzie dalej i redukuje liczb\u0119 takt\u00f3w nawet na aktywnych rdzeniach, je\u015bli dzia\u0142a na nich tylko jedno zadanie. W tym celu \u015bci\u015ble izoluj\u0119 te rdzenie i przenosz\u0119 zadania systemowe na dedykowane procesory obs\u0142uguj\u0105ce zadania administracyjne. Kto zapewni prawid\u0142ow\u0105 izolacj\u0119, uzyska bardzo ciche rdzenie, a tym samym lepsz\u0105 przewidywalno\u015b\u0107 pod 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\/tickless_mode_vorteile_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tabela por\u00f3wnawcza i scenariusze zastosowa\u0144<\/h2>\n\n<p>Poni\u017cszy przegl\u0105d pomaga mi wybra\u0107 odpowiedni <strong>Tryb<\/strong> wybra\u0107 odpowiednie ustawienia w zale\u017cno\u015bci od celu i prawid\u0142owo przygotowa\u0107 niezb\u0119dne \u015brodowisko. Najpierw zwracam uwag\u0119 na charakterystyk\u0119 obci\u0105\u017cenia, nast\u0119pnie na cele energetyczne, a na ko\u0144cu na tolerancj\u0119 na wahania. Z do\u015bwiadczenia wiem, \u017ce wyra\u017ana izolacja procesora op\u0142aca si\u0119 szczeg\u00f3lnie w przypadku handlu, oblicze\u0144 o wysokiej wydajno\u015bci (HPC) oraz zastosowa\u0144 wymagaj\u0105cych bardzo niskiego op\u00f3\u017anienia <strong>Sie\u0107<\/strong>-Stacks. Natomiast w centrum danych o zmiennym obci\u0105\u017ceniu tryb \u201eTickless Idle\u201d cz\u0119sto zapewnia najszybsze oszcz\u0119dno\u015bci. Tryb \u201eFull Tickless\u201d rezerwuj\u0119 dla \u015bci\u015ble kontrolowanych host\u00f3w, na kt\u00f3rych niezawodnie oddzielam prac\u0119 systemu.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Tryb<\/th>\n      <th>Kiedy jest aktywna<\/th>\n      <th>Przewaga<\/th>\n      <th>Ryzyko<\/th>\n      <th>Odpowiedni dla<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Okresowy sygna\u0142<\/td>\n      <td>Zawsze, sta\u0142a cz\u0119stotliwo\u015b\u0107 Hz<\/td>\n      <td>Prosty <strong>Administracja<\/strong><\/td>\n      <td>Wi\u0119cej jittera i przebudze\u0144<\/td>\n      <td>Serwery og\u00f3lne<\/td>\n    <\/tr>\n    <tr>\n      <td>Praca na biegu ja\u0142owym bez taktu (NO_HZ_IDLE)<\/td>\n      <td>Tylko na biegu ja\u0142owym<\/td>\n      <td>Mniej energii, ni\u017csze temperatury <strong>Procesory<\/strong><\/td>\n      <td>Ograniczony wzrost wydajno\u015bci<\/td>\n      <td>Hosty VM, serwisy internetowe, mieszane<\/td>\n    <\/tr>\n    <tr>\n      <td>Pe\u0142ny tryb bez impuls\u00f3w (NO_HZ_FULL)<\/td>\n      <td>R\u00f3wnie\u017c w przypadku obci\u0105\u017cenia pojedynczym zadaniem<\/td>\n      <td>Bardzo spokojne obszary, niewiele <strong>Jitter<\/strong><\/td>\n      <td>Konieczna jest kompleksowa izolacja<\/td>\n      <td>HPC, handel, zbli\u017cone do czasu rzeczywistego<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Kiedy tryb bez tykania pokazuje si\u0119 z najlepszej strony<\/h2>\n\n<p>W\u0142\u0105czam tryb Full Tickless na izolowanych rdzeniach, gdy aplikacja jest wyj\u0105tkowo <strong>Niskie op\u00f3\u017anienia<\/strong> musi reagowa\u0107. Nale\u017c\u0105 do nich dopasowywanie zlece\u0144, przetwarzanie pakiet\u00f3w z wykorzystaniem pojedynczej kolejki lub \u015bcis\u0142a lokalizacja NUMA w kodach naukowych. W przypadku cel\u00f3w energetycznych na hostach mieszanych cz\u0119sto wystarcza tryb \u201eTickless Idle\u201d, aby uzyska\u0107 wymiern\u0105 <strong>Oszcz\u0119dno\u015bci<\/strong>. Kto dostrzega wiele faz u\u015bpienia, odnosi du\u017ce korzy\u015bci, poniewa\u017c stany C s\u0105 rzadziej opuszczane przez tiki. Zapraszam do zapoznania si\u0119 z moim przewodnikiem na temat <a href=\"https:\/\/webhosting.de\/pl\/serwer-kernel-tickless-zoptymalizowany-pod-katem-wydajnosci-energetycznej-zielony\/\">Efektywno\u015b\u0107 energetyczna dzi\u0119ki technologii Tickless<\/a>, je\u015bli chcesz przede wszystkim obni\u017cy\u0107 koszty energii elektrycznej.<\/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\/tickless-mode-scheduler-explained-4785.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Korzy\u015bci i skutki uboczne w \u017cyciu codziennym<\/h2>\n\n<p>Mniejsza liczba cyklicznych impuls\u00f3w oznacza mniej <strong>Zmiana kontekstu<\/strong> oraz cz\u0119sto bardziej wyr\u00f3wnane czasy wykonania. W konfiguracjach izolacyjnych zmniejsza si\u0119 szum systemu operacyjnego, dzi\u0119ki czemu wra\u017cliwy kod reaguje bardziej sp\u00f3jnie. Wed\u0142ug Linux Foundation i dokumentacji j\u0105dra opcja NO_HZ_IDLE zapewnia znaczn\u0105 popraw\u0119 wydajno\u015bci w stanie bezczynno\u015bci, natomiast opcja NO_HZ_FULL dodatkowo redukuje impulsy zak\u0142\u00f3caj\u0105ce. Dokumentacja HPC potwierdza ten efekt w po\u0142\u0105czeniu z pinningiem i grupowaniem IRQ na rdzeniach obs\u0142uguj\u0105cych zadania administracyjne. Kto poprawnie skonfiguruje pomiary, wyra\u017anie dostrze\u017ce te efekty w profilach op\u00f3\u017anie\u0144 i zu\u017cycia energii <strong>Gospodarze<\/strong>.<\/p>\n\n<h2>Ryzyko zwi\u0105zane z nieprawid\u0142owym tuningiem<\/h2>\n\n<p>Widz\u0119 pewne problemy, je\u015bli sygna\u0142y IRQ lub wywo\u0142ania zwrotne RCU trafi\u0105 jednak do izolowanych j\u0105der, a <strong>Odpoczynek<\/strong> zniszczy\u0107. W\u00f3wczas przewaga znika, poniewa\u017c obci\u0105\u017cenie zak\u0142\u00f3caj\u0105ce pojawia si\u0119 w spos\u00f3b nieskoordynowany i powoduje jitter. Nieplanowane us\u0142ugi dzia\u0142aj\u0105ce w tle, timery lub modu\u0142y watchdog na odizolowanych procesorach maj\u0105 podobny, zak\u0142\u00f3caj\u0105cy wp\u0142yw. R\u00f3wnie\u017c obci\u0105\u017cenia mieszane z wieloma kr\u00f3tkimi zadaniami rozprzestrzeniaj\u0105 zak\u0142\u00f3cenia na tak szerok\u0105 skal\u0119, \u017ce tryb Full Tickless przynosi niewielkie korzy\u015bci. Dlatego wyra\u017anie planuj\u0119 rdzenie do zada\u0144 porz\u0105dkowych i testuj\u0119 ka\u017cdy krok przy u\u017cyciu realistycznych <strong>Profile<\/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\/09\/ticless_mode_tech_buer_1593.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Najwa\u017cniejsze opcje j\u0105dra w przyst\u0119pny spos\u00f3b<\/h2>\n\n<p>Z <strong>CONFIG_NO_HZ_IDLE<\/strong> Wy\u0142\u0105czam t\u0119 funkcj\u0119 na biegu ja\u0142owym i osi\u0105gam szybkie korzy\u015bci bez wi\u0119kszych zmian. <strong>CONFIG_NO_HZ_FULL<\/strong> Aktywuj\u0119 t\u0119 opcj\u0119 tylko wtedy, gdy \u015bci\u015ble izoluj\u0119 rdzenie i definiuj\u0119 \u201eczyste\u201d procesory do zada\u0144 serwisowych. Parametr rozruchowy nohz_full okre\u015bla, kt\u00f3re rdzenie dzia\u0142aj\u0105 w trybie bez taktowania; opcja isolcpus oddziela je od og\u00f3lnego harmonogramu. rcu_nocbs przenosi wywo\u0142ania zwrotne RCU z dala od tych rdzeni, podczas gdy irqaffinity ustala przypisanie przerwa\u0144. Dopiero w po\u0142\u0105czeniu te ustawienia dzia\u0142aj\u0105 stabilnie, a tym samym naprawd\u0119 <strong>przydatne<\/strong>.<\/p>\n\n<h2>Planowanie rdzeni us\u0142ug sprz\u0105tania<\/h2>\n\n<p>Rezerwuj\u0119 jedn\u0105 lub dwie <strong>j\u0105dra<\/strong> Ka\u017cdy w\u0119ze\u0142 NUMA pe\u0142ni rol\u0119 strefy obs\u0142ugi zada\u0144 systemowych dla sygna\u0142\u00f3w IRQ, w\u0105tk\u00f3w j\u0105dra i RCU. Rdzenie te przejmuj\u0105 nieuniknione zadania systemowe, pozostawiaj\u0105c izolowane rdzenie wolne. W tym celu celowo przypisuj\u0119 us\u0142ugi i kolejki IRQ do procesor\u00f3w obs\u0142uguj\u0105cych zadania systemowe i blokuj\u0119 je na cichych rdzeniach. Kto <a href=\"https:\/\/webhosting.de\/pl\/planowanie-klasy-procesora-serwera\/\">Klasy harmonogram\u00f3w procesora<\/a> rozumie, niezawodnie zarz\u0105dza priorytetami i zapewnia sprawiedliwo\u015b\u0107. Dzi\u0119ki temu \u015bcie\u017cki op\u00f3\u017anie\u0144 pozostaj\u0105 kr\u00f3tkie, a spokojne j\u0105dra zapewniaj\u0105 przewidywalne <strong>Czasy reakcji<\/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\/09\/entwicklerdesk_kernel_7123.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Praktyczny przewodnik: Krok po kroku<\/h2>\n\n<p>Ka\u017cdy projekt rozpoczynam od jasnego <strong>Linia bazowa<\/strong>-Run: op\u00f3\u017anienie, zu\u017cycie energii, przepustowo\u015b\u0107, jitter. Nast\u0119pnie sprawdzam, czy opcja NO_HZ_IDLE jest w\u0142\u0105czona i czy j\u0105dro obs\u0142uguje NO_HZ_FULL. Nast\u0119pnie przypisuj\u0119 powinowactwo IRQ, ustawiam rcu_nocbs i planuj\u0119 procesy porz\u0105dkowe. Dopiero wtedy izoluj\u0119 kilka rdzeni w celach testowych za pomoc\u0105 nohz_full i por\u00f3wnuj\u0119 wyniki. W szczeg\u00f3\u0142owej analizie pomaga mi ten przewodnik dotycz\u0105cy <a href=\"https:\/\/webhosting.de\/pl\/pomiar-opoznien-harmonogramu-systemu-linux-i-optymalizacja-wydajnosci\/\">Pomiar op\u00f3\u017anienia<\/a>, abym m\u00f3g\u0142 rzetelnie oceni\u0107 ka\u017cd\u0105 zmian\u0119.<\/p>\n\n<h2>Metody pomiaru i wska\u017aniki KPI<\/h2>\n\n<p>Mierz\u0119 od pocz\u0105tku do ko\u0144ca\u2014<strong>Op\u00f3\u017anienie<\/strong> z wykorzystaniem histogram\u00f3w i kwantylizacj\u0105 warto\u015bci odstaj\u0105cych, zamiast skupia\u0107 si\u0119 wy\u0142\u0105cznie na warto\u015bciach \u015brednich. PPS i op\u00f3\u017anienie ogona oceniam \u0142\u0105cznie, aby spokojne j\u0105dra nie obni\u017ca\u0142y przepustowo\u015bci. Zu\u017cycie energii mierz\u0119 za pomoc\u0105 RAPL, IPMI lub pod\u0142\u0105czonego licznika i obliczam oszcz\u0119dno\u015bci w <strong>Euro<\/strong> miesi\u0119cznie. Przyk\u0142ad: je\u015bli jeden serwer oszcz\u0119dza 12 W przy pracy w trybie 24\/7, to przy cenie 0,30 \u20ac\/kWh daje to oko\u0142o 3,15 \u20ac miesi\u0119cznie na jeden serwer. Przy 200 serwerach daje to znaczn\u0105 kwot\u0119 630 \u20ac miesi\u0119cznie.<\/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\/kernel-scheduler-tickless-8475.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Bli\u017csze spojrzenie: jak j\u0105dro naprawd\u0119 wy\u0142\u0105cza tiki<\/h2>\n<p>Za terminem \u201eTickless\u201d kryje si\u0119 przej\u015bcie z cyklicznego ticku na <strong>Jednorazowe wydarzenie zegarowe<\/strong>: J\u0105dro systemowe planuje nast\u0119pne \u201ezdarzenie\u201c dok\u0142adnie na najwcze\u015bniejszy moment wyga\u015bni\u0119cia timera lub podj\u0119cia decyzji przez harmonogram. Timery o wysokiej rozdzielczo\u015bci (hrtimer) umo\u017cliwiaj\u0105 precyzyjn\u0105 granulacj\u0119. Na <strong>NO_HZ_FULL<\/strong>-W procesorze nie wyst\u0119puje okresowy sygna\u0142 zegarowy harmonogramu, dop\u00f3ki dzia\u0142a tylko jedno zadanie i nie ma \u017cadnych zada\u0144 j\u0105dra do wykonania. Gdy tylko dwa lub wi\u0119cej zada\u0144 jest gotowych do wykonania, j\u0105dro ponownie uruchamia ten cykl, aby zapewni\u0107 sprawiedliwo\u015b\u0107 i prawid\u0142owy podzia\u0142 czasu. W\u0142a\u015bnie ta dynamika sprawia, \u017ce system pracuje ciszej, nie trac\u0105c przy tym poprawno\u015bci planowania.<\/p>\n\n<h2>HZ, licznik wysokiej rozdzielczo\u015bci i konto czasu<\/h2>\n<p>Sta\u0142a j\u0105dra <strong>HZ<\/strong> (zazwyczaj 250 lub 1000) okre\u015bla cz\u0119stotliwo\u015b\u0107 klasycznego tiku. W trybie bez-tiku (Tickless) warto\u015b\u0107 HZ traci praktyczne znaczenie dla j\u0105der, dla kt\u00f3rych czas wykonania ma kluczowe znaczenie, pozostaje jednak istotna dla logiki opartej na jiffies. Wa\u017cna jest r\u00f3wnie\u017c <strong>Przypisanie czasowe<\/strong> (VTIME\/Context Tracking): Aby czas u\u017cytkownika i czas systemowy by\u0142y prawid\u0142owo rejestrowane, j\u0105dro precyzyjnie \u015bledzi, kiedy zadanie znajduje si\u0119 w j\u0105drze, a kiedy w przestrzeni u\u017cytkownika \u2013 bez sta\u0142ego taktu. Osoby cz\u0119sto korzystaj\u0105ce z profilowania powinny o tym pami\u0119ta\u0107, aby w\u0142a\u015bciwie interpretowa\u0107 wyniki pomiar\u00f3w.<\/p>\n\n<h2>Mechanizmy oszcz\u0119dzania energii i tryb beztykowy<\/h2>\n<p>Tickless zapewnia oszcz\u0119dno\u015b\u0107 energii tylko wtedy, gdy platforma znajduje si\u0119 w stanie g\u0142\u0119bokiego <strong>Stany C<\/strong> osi\u0105gni\u0119te w spos\u00f3b niezawodny. Sprawdzam zatem ustawienia oprogramowania uk\u0142adowego i j\u0105dra zwi\u0105zane z intel_pstate\/amd-pstate, trybami turbo oraz <strong>cpufreq<\/strong>-Regulator wydajno\u015bci. Agresywny regulator wydajno\u015bci mo\u017ce skr\u00f3ci\u0107 op\u00f3\u017anienia, ale mo\u017ce te\u017c utrudnia\u0107 osi\u0105gni\u0119cie cel\u00f3w energetycznych. Z drugiej strony zbyt powolny regulator oszcz\u0119dzania energii mo\u017ce obni\u017cy\u0107 przepustowo\u015b\u0107. Moje podej\u015bcie: najpierw ustabilizowa\u0107 konfiguracj\u0119 trybu bez taktowania, a nast\u0119pnie systematycznie testowa\u0107 dostrajanie stan\u00f3w P i C, za ka\u017cdym razem przy u\u017cyciu identycznych profili obci\u0105\u017cenia.<\/p>\n\n<h2>Wirtualizacja i kontenery<\/h2>\n<p>Na hostach z hiperwizorem uruchamia <strong>Praca na biegu ja\u0142owym bez tykania<\/strong> cz\u0119sto od razu zauwa\u017calne oszcz\u0119dno\u015bci, poniewa\u017c nieaktywne procesory vCPU s\u0105 rzadziej uruchamiane. Dla <strong>NO_HZ_FULL<\/strong> izoluj\u0119 fizyczne j\u0105dra i precyzyjnie przypisuj\u0119 do nich vCPU krytycznych maszyn wirtualnych. Wa\u017cne: czas kradzie\u017cy (Steal-Time) i przerwania hosta (Host-IRQ) nie mog\u0105 zak\u0142\u00f3ca\u0107 dzia\u0142ania tych j\u0105der. W systemach-go\u015bciach tryb Full Tickless ma sens tylko wtedy, gdy host deterministycznie przydziela czas procesora. W \u015brodowiskach kontenerowych replikuj\u0119 logik\u0119 izolacji za pomoc\u0105 <strong>cgroups, zestawy procesor\u00f3w<\/strong> i zapobiegaj zajmowaniu cichych j\u0105der przez modu\u0142y systemowe lub sidecary.<\/p>\n\n<h2>Uspokojenie \u015bcie\u017cek sieciowych i pami\u0119ci masowej<\/h2>\n<p>Aby uzyska\u0107 ultra-niskie op\u00f3\u017anienia, \u0142\u0105cz\u0119 <strong>Kolejki RX\/TX<\/strong> oraz ich sygna\u0142y IRQ na procesorach obs\u0142uguj\u0105cych zadania pomocnicze. Na mniej obci\u0105\u017conych rdzeniach wol\u0119 korzysta\u0107 z odpytywania w przestrzeni u\u017cytkownika lub dedykowanych w\u0105tk\u00f3w zako\u0144czenia, zamiast zezwala\u0107 na sygna\u0142y IRQ. W przypadku NVMe mo\u017cna <strong>Afinno\u015b\u0107 kolejki IO<\/strong> Pomaga to w podobny spos\u00f3b. Metod\u0119 NAPI-Busy-Polling mo\u017cna celowo zastosowa\u0107, gdy wahania czasu odpytywania s\u0105 bardziej przewidywalne ni\u017c wahania czasu przerwa\u0144. Celem jest zapewnienie, by izolowane j\u0105dra nigdy nie by\u0142y nieoczekiwanie wybudzane przez zdarzenia zewn\u0119trzne.<\/p>\n\n<h2>Przyk\u0142ad: parametry rozruchowe i przypisanie<\/h2>\n<p>Oto jak przedstawiam minimaln\u0105 konfiguracj\u0119 (przyk\u0142adowo 16 rdzeni, rdzenie 0\u20131 przeznaczone do zada\u0144 administracyjnych; rdzenie 2\u20137 i 10\u201315 jako potencjalne \u017ar\u00f3d\u0142a obci\u0105\u017cenia; rdzenie 8\u20139 przeznaczone do us\u0142ug systemowych):<\/p>\n<pre><code>GRUB_CMDLINE_LINUX=\"nohz_full=2-7,10-15 rcu_nocbs=2-7,10-15 isolcpus=2-7,10-15 irqaffinity=0-1\"<\/code><\/pre>\n<p>Po uruchomieniu systemu konsekwentnie stosuj\u0119 Affinity i CPUsets:<\/p>\n<pre><code>Grupowanie sygna\u0142\u00f3w IRQ #\nfor i in $(grep -E 'eth0|nvme' \/proc\/interrupts | awk -F: '{print $1}'); do\n  echo 3 &gt; \/proc\/irq\/$i\/smp_affinity_list   # CPU 0-1\ndone\n\nPrzypisanie us\u0142ugi krytycznej pod wzgl\u0119dem op\u00f3\u017anie\u0144 do procesora #\ntaskset -c 2-3 \/usr\/bin\/moja_us\u0142uga\n\n# cgroup-cpuset dla us\u0142ug systemowych (przyk\u0142ad)\nmkdir -p \/sys\/fs\/cgroup\/cpuset\/housekeeping\necho 0-1,8-9 &gt; \/sys\/fs\/cgroup\/cpuset\/housekeeping\/cpuset.cpus\necho 0 &gt; \/sys\/fs\/cgroup\/cpuset\/housekeeping\/cpuset.mems\necho $$ &gt; \/sys\/fs\/cgroup\/cpuset\/housekeeping\/cgroup.procs<\/code><\/pre>\n<p>W jednostkach systemd dodatkowo korzystam z <strong>CPUAffinity=<\/strong> lub <strong>AllowedCPUs=<\/strong>, aby us\u0142ugi na sta\u0142e korzysta\u0142y z w\u0142a\u015bciwych j\u0105der.<\/p>\n\n<h2>Diagnoza: Sprawdzi\u0107, czy j\u0105dra rzeczywi\u015bcie dzia\u0142aj\u0105 cicho<\/h2>\n<p>Sprawdzam stan u\u015bpienia moich rdzeni za pomoc\u0105 kilku prostych czynno\u015bci:\n\u2013 \/proc\/interrupts: Czy licznik ro\u015bnie na izolowanych procesorach? Je\u015bli tak, nale\u017cy skorygowa\u0107 powinowactwo IRQ.\n\u2013 \/proc\/timer_list: zidentyfikuj nieoczekiwane timery na rdzeniach NO_HZ_FULL.\n\u2013 ftrace\/perf: uwidoczniaj wybudzenia, softirq i zdarzenia schedulera.\n\u2013 turbostat: sprawd\u017a czasy przebywania w stanach C.\nJe\u015bli na cichych rdzeniach nadal pojawiaj\u0105 si\u0119 softirq (NET_RX, TIMER), prawie zawsze oznacza to problem z rozk\u0142adem obci\u0105\u017cenia lub sterownikiem.<\/p>\n\n<h2>Wsp\u00f3\u0142praca z PREEMPT_RT i w\u0105tkami RT<\/h2>\n<p><strong>PREEMPT_RT<\/strong> zmniejsza op\u00f3\u017anienia poprzez przeniesienie preempcji g\u0142\u0119boko do j\u0105dra. W po\u0142\u0105czeniu z opcj\u0105 NO_HZ_FULL mo\u017ce to zapewni\u0107 bardzo dobre wyniki, je\u015bli przerwy IRQ dzia\u0142aj\u0105 jako w\u0105tki i pozostaj\u0105 \u015bci\u015ble na procesorach obs\u0142uguj\u0105cych zadania administracyjne. Wa\u017cne: nie nale\u017cy rozprasza\u0107 w\u0105tk\u00f3w RT na zbyt du\u017c\u0105 powierzchni\u0119, lecz przypi\u0105\u0107 je \u015bci\u015ble i kontrolowa\u0107 ich \u015bcie\u017cki pami\u0119ciowe (NUMA, b\u0142\u0119dy stron). Zawsze utrzymuj\u0119 w\u0105tki RT na izolowanych rdzeniach \u201esamodzielnie\u201c, aby \u017caden tick nie powr\u00f3ci\u0142 z powodu pojawienia si\u0119 drugiego zadania gotowego do wykonania.<\/p>\n\n<h2>Kiedy system \u201eFull Tickless\u201d nie jest op\u0142acalny<\/h2>\n<p>Rezygnuj\u0119 z NO_HZ_FULL, gdy:\n\u2013 Ci\u0105gle powstaje wiele kr\u00f3tkotrwa\u0142ych zada\u0144 (np. serie operacji fork\/exec).\n\u2013 obci\u0105\u017cenie jest silnie zsynchronizowane i nieustannie wymusza zmiany rdzeni;\n\u2013 platforma nie osi\u0105ga czystych stan\u00f3w C lub TSC jest niestabilny.\nW takich przypadkach czyste <strong>Przypisanie sygna\u0142\u00f3w IRQ i procesora<\/strong> cz\u0119sto przewy\u017csza koszt pe\u0142nej izolacji.<\/p>\n\n<h2>Subtelno\u015bci produkcji: monitorowanie i eksploatacja<\/h2>\n<p>W \u015brodowiskach produkcyjnych ostrzegam przed \u201epe\u0142zaj\u0105cymi\u201c zmianami: aktualizacja j\u0105dra, nowy agent lub zmiana mapowania IRQ mog\u0105 zak\u0142\u00f3ci\u0107 spok\u00f3j rdzeni. W zwi\u0105zku z tym wprowadzam:\n\u2013 Skrypt \u201eGuardrail\u201c, kt\u00f3ry po ponownym uruchomieniu systemu weryfikuje powinowactwo, zestawy procesor\u00f3w (CPUsets) oraz ustawienia RCU.\n\u2013 Metryki dotycz\u0105ce liczby wybudze\u0144 na sekund\u0119 (Wakeups\/s), czasu przebywania w stanach C oraz op\u00f3\u017anienia p99,9.\n\u2013 Okresowe <strong>Testy regresji<\/strong> przy identycznych obci\u0105\u017ceniach.\nTylko w ten spos\u00f3b mo\u017cna niezawodnie zachowa\u0107 zalety technologii bezimpulsowej.<\/p>\n\n<h2>Skuteczne eliminowanie \u017ar\u00f3de\u0142 jittera<\/h2>\n<p>Opr\u00f3cz sygna\u0142\u00f3w IRQ cz\u0119sto przyczyn\u0105 s\u0105 <strong>Timer w przestrzeni u\u017cytkownika<\/strong> (sleep\/usleep\/timerfd) w przypadku niestabilnych wzorc\u00f3w. Pracuj\u0119 z <em>op\u00f3\u017anienie timera<\/em> (prctl lub \/proc) i grupuj\u0119 terminy, aby j\u0105dro planowa\u0142o mniej pojedynczych wybudze\u0144. R\u00f3wnie\u017c operacje GC w tle w zarz\u0105dzanych \u015brodowiskach uruchomieniowych (JVM, Go) planuj\u0119 czasowo lub izoluj\u0119 je w j\u0105drach odpowiedzialnych za czynno\u015bci porz\u0105dkowe. Celem jest zawsze dopuszczenie na rdzeniach NO_HZ_FULL wy\u0142\u0105cznie absolutnie niezb\u0119dnych wybudze\u0144.<\/p>\n\n<h2>Interpretacja wska\u017anik\u00f3w KPI: uwidocznienie kompromis\u00f3w<\/h2>\n<p>Oceniam nie tylko warto\u015bci \u015brednie, ale tak\u017ce <strong>Dystrybucja<\/strong>: p50, p95, p99,9 i maksymalna. Typowy wzorzec poprawy wydajno\u015bci: op\u00f3\u017anienie ogonowe znacznie spada, \u015brednia przepustowo\u015b\u0107 pozostaje na tym samym poziomie lub nieznacznie wzrasta, a czas przebywania w stanie C ulega wyd\u0142u\u017ceniu. Je\u015bli natomiast zauwa\u017c\u0119 popraw\u0119 jittera, ale zauwa\u017calny spadek przepustowo\u015bci, dostosowuj\u0119 polityk\u0119 cz\u0119stotliwo\u015bci procesora lub ostro\u017cnie zwi\u0119kszam liczb\u0119 rdzeni w stanie spoczynku, aby nie dosz\u0142o do zator\u00f3w w kolejkach.<\/p>\n\n<h2>Lista kontrolna przed aktywacj\u0105 NO_HZ_FULL<\/h2>\n<p>\n\u2013 Funkcje j\u0105dra: CONFIG_NO_HZ_FULL, w\u0142\u0105czony zegar o wysokiej rozdzielczo\u015bci<br\/>\n\u2013 Jasno okre\u015blone role procesor\u00f3w: procesory do zada\u0144 administracyjnych zdefiniowane dla ka\u017cdego w\u0119z\u0142a NUMA<br\/>\n\u2013 Odci\u0105\u017canie IRQ i RCU: sp\u00f3jne ustawienie parametr\u00f3w irqaffinity i rcu_nocbs<br\/>\n\u2013 Umieszczanie us\u0142ug: udokumentowano i przetestowano przypisywanie w systemd\/cgroups<br\/>\n\u2013 Konfiguracja pomiarowa: powtarzalne obci\u0105\u017cenia, miarodajne wska\u017aniki KPI, por\u00f3wnanie <em>przed\/po<\/em><br\/>\n\u2013 Plan przywr\u00f3cenia: wpis rozruchowy dost\u0119pny bez NO_HZ_FULL\n<\/p>\n\n<h2>Typowe trudno\u015bci i sposoby ich pokonywania<\/h2>\n\n<p>Cz\u0119sto zauwa\u017cam, \u017ce us\u0142ugi systemowe dzia\u0142aj\u0105 na odizolowanych rdzeniach, a <strong>Izolacja<\/strong> ograniczy\u0107. Pomocne w tym s\u0105: systemd-Affinity, cgroups-CPUsets oraz przejrzysta dokumentacja us\u0142ug. R\u00f3wnie\u017c nieprawid\u0142owe rozmieszczenie w architekturze NUMA prowadzi do niepotrzebnych dost\u0119p\u00f3w zdalnych i skok\u00f3w op\u00f3\u017anie\u0144. \u015aci\u015ble przypisuj\u0119 pami\u0119\u0107 i w\u0105tki do danego w\u0119z\u0142a, aby \u015bcie\u017cki by\u0142y kr\u00f3tkie i sp\u00f3jne <strong>pobyt<\/strong>. Niejasny podzia\u0142 IRQ to trzeci typowy problem, dlatego skupiam kolejki o du\u017cym nat\u0119\u017ceniu ruchu na procesorach obs\u0142uguj\u0105cych zadania konserwacyjne.<\/p>\n\n<h2>Kr\u00f3tkie podsumowanie dla praktyki<\/h2>\n\n<p>Der <strong>beztykowy<\/strong> J\u0105dro ogranicza przeszkadzaj\u0105ce impulsy, oszcz\u0119dza energi\u0119 i zapewnia niezawodne okna czasowe dla wra\u017cliwych obci\u0105\u017ce\u0144. Dzi\u0119ki trybowi \u201eTickless Idle\u201d szybko osi\u0105gam wzrost wydajno\u015bci, a tryb \u201eFull Tickless\u201d zapewnia dodatkow\u0105 cisz\u0119 na izolowanych rdzeniach. Najwi\u0119kszy efekt widz\u0119, gdy starannie skupiam sygna\u0142y IRQ, RCU i zadania w tle na procesorach obs\u0142uguj\u0105cych zadania porz\u0105dkowe. Bez pomiar\u00f3w nic nie da si\u0119 osi\u0105gn\u0105\u0107: op\u00f3\u017anienia, wahania, zu\u017cycie energii i przepustowo\u015b\u0107 pokazuj\u0105 mi, czy dostrajanie przynosi efekty. W ten spos\u00f3b celowo stosuj\u0119 tryb tickless i wydobywam maksimum z <strong>harmonogram<\/strong> na zewn\u0105trz.<\/p>","protected":false},"excerpt":{"rendered":"<p>J\u0105dro typu \u201etickless\u201d w prostych s\u0142owach: zalety, zagro\u017cenia i optymalizacja j\u0105dra dla serwer\u00f3w, system\u00f3w HPC i system\u00f3w o niskim op\u00f3\u017anieniu.<\/p>","protected":false},"author":1,"featured_media":21500,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21507","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":"61","_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":"tickless mode","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":"21500","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21507","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=21507"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21507\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21500"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}