{"id":20626,"date":"2026-08-14T08:35:54","date_gmt":"2026-08-14T06:35:54","guid":{"rendered":"https:\/\/webhosting.de\/perf-top-linux-hotspots-kernel-tools\/"},"modified":"2026-08-14T08:35:54","modified_gmt":"2026-08-14T06:35:54","slug":"perf-top-linux-hotspots-narzedzia-jadra","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/perf-top-linux-hotspots-kernel-tools\/","title":{"rendered":"perf top Linux: wykrywanie punkt\u00f3w przegrzania procesora w j\u0105drze"},"content":{"rendered":"<p>Z <strong>perf top<\/strong> W systemie Linux w ci\u0105gu kilku sekund mog\u0119 ustali\u0107, kt\u00f3re funkcje j\u0105dra obecnie poch\u0142aniaj\u0105 najwi\u0119cej czasu procesora i gdzie powstaj\u0105 w\u0105skie gard\u0142a. W tym przewodniku, krok po kroku, poka\u017c\u0119, jak rozpoznawa\u0107 punkty newralgiczne w trybie na \u017cywo, prawid\u0142owo interpretowa\u0107 wyniki oraz na tej podstawie szybko wprowadza\u0107 optymalizacje dotycz\u0105ce harmonogramu, sieci i pami\u0119ci.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Uwa\u017cam, \u017ce widok na \u017cywo z <strong>perf<\/strong> To \u015bwietny punkt wyj\u015bcia, bo od razu pokazuje najwi\u0119ksze czynniki poch\u0142aniaj\u0105ce czas. Warto\u015bci procentowe przy poszczeg\u00f3lnych symbolach wskazuj\u0105 mi, czy w\u0105skie gard\u0142o wyst\u0119puje w <strong>J\u0105dro<\/strong> lub w przestrzeni u\u017cytkownika. Na podstawie powtarzaj\u0105cych si\u0119 wzorc\u00f3w ustalam, czy dominuj\u0105 blokady, przerwy IRQ, sie\u0107 czy pami\u0119\u0107. Nast\u0119pnie zaw\u0119\u017cam obszar problemu za pomoc\u0105 bardziej zaawansowanych narz\u0119dzi i sprawdzam zmiany bezpo\u015brednio pod obci\u0105\u017ceniem. W ten spos\u00f3b krok po kroku poprawiam <strong>CPU<\/strong>-Wykorzystanie mocy obliczeniowej i trwa\u0142e zmniejszenie op\u00f3\u017anie\u0144.<\/p>\n<ul>\n  <li><strong>Punkty dost\u0119powe na \u017cywo<\/strong> rozpoznawa\u0107 i ustala\u0107 priorytety<\/li>\n  <li><strong>Udzia\u0142y procentowe<\/strong> prawid\u0142owo interpretowa\u0107 ka\u017cd\u0105 funkcj\u0119<\/li>\n  <li><strong>G\u0142\u00f3wny obszar zainteresowania<\/strong> ustawi\u0107: IRQ, blokady, pami\u0119\u0107<\/li>\n  <li><strong>Przep\u0142yw pracy<\/strong>: g\u00f3ra \u2192 zapis \u2192 raport<\/li>\n  <li><strong>Optymalizacje<\/strong> dok\u0142adnie zweryfikowa\u0107<\/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\/08\/cpu-hotspots-linux-kernel-4872.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym jest \u201eperf top\u201d i do czego s\u0142u\u017cy?<\/h2>\n\n<p>U\u017cywam <strong>perf top<\/strong>, aby podczas dzia\u0142ania obci\u0105\u017cenia natychmiast sprawdzi\u0107, kt\u00f3re symbole poch\u0142aniaj\u0105 najwi\u0119ksz\u0105 cz\u0119\u015b\u0107 czasu procesora. Narz\u0119dzie to korzysta z sprz\u0119towych licznik\u00f3w wydajno\u015bci i w kr\u00f3tkich odst\u0119pach czasu wy\u015bwietla mi aktualizowany ranking najbardziej zasoboch\u0142onnych funkcji. Wed\u0142ug magazynu \u201eLinux-Magazin\u201d narz\u0119dzie perf obs\u0142uguje zar\u00f3wno profilowanie, jak i \u015bledzenie, co sprawia, \u017ce <strong>Widok na \u017cywo<\/strong> p\u0142ynnie \u0142\u0105czy si\u0119 z bardziej szczeg\u00f3\u0142owymi analizami. W ramach standardowej procedury uzupe\u0142niam ten migawkowy obraz za pomoc\u0105 narz\u0119dzi perf record i perf report, aby zbada\u0107 wykresy wywo\u0142a\u0144 i dok\u0142adne \u015bcie\u017cki. W ten spos\u00f3b odpowiadam na kluczowe pytanie: gdzie sp\u0119dza <strong>CPU<\/strong> czy to w\u0142a\u015bnie tam \u2013 w stosie sieciowym, w podsystemie pami\u0119ci, w harmonogramie zada\u0144 czy w sterowniku?<\/p>\n\n<h2>Zainstaluj i uruchom perf top<\/h2>\n\n<p>Po zainstalowaniu za pomoc\u0105 pakietu dystrybucyjnego uruchamiam <strong>perf<\/strong> top zazwyczaj uruchamia si\u0119 z rozszerzonymi uprawnieniami, aby wy\u015bwietla\u0107 symbole j\u0105dra i zdarzenia systemowe. Wystarczy po prostu uruchomi\u0107 polecenie \u201eperf top\u201c, aby uzyska\u0107 wst\u0119pny podgl\u0105d na \u017cywo i zidentyfikowa\u0107 dominuj\u0105ce funkcje. Je\u015bli chc\u0119 skupi\u0107 si\u0119 na poszczeg\u00f3lnych procesach, do\u0142\u0105czam <strong>PID<\/strong> z opcj\u0105 -p; w przypadku specjalnych procesor\u00f3w u\u017cywam opcji -C wraz z list\u0105 lub zakresem. Zdarzenia definiuj\u0119 za pomoc\u0105 opcji -e, na przyk\u0142ad cpu-cycles, instructions lub branch-misses, w zale\u017cno\u015bci od tego, jak\u0105 kwesti\u0119 chc\u0119 wyja\u015bni\u0107. Aby uzyska\u0107 powtarzalne wyniki, uruchamiam pomiar podczas rzeczywistego obci\u0105\u017cenia, tak aby <strong>Hotspoty<\/strong> by\u0107 wyra\u017anie s\u0142yszalne i nie gin\u0105\u0107 w szumie pracy na biegu ja\u0142owym.<\/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\/cpuhotspotslinux3746.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Jak prawid\u0142owo czyta\u0107 to wydanie<\/h2>\n\n<p>Na li\u015bcie oceniam najpierw <strong>Warto\u015bci procentowe<\/strong> na symbol, poniewa\u017c odzwierciedlaj\u0105 one wzgl\u0119dne udzia\u0142y czasowe. Wysokie udzia\u0142y funkcji systemowych wskazuj\u0105 na w\u0105skie gard\u0142o w j\u0105drze, podczas gdy dominuj\u0105ce symbole przestrzeni u\u017cytkownika raczej wskazuj\u0105 na logik\u0119 aplikacji. Je\u015bli widz\u0119 wiele procedur harmonogramu, my\u015bl\u0119 o zbyt du\u017cej liczbie aktywnych w\u0105tk\u00f3w, niekorzystnych powinowactwach lub nieodpowiednich priorytetach. Je\u015bli na g\u00f3rze pojawiaj\u0105 si\u0119 funkcje pami\u0119ci, sprawdzam wzorce alokacji, b\u0142\u0119dy stronicowania, lokalno\u015b\u0107 NUMA i pami\u0119ci podr\u0119czne. W przypadku \u015bcie\u017cek sieciowych zwracam uwag\u0119 na rozk\u0142ad IRQ, ustawienia Gro\/TSO oraz zachowanie sterownik\u00f3w, poniewa\u017c takie szczeg\u00f3\u0142y maj\u0105 wp\u0142yw na <strong>Op\u00f3\u017anienie<\/strong> wywiera\u0107 znacz\u0105cy wp\u0142yw.<\/p>\n\n<h2>Typowe przyczyny powstawania \u201ehotspot\u00f3w\u201d w j\u0105drze systemu<\/h2>\n\n<p>Wiele \u201ehotspot\u00f3w\u201d powstaje, poniewa\u017c wiele drobnych koszt\u00f3w sumuje si\u0119, tworz\u0105c du\u017c\u0105 <strong>Obci\u0105\u017cenie<\/strong> sumuj\u0105 si\u0119. Cz\u0119sto nadmierne zmiany kontekstu, rywalizacja o blokady oraz nier\u00f3wnomierny rozk\u0142ad sygna\u0142\u00f3w IRQ zwi\u0119kszaj\u0105 czas procesora. Podobnie fragmentowane struktury pami\u0119ci, nieefektywne wykorzystanie slab\u00f3w lub ci\u0105g\u0142e stronicowanie powoduj\u0105 niepotrzebne cykle. Je\u015bli zwr\u00f3c\u0119 uwag\u0119 na konkretny sterownik, koreluj\u0119 to z obci\u0105\u017ceniem, sprz\u0119tem i wersj\u0105, aby ograniczy\u0107 skutki uboczne. W przypadku system\u00f3w wielordzeniowych sprawdzam r\u00f3wnie\u017c zjawisko false sharing, poniewa\u017c zgodnie z dokumentacj\u0105 j\u0105dra wsp\u00f3\u0142dzielone linie pami\u0119ci podr\u0119cznej szybko prowadz\u0105 do kosztownego <strong>Nad g\u0142ow\u0105<\/strong> mo\u017ce spowodowa\u0107.<\/p>\n\n<h2>Przyk\u0142adowa analiza punktu newralgicznego<\/h2>\n\n<p>Je\u015bli zauwa\u017c\u0119, \u017ce przez d\u0142u\u017cszy czas w funkcjach zwi\u0105zanych z sieci\u0105 utrzymuj\u0105 si\u0119 bardzo wysokie udzia\u0142y, w pierwszej kolejno\u015bci rozr\u00f3\u017cniam rodzaje obci\u0105\u017cenia: ma\u0142e pakiety kontra du\u017ce pakiety, TLS kontra tekst jawny, wiele po\u0142\u0105cze\u0144 kontra kilka d\u0142ugotrwa\u0142ych sesji, aby <strong>Przyczyna<\/strong> ograniczy\u0107. Nast\u0119pnie analizuj\u0119 to dok\u0142adniej za pomoc\u0105 polece\u0144 `perf record` i `perf report`, w\u0142\u0105czam wykresy wywo\u0142a\u0144 (-g) i por\u00f3wnuj\u0119 \u015bcie\u017cki w kilku przebiegach. Je\u015bli natomiast problem dotyczy zarz\u0105dzania pami\u0119ci\u0105, sprawdzam alokator, Huge Pages, ustawienia THP oraz powinowactwo NUMA, poniewa\u017c w tym obszarze szybko powstaj\u0105 zb\u0119dne \u015bcie\u017cki. Punkty newralgiczne harmonogramu cz\u0119sto interpretuj\u0119 jako oznak\u0119 zbyt du\u017cej liczby w\u0105tk\u00f3w gotowych do wykonania lub nieodpowiedniego przypisania do procesora. Zmieniam zawsze tylko jeden <strong>Parametry<\/strong> na ka\u017cdy przebieg, abym m\u00f3g\u0142 precyzyjnie przypisa\u0107 efekt.<\/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\/linux-cpu-hotspots-perf-top-7351.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Perf Top w \u015brodowiskach hostingowych<\/h2>\n\n<p>W scenariuszach zwi\u0105zanych z hostingiem cz\u0119sto zauwa\u017cam, jak niewielkie koszty j\u0105dra wp\u0142ywaj\u0105 na <strong>Op\u00f3\u017anienie<\/strong> wielu us\u0142ug. R\u00f3wnolegle dzia\u0142aj\u0105ce kontenery, maszyny wirtualne i instancje baz danych wyra\u017anie przesuwaj\u0105 profil w kierunku sieci, pami\u0119ci masowej i harmonogramu. Dzi\u0119ki narz\u0119dziu perf top mog\u0119 stwierdzi\u0107, czy w\u0105skie gard\u0142a dotycz\u0105 raczej obs\u0142ugi IRQ, przetwarzania SoftIRQ, czy te\u017c \u015bcie\u017cek blokad. Nast\u0119pnie uwzgl\u0119dniam w analizie wersj\u0119 j\u0105dra, uk\u0142ad NUMA, powinowactwa IRQ oraz g\u0142\u0119boko\u015bci kolejek, poniewa\u017c czynniki te oddzia\u0142uj\u0105 na siebie. Osoby pragn\u0105ce zg\u0142\u0119bi\u0107 ten temat znajd\u0105 w niniejszym przewodniku po <a href=\"https:\/\/webhosting.de\/pl\/narzedzie-linux-perf-analiza-waskich-gardel-procesora-optymalizacja-obciazenie-serwera-profilowanie\/\">Analiza w\u0105skich garde\u0142 procesora<\/a> kolejne praktyczne wskaz\u00f3wki, z kt\u00f3rych regularnie korzystam w praktyce.<\/p>\n\n<h2>Praktyczny przewodnik po analizie<\/h2>\n\n<p>Zaczn\u0119 od scenariusza obci\u0105\u017cenia, kt\u00f3ry da si\u0119 powt\u00f3rzy\u0107, aby pomiary by\u0142y por\u00f3wnywalne i <strong>Hotspoty<\/strong> pojawiaj\u0105 si\u0119 stabilnie. Nast\u0119pnie uruchamiam perf top i zapisuj\u0119 dominuj\u0105ce symbole na przestrzeni kilku aktualizacji. T\u0119 migawk\u0119 przetwarzam za pomoc\u0105 perf record\/report, uzyskuj\u0105c przejrzysty obraz wykres\u00f3w wywo\u0142a\u0144 (callgraphs), co pozwala mi zidentyfikowa\u0107 \u015bcie\u017ck\u0119 prowadz\u0105c\u0105 do kosztownego miejsca. Nast\u0119pnie celowo zmieniam tylko jedn\u0105 rzecz, na przyk\u0142ad powinowactwo IRQ lub g\u0142\u0119boko\u015b\u0107 kolejki, i ponownie dokonuj\u0119 pomiaru. Dopiero gdy efekt jest wyra\u017any, przechodz\u0119 do nast\u0119pnego <strong>Krok<\/strong> analizuj\u0119 i dokumentuj\u0119 uzyskane informacje na potrzeby przysz\u0142ych okres\u00f3w konserwacji.<\/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\/TechOffice_Nacht_CPUs_3421.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kiedy warto skorzysta\u0107 z innych narz\u0119dzi<\/h2>\n\n<p>Aby uzyska\u0107 perspektyw\u0119 historyczn\u0105, bardziej szczeg\u00f3\u0142owe wykresy wywo\u0142a\u0144 lub konkretne \u0142a\u0144cuchy zdarze\u0144, korzystam z <strong>perf<\/strong> record\/report, ftrace lub eBPF. Punkty \u015bledzenia pomagaj\u0105 mi w ukierunkowanym analizowaniu \u015bcie\u017cek, podczas gdy programy BPF pozwalaj\u0105 mi uzyska\u0107 elastyczne metryki. Je\u015bli chc\u0119 przyjrze\u0107 si\u0119 dok\u0142adniej \u015bcie\u017ckom j\u0105dra, dostarczaj\u0105 <a href=\"https:\/\/webhosting.de\/pl\/ebpf-linux-narzedzia-analityczne-monitorowanie-serwerow-spostrzezenia\/\">Narz\u0119dzia analityczne eBPF<\/a> cenne sygna\u0142y bezpo\u015brednio w miejscu zdarzenia. W przypadku problem\u00f3w z pami\u0119ci\u0105 podr\u0119czn\u0105 i wsp\u00f3\u0142dzieleniem pomocne s\u0105 narz\u0119dzia perf-c2c i pahole, o ile punkt aktywno\u015bci zosta\u0142 jasno zidentyfikowany. W ten spos\u00f3b przechodz\u0119 od analizy widoku na \u017cywo do ustalenia przyczyny, nie zag\u0142\u0119biaj\u0105c si\u0119 w nieistotne <strong>szczeg\u00f3\u0142y<\/strong> przegra\u0107.<\/p>\n\n<h2>Opcje pr\u00f3bkowania i filtry w praktyce<\/h2>\n\n<p>Pasuj\u0119. <strong>Pobieranie pr\u00f3bek<\/strong>-Stosuj\u0119 strategi\u0119 dostosowan\u0105 do konkretnego problemu, zamiast mierzy\u0107 wszystko w spos\u00f3b og\u00f3lny. W przypadku sporadycznych skok\u00f3w zwi\u0119kszam cz\u0119stotliwo\u015b\u0107 pr\u00f3bkowania i skracam interwa\u0142y wy\u015bwietlania, aby uchwyci\u0107 przelotne szczyty. Aby skupi\u0107 si\u0119 na procesie, ustawiam opcj\u0119 -p na odpowiedni identyfikator PID, a aby skupi\u0107 si\u0119 na procesorze \u2013 opcj\u0119 -C na aktywnych rdzeniach. Za pomoc\u0105 opcji -e steruj\u0119 zdarzeniem, na przyk\u0142ad cpu-cycles w przypadku szerokiego profilowania lub cache-misses, gdy podejrzewam problemy z pami\u0119ci\u0105. Z wykres\u00f3w wywo\u0142a\u0144 (-g) korzystam, gdy tylko z grubsza zlokalizuj\u0119 punkt newralgiczny i <strong>Przyczyna<\/strong> chce znale\u017a\u0107 w stosie.<\/p>\n\n<p>Poni\u017csza tabela przedstawia przydatne w praktyce kombinacje klawiszy, z kt\u00f3rych cz\u0119sto korzystam na co dzie\u0144, a tak\u017ce typowe zastosowania poszczeg\u00f3lnych opcji:<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Opcja<\/th>\n      <th>Efekt<\/th>\n      <th>U\u017cycie<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>-p<\/strong> PID<\/td>\n      <td>Ogranicza pomiar do jednego procesu<\/td>\n      <td>Specyficzne dla aplikacji <strong>Hotspoty<\/strong> ograniczy\u0107<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>-C<\/strong> Lista procesor\u00f3w<\/td>\n      <td>Skupienie si\u0119 na wybranych obszarach kluczowych<\/td>\n      <td>Sprawd\u017a przydzia\u0142 NUMA\/IRQ<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>-e<\/strong> Wydarzenie<\/td>\n      <td>Wybierz zdarzenie sprz\u0119towe lub programowe<\/td>\n      <td>cykle, instrukcje, nieudane odwo\u0142ania do pami\u0119ci podr\u0119cznej<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>-g<\/strong><\/td>\n      <td>W\u0142\u0105cza pr\u00f3bkowanie Callgraph<\/td>\n      <td>Kosztowne \u015bcie\u017cki w <strong>Stos<\/strong> Rozpoznawa\u0107<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>\u2013j\u0105dro\/\u2013u\u017cytkownik<\/strong><\/td>\n      <td>Filtruje na poziomie j\u0105dra lub przestrzeni u\u017cytkownika<\/td>\n      <td>Oddzielenie \u017ar\u00f3d\u0142a czasu procesora<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>\u2013sort<\/strong><\/td>\n      <td>Posortowane wed\u0142ug symbolu, DSO, dso:symbol<\/td>\n      <td>Czytelno\u015b\u0107 <strong>Ranking<\/strong> wzrost<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Zawsze najpierw kr\u00f3tko testuj\u0119 konfiguracje, zanim rozpoczn\u0119 d\u0142u\u017csze pomiary, aby <strong>Wy\u015bwietlacz<\/strong> pozostaje stabilny i nie wyst\u0119puj\u0105 \u017cadne skutki uboczne. Zw\u0142aszcza przy wysokiej cz\u0119stotliwo\u015bci pr\u00f3bkowania zwracam uwag\u0119 na obci\u0105\u017cenie systemowe, aby nie obci\u0105\u017ca\u0107 systemu niepotrzebnie. W przypadku host\u00f3w kontenerowych sprawdzam dodatkowo, czy ograniczenia przestrzeni nazw i grup cgroup nie zaw\u0119\u017caj\u0105 widoku. Aby zapewni\u0107 powtarzalno\u015b\u0107 test\u00f3w por\u00f3wnawczych, dokumentuj\u0119 wszystkie opcje, w tym wersje j\u0105dra i sterownik\u00f3w. Ta dyscyplina pozwala mi p\u00f3\u017aniej zaoszcz\u0119dzi\u0107 wiele <strong>Czas<\/strong> przy klasyfikacji zmian.<\/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\/cpuhotspots_kernel1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Interpretacja podsystem\u00f3w: sie\u0107, pami\u0119\u0107, harmonogram<\/h2>\n\n<p>Je\u015bli \u015bcie\u017cki sieciowe znajduj\u0105 si\u0119 na g\u00f3rze listy, najpierw sprawdzam przypisania IRQ, RSS (Receive-Side-Scaling) oraz mechanizmy odci\u0105\u017caj\u0105ce, takie jak GRO\/TSO, poniewa\u017c te parametry maj\u0105 wp\u0142yw na <strong>Przepustowo\u015b\u0107<\/strong>-Zmiana balansu op\u00f3\u017anie\u0144. W przypadku nietypowych zachowa\u0144 pami\u0119ci sprawdzam wzorce alokacji, strony typu \u201eHuge Pages\u201d, statystyki slab\u00f3w oraz wska\u017aniki b\u0142\u0119d\u00f3w stron. Obci\u0105\u017cenie harmonogramu cz\u0119sto wi\u0105\u017c\u0119 z nadmiern\u0105 liczb\u0105 w\u0105tk\u00f3w, brakiem powinowactwa procesora lub niesprawiedliwym ustalaniem priorytet\u00f3w. W przypadku konkretnych zdarze\u0144 j\u0105dra dodatkowo ustawiam punkty \u015bledzenia lub korzystam z <a href=\"https:\/\/webhosting.de\/pl\/bpftrace-szybsze-wykrywanie-problemow-z-serwerem-hostingowym-i-diagnoza\/\">bpftrace w hostingu<\/a>, aby potwierdzi\u0107 hipotezy. W ten spos\u00f3b \u0142\u0105cz\u0119 obserwacje na \u017cywo z perf top z danymi z g\u0142\u0119bszych punkt\u00f3w pomiarowych i szybciej dochodz\u0119 do w\u0142a\u015bciwego <strong>Przyczyna<\/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-kernel-hotspots-7894.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Warunki i widoczno\u015b\u0107 symboli<\/h2>\n\n<p>Tak wi\u0119c <strong>perf top<\/strong> rozwi\u0105zuj\u0105c wszystkie istotne symbole j\u0105dra, zwracam uwag\u0119 na dwie rzeczy: odpowiednie uprawnienia i dost\u0119pne informacje o symbolach. W systemach produkcyjnych <em>kernel.perf_event_paranoid<\/em> cz\u0119sto ustawiana na wysok\u0105 warto\u015b\u0107. Aby uzyska\u0107 szczeg\u00f3\u0142owy wgl\u0105d w j\u0105dro, tymczasowo zmniejszam t\u0119 warto\u015b\u0107 lub pracuj\u0119 jako u\u017cytkownik root z niezb\u0119dnymi uprawnieniami (CAP_PERFMON\/CAP_SYS_ADMIN). Je\u015bli adresy j\u0105dra s\u0105 zamaskowane (<em>kptr_restrict<\/em>), zazwyczaj i tak widz\u0119 nazwy, ale nie adresy surowe \u2013 to mi wystarcza do ustalenia priorytet\u00f3w. W przestrzeni u\u017cytkownika instaluj\u0119 odpowiednie pakiety informacji debugowania, aby narz\u0119dzie perf top wy\u015bwietla\u0142o nazwy funkcji zamiast offset\u00f3w. Ogranicza to zgadywanie i przyspiesza dotarcie do przyczyny.<\/p>\n\n<h2>Warto\u015bci procentowe i pu\u0142apki zwi\u0105zane z pr\u00f3bkowaniem<\/h2>\n\n<p>Warto\u015bci procentowe na li\u015bcie interpretuj\u0119 jako <strong>udzia\u0142y wzgl\u0119dne<\/strong> zmierzonych pr\u00f3bek, a nie jako dok\u0142adne obci\u0105\u017cenie procesora w zakresie czasowym. Je\u015bli wybior\u0119 kilka zdarze\u0144, to <strong>Multipleksowanie<\/strong> dzia\u0142aj\u0105: Perf rozk\u0142ada kontrataki w czasie i <em>znormalizowany<\/em> wykres. Aby uzyska\u0107 przejrzysty obraz sytuacji, najpierw dokonuj\u0119 szerokiego pomiaru za pomoc\u0105 cykli procesora lub instrukcji, a dopiero p\u00f3\u017aniej dodaj\u0119 zdarzenia specjalne. Kr\u00f3tkotrwa\u0142e skoki wychwytuj\u0119 przy wy\u017cszej cz\u0119stotliwo\u015bci (-F) i kr\u00f3tszych odst\u0119pach czasu; w przypadku spokojnie dzia\u0142aj\u0105cych system\u00f3w wystarcza cz\u0119stotliwo\u015b\u0107 standardowa. Zwracam r\u00f3wnie\u017c uwag\u0119, \u017ce <strong>Bezczynno\u015b\u0107<\/strong>-fazy i zmiany cz\u0119stotliwo\u015bci (turbo, regulator), kt\u00f3re mog\u0105 zniekszta\u0142ca\u0107 odczyty. W celu przeprowadzenia pomiar\u00f3w por\u00f3wnawczych ujednolicam zatem ustawienia taktowania i energii.<\/p>\n\n<h2>Dog\u0142\u0119bna analiza wykres\u00f3w wywo\u0142a\u0144<\/h2>\n\n<p>Gdy zidentyfikuj\u0119 punkt newralgiczny, zwi\u0119kszam trafno\u015b\u0107 diagnozy za pomoc\u0105 wykres\u00f3w wywo\u0142a\u0144. Za pomoc\u0105 <strong>-g<\/strong> Dzi\u0119ki odpowiedniej metodzie rozwijania uzyskuj\u0119 \u015bcie\u017ck\u0119 do kosztownego miejsca. Wska\u017aniki ramki lub rozwijanie DWARF zapewniaj\u0105 mi stabilne stosy; tam, gdzie to mo\u017cliwe, korzystam ze sprz\u0119towych bufor\u00f3w powrot\u00f3w (LBR) w celu uzyskania bardzo precyzyjnych \u0142a\u0144cuch\u00f3w. Zwi\u0119kszam bufory mmap tylko w takim stopniu, w jakim jest to konieczne, aby ograniczy\u0107 obci\u0105\u017cenie systemowe. Je\u015bli stos zawiera wiele funkcji pomocniczych, zwracam uwag\u0119 na <strong>\u0142\u0105cznie<\/strong> vs. <strong>ekskluzywny<\/strong> Koszty: Decyduj\u0105ce znaczenie ma to, czy sama funkcja jest kosztowna, czy te\u017c dominuje jedynie jako odcinek tranzytowy. To rozr\u00f3\u017cnienie cz\u0119sto pozwala mi zaoszcz\u0119dzi\u0107 wiele godzin po\u015bwi\u0119conych na poszukiwanie przyczyn.<\/p>\n\n<h2>Praca w kontenerach i maszynach wirtualnych<\/h2>\n\n<p>W \u015brodowiskach kontenerowych sprawdzam, czy m\u00f3j widok na <strong>cgroups<\/strong> oraz przestrzenie nazw s\u0105 poprawne. Skupiam pomiary na istotnych identyfikatorach PID i procesorach, aby ha\u0142a\u015bliwi s\u0105siedzi nie zafa\u0142szowali obrazu. W przypadku maszyn wirtualnych sprawdzam, czy wirtualny modu\u0142 PMU jest w\u0142\u0105czony; w przeciwnym razie brakuje mi precyzyjnych zdarze\u0144 sprz\u0119towych i widz\u0119 g\u0142\u00f3wnie sygna\u0142y programowe. Hosty KVM cz\u0119sto rozpoznaj\u0119 po symbolach wok\u00f3\u0142 <em>kvm_vcpu<\/em> lub <em>vmx<\/em>\/<em>svm<\/em>. W takich sytuacjach staram si\u0119 wyra\u017anie oddzieli\u0107 analiz\u0119 hosta od analizy go\u015bcia, aby nie pomyli\u0107 przyczyny ze skutkiem.<\/p>\n\n<h2>Rozpoznawalne wzorce i szybkie hipotezy<\/h2>\n\n<p>W codziennym \u017cyciu sprawdzi\u0142y si\u0119 pewne schematy, kt\u00f3re od razu sprawdzam:<\/p>\n<ul>\n  <li><strong>Konkurencja w zakresie zamk\u00f3w<\/strong>: Nurkowanie <em>queued_spin_lock_slowpath<\/em> lub <em>mutex_spin_on_owner<\/em> Je\u015bli problem le\u017cy na tym poziomie, oznacza to, \u017ce struktury danych s\u0105 zbyt og\u00f3lne lub kolejki zada\u0144 zbyt w\u0105skie. Ograniczam konflikt dost\u0119pu poprzez sharding, bardziej precyzyjn\u0105 granularno\u015b\u0107 blokad lub zmian\u0119 rozmiar\u00f3w partii.<\/li>\n  <li><strong>Drukowanie harmonogramu<\/strong>: Coraz cz\u0119\u015bciej <em>schedule()<\/em>, <em>wybierz_nast\u0119pne_zadanie_sprawiedliwie<\/em> lub \u015bcie\u017cki wybudzania, dostosowuj\u0119 liczb\u0119 w\u0105tk\u00f3w, powinowactwa i priorytety. Cz\u0119sto wystarczy \u201cuspokoi\u0107\u201d \u201egadatliwe\u201d w\u0105tki lub precyzyjnie zdefiniowa\u0107 ustawienia procesora.<\/li>\n  <li><strong>Softirq sieciowe<\/strong>: Najwy\u017csze warto\u015bci w <em>net_rx_action<\/em>, <em>napi_poll<\/em> lub odci\u0105\u017canie sum kontrolnych wskazuje na zalew pakiet\u00f3w lub nieoptymalny rozk\u0142ad sygna\u0142\u00f3w RSS i IRQ. Przypisuj\u0119 sygna\u0142y IRQ do odpowiednich j\u0105der i dostosowuj\u0119 parametry GRO\/TSO pod k\u0105tem po\u017c\u0105danego profilu przepustowo\u015bci i op\u00f3\u017anienia.<\/li>\n  <li><strong>\u015acie\u017cki dost\u0119pu do pami\u0119ci<\/strong>: Sp\u0119dzam du\u017co czasu w <em>do_page_fault<\/em>, <em>copy_user_*<\/em> lub funkcje typu \u201eSlab\u201d pozwalaj\u0105 mi sprawdzi\u0107 wzorce alokacji, THP\/Huge Pages oraz lokalno\u015b\u0107 NUMA. Niew\u0142a\u015bciwe rozmieszczenie powoduje tutaj, niezauwa\u017calnie, strat\u0119 bardzo du\u017cej liczby cykli.<\/li>\n  <li><strong>RCU i timery<\/strong>: Dominowa\u0107 <em>rcu_core<\/em> lub wywo\u0142ania zwrotne z timerem, analizuj\u0119 strategie odpytywania i przetwarzania wsadowego moich us\u0142ug, aby zapewni\u0107 p\u0142ynniejsze dzia\u0142anie systemu.<\/li>\n<\/ul>\n\n<h2>Pog\u0142\u0119bienie wiedzy na temat dyscypliny pomiarowej i powtarzalno\u015bci<\/h2>\n\n<p>Aby zapewni\u0107 rzetelne por\u00f3wnania wynik\u00f3w, utrzymuj\u0119 sta\u0142e czynniki \u015brodowiskowe: regulator procesora, stany turbo, zadania dzia\u0142aj\u0105ce w tle, a nawet temperatur\u0119 otoczenia w przypadku g\u0119sto upakowanych w\u0119z\u0142\u00f3w. Przypisuj\u0119 obci\u0105\u017cenia testowe do okre\u015blonych rdzeni i opcjonalnie izoluj\u0119 \u201egor\u0105ce\u201d procesory, aby decyzje harmonogramu pozostawa\u0142y stabilne. Wszelkie zmiany dokumentuj\u0119 wraz z wersjami j\u0105dra, sterownik\u00f3w i oprogramowania uk\u0142adowego. W przypadku bardziej ryzykownych modyfikacji planuj\u0119 punkty przywracania i ponownie dokonuj\u0119 pomiar\u00f3w bezpo\u015brednio po wprowadzeniu zmian. W ten spos\u00f3b uzyskuj\u0119 wiarygodne <strong>Przed\/Po<\/strong>-Historia, kt\u00f3r\u0105 potrafi\u0119 zrozumie\u0107 nawet miesi\u0105ce p\u00f3\u017aniej.<\/p>\n\n<h2>Praktyczne wskaz\u00f3wki: polecenia, z kt\u00f3rych cz\u0119sto korzystam<\/h2>\n\n<p>W zale\u017cno\u015bci od pytania stosuj\u0119 zwi\u0119z\u0142e receptury:<\/p>\n<ul>\n  <li><strong>Szeroki zakres pomiar\u00f3w w warunkach obci\u0105\u017cenia<\/strong>: perf top -e cpu-cycles \u2013kernel \u2013user<br\/>Szybki przegl\u0105d pozwalaj\u0105cy sprawdzi\u0107, czy to j\u0105dro, czy przestrze\u0144 u\u017cytkownika ma tu ostatnie s\u0142owo.<\/li>\n  <li><strong>Analiza procesu za pomoc\u0105 Callgraph<\/strong>: perf top -p PID -g \u2013kernel \u2013user<br\/>Poka\u017c mi \u015bcie\u017cki dzia\u0142ania danej aplikacji w czasie rzeczywistym, bez zak\u0142\u00f3ce\u0144 systemowych.<\/li>\n  <li><strong>Skupienie na procesorze<\/strong>: perf top -C 2-5 -e cpu-cycles -g<br\/>Pomaga w przypadku \u201cgor\u0105cych punkt\u00f3w\u201d NUMA lub IRQ, gdy tylko kilka rdzeni \u201esi\u0119 przegrzewa\u201d.<\/li>\n  <li><strong>Podejrzenie o przechowywanie<\/strong>: perf top -e cache-misses -e cycles -g \u2013kernel<br\/>Wy\u015bwietla \u015bcie\u017cki pami\u0119ci w odniesieniu do cykli.<\/li>\n  <li><strong>Przymocowanie tymczasowych kolc\u00f3w<\/strong>: perf top -F 999 -I 1000 -e cykle<br\/>Wy\u017csza cz\u0119stotliwo\u015b\u0107 i kr\u00f3tsze interwa\u0142y wy\u015bwietlania pozwalaj\u0105 uchwyci\u0107 kr\u00f3tkie skoki.<\/li>\n<\/ul>\n\n<h2>Wskaz\u00f3wki dotycz\u0105ce interpretacji dla poszczeg\u00f3lnych podsystem\u00f3w<\/h2>\n\n<p>Na stronie <strong>Sie\u0107<\/strong> Opr\u00f3cz \u015bcie\u017cek NAPI i RX\/TX obserwuj\u0119 r\u00f3wnie\u017c udzia\u0142 TLS\/krypto, kt\u00f3ry przy du\u017cej liczbie uzgodnie\u0144 mo\u017ce dominowa\u0107. Sprawdzam, czy techniki zero-copy lub coalescing dzia\u0142aj\u0105 skutecznie oraz czy du\u017ce segmenty (TSO\/GSO) przekraczaj\u0105 moje limity op\u00f3\u017anie\u0144. W <strong>Pami\u0119\u0107<\/strong>-W tym zakresie sprawdzam w THP: czy to pomaga mi w obci\u0105\u017ceniu, czy te\u017c zdarzenia typu \u201esplit\/merge\u201d powoduj\u0105 zak\u0142\u00f3cenia? W przypadku <strong>Przechowywanie<\/strong> t\u0142umacz\u0119 <em>blk_mq<\/em>-Symbole i \u015bcie\u017cki io_uring jako wskaz\u00f3wka dotycz\u0105ca g\u0142\u0119boko\u015bci kolejek i strategii scalania. W przypadku <strong>harmonogram<\/strong> \u0141\u0105cz\u0119 lawiny budzenia z \u0142a\u0144cuchami blokad lub \u0142a\u0144cuchami wej\u015bcia\/wyj\u015bcia i wyr\u00f3wnuj\u0119 obci\u0105\u017cenie \u015bcie\u017cek za pomoc\u0105 przeciwci\u015bnienia zamiast \u201cwi\u0119kszej liczby w\u0105tk\u00f3w\u201d.<\/p>\n\n<h2>Ograniczenia perf top i kiedy zmieniam kierunek<\/h2>\n\n<p>Poniewa\u017c <strong>perf top<\/strong> poniewa\u017c opiera si\u0119 na pr\u00f3bkowaniu, lepiej dostrzegam og\u00f3lny obraz ni\u017c pojedyncze zdarzenia. W przypadku deterministycznych \u0142a\u0144cuch\u00f3w przebiegu prze\u0142\u0105czam si\u0119 na punkty \u015bledzenia (Tracepoints), ftrace lub eBPF, aby precyzyjnie wykaza\u0107 zwi\u0105zki przyczynowo-skutkowe. Je\u015bli potrzebuj\u0119 dok\u0142adnej kwantyfikacji (np. instrukcji na \u017c\u0105danie), \u0142\u0105cz\u0119 to z <strong>statystyka perf<\/strong> lub analizy offline z perf record\/report. Je\u015bli natrafiam na niejasne stosy (brakuj\u0105ce symbole, b\u0142\u0119dne rozwijanie), najpierw poprawiam ich widoczno\u015b\u0107 \u2013 wszystko inne by\u0142oby jak szukanie na o\u015blep.<\/p>\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>Z <strong>perf top<\/strong> W czasie rzeczywistym dostrzegam, gdzie procesor traci czas w j\u0105drze i kt\u00f3re symbole powinienem zbada\u0107 w pierwszej kolejno\u015bci. Na podstawie warto\u015bci procentowych, powtarzaj\u0105cych si\u0119 wzorc\u00f3w oraz rozr\u00f3\u017cnienia mi\u0119dzy przestrzeni\u0105 j\u0105dra a przestrzeni\u0105 u\u017cytkownika ustalam konkretne kolejne kroki. Nast\u0119pnie podsumowuj\u0119 wnioski za pomoc\u0105 perf record\/report, weryfikuj\u0119 zmiany pod obci\u0105\u017ceniem i dokumentuj\u0119 m\u00f3j \u0142a\u0144cuch pomiarowy. W \u015brodowiskach hostingowych takie podej\u015bcie op\u0142aca si\u0119 szczeg\u00f3lnie, poniewa\u017c wiele us\u0142ug i kontener\u00f3w czerpie korzy\u015bci z bardziej wydajnego dzia\u0142ania \u015bcie\u017cek j\u0105dra. Kto opanuje ten proces, oszcz\u0119dza dni po\u015bwi\u0119cone na diagnostyk\u0119 i obni\u017ca <strong>Op\u00f3\u017anienia<\/strong> i zapewnia zauwa\u017calnie bardziej stabilne czasy odpowiedzi przy rzeczywistym obci\u0105\u017ceniu.<\/p>","protected":false},"excerpt":{"rendered":"<p>perf top Linux na bie\u017c\u0105co pokazuje miejsca o najwi\u0119kszym obci\u0105\u017ceniu procesora w j\u0105drze. Umo\u017cliwia to szybkie profilowanie procesora oraz precyzyjn\u0105 analiz\u0119 w\u0105skich garde\u0142.<\/p>","protected":false},"author":1,"featured_media":20619,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[780],"tags":[],"class_list":["post-20626","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration-anleitungen"],"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":"118","_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":"perf top","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":"20619","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20626","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=20626"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/20626\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/20619"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=20626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=20626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=20626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}