{"id":21042,"date":"2026-08-27T08:32:23","date_gmt":"2026-08-27T06:32:23","guid":{"rendered":"https:\/\/webhosting.de\/irq-balance-linux-konfigurieren-server\/"},"modified":"2026-08-27T08:32:23","modified_gmt":"2026-08-27T06:32:23","slug":"konfiguracja-rownowazenia-irq-w-systemie-linux-na-serwerze","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/irq-balance-linux-konfigurieren-server\/","title":{"rendered":"Jak prawid\u0142owo skonfigurowa\u0107 IRQ Balance w systemie Linux: praktyczny przewodnik"},"content":{"rendered":"<p>W systemie Linux funkcja IRQ Balance kontroluje rozk\u0142ad przerwa\u0144 sprz\u0119towych mi\u0119dzy rdzeniami procesora, decyduj\u0105c tym samym, czy obci\u0105\u017cenie sieciowe jest roz\u0142o\u017cone r\u00f3wnomiernie, czy te\u017c poszczeg\u00f3lne rdzenie spowalniaj\u0105 dzia\u0142anie systemu. Poka\u017c\u0119 Ci, jak celowo wykorzystywa\u0107 irqbalance, kiedy przechodz\u0119 na r\u0119czne przypisywanie IRQ oraz jakie ustawienia stosowa\u0107 na serwerach o wysokim <strong>obci\u0105\u017cenie sieci<\/strong> naprawd\u0119 maj\u0105 znaczenie.<\/p>\n\n<h2>Punkty centralne<\/h2>\n<p>Zanim przejd\u0119 do szczeg\u00f3\u0142\u00f3w, podsumuj\u0119 najwa\u017cniejsze decyzje, kt\u00f3re niezawodnie pomog\u0142y mi w projektach o du\u017cym obci\u0105\u017ceniu wej\u015bcia\/wyj\u015bcia. Uwa\u017cam, \u017ce dobrym punktem wyj\u015bcia jest automatyczny podzia\u0142 za pomoc\u0105 irqbalance, nast\u0119pnie mierz\u0119 jego skuteczno\u015b\u0107 i wprowadzam selektywne dostosowania. W przypadku obci\u0105\u017ce\u0144 deterministycznych r\u0119cznie przypisuj\u0119 poszczeg\u00f3lne sygna\u0142y IRQ do okre\u015blonych rdzeni i wykluczam pozosta\u0142e procesory z automatycznego podzia\u0142u. Wcze\u015bnie uwzgl\u0119dniam blisko\u015b\u0107 NUMA, poniewa\u017c zmniejsza ona op\u00f3\u017anienia i zapewnia przepustowo\u015b\u0107. Dzi\u0119ki przejrzystemu monitorowaniu szybciej wykrywam w\u0105skie gard\u0142a i reguluj\u0119 je bez zb\u0119dnych <strong>Ryzyko<\/strong>.<\/p>\n<p>Ta lista pokazuje, na co zwracam szczeg\u00f3ln\u0105 uwag\u0119 podczas konfiguracji:<\/p>\n<ul>\n  <li><strong>Automatyczny<\/strong> Najpierw: w\u0142\u0105czy\u0107 irqbalance, zmierzy\u0107 efekt<\/li>\n  <li><strong>Affinit\u00e4t<\/strong> ukierunkowane: zablokowanie krytycznych sygna\u0142\u00f3w IRQ, zmniejszenie jittera<\/li>\n  <li><strong>Zablokowane procesory<\/strong>: Zarezerwuj j\u0105dra dla w\u0105tk\u00f3w aplikacji<\/li>\n  <li><strong>NUMA<\/strong> Uwaga: nale\u017cy utrzymywa\u0107 sygna\u0142y IRQ w pobli\u017cu w\u0119z\u0142a pami\u0119ci<\/li>\n  <li><strong>Monitoring<\/strong>: Sprawd\u017a \/proc\/interrupts i op\u00f3\u017anienia<\/li>\n<\/ul>\n\n<h2>Podstawy IRQ w skr\u00f3cie<\/h2>\n<p>\u017b\u0105danie przerwania (IRQ) to sygna\u0142, za pomoc\u0105 kt\u00f3rego sprz\u0119t przekazuje zadanie do procesora, przerywaj\u0105c w ten spos\u00f3b bie\u017c\u0105ce zadanie. Je\u015bli zbyt wiele takich sygna\u0142\u00f3w trafi do tego samego rdzenia, wzrasta jego obci\u0105\u017cenie, a czas reakcji wyd\u0142u\u017ca si\u0119, podczas gdy inne rdzenie pozostaj\u0105 niewykorzystane; w\u0142a\u015bnie to chc\u0119 osi\u0105gn\u0105\u0107 za pomoc\u0105 <strong>Dystrybucja<\/strong> unikn\u0105\u0107. Modu\u0142 irqbalance dynamicznie rozdziela te IRQ mi\u0119dzy kilka rdzeni i w regularnych odst\u0119pach czasu ocenia stan systemu. Najpierw sprawdzam <code>\/proc\/interrupts<\/code> i sprawd\u017a w kolumnach, ile sygna\u0142\u00f3w IRQ dociera na ka\u017cdy procesor. Je\u015bli w poszczeg\u00f3lnych kolumnach pojawia si\u0119 zbyt du\u017ca liczba sygna\u0142\u00f3w, aktywnie reguluj\u0119 ten poziom, redukuj\u0105c w ten spos\u00f3b niepotrzebne <strong>Hotspoty<\/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-irq-guide-4513.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Automatyczny rozk\u0142ad obci\u0105\u017cenia za pomoc\u0105 irqbalance<\/h2>\n<p>W nowoczesnych dystrybucjach uruchamiam us\u0142ug\u0119 irqbalance, kt\u00f3ra domy\u015blnie okresowo dostosowuje rozk\u0142ad sygna\u0142\u00f3w IRQ. W\u0142\u0105czam j\u0105 r\u0119cznie za pomoc\u0105 <code>systemctl enable --now irqbalance<\/code> i sprawdzam stan, zanim podejm\u0119 bardziej zdecydowane dzia\u0142ania; w ten spos\u00f3b wykorzystuj\u0119 to, co mam <strong>Automatyczny<\/strong>. Pliki konfiguracyjne znajduj\u0105 si\u0119, w zale\u017cno\u015bci od systemu, w <code>\/etc\/sysconfig\/irqbalance<\/code> lub <code>\/etc\/default\/irqbalance<\/code>, gdzie mog\u0119 wykluczy\u0107 procesory lub sygna\u0142y IRQ. Szczeg\u00f3lnie pomocna jest zmienna <code>IRQBALANCE_BANNED_CPUS<\/code> jako maska 64-bitowa, s\u0142u\u017c\u0105ca do rezerwowania okre\u015blonych rdzeni dla aplikacji. Osoby, kt\u00f3re chc\u0105 zg\u0142\u0119bi\u0107 praktyczne przyk\u0142ady, znajd\u0105 tutaj zwi\u0119z\u0142e wprowadzenie do <a href=\"https:\/\/webhosting.de\/pl\/rownowazenie-irq-serwera-optymalizacja-wydajnosci-sieci-centrum-danych\/\">Wydajno\u015b\u0107 sieci<\/a>, do kt\u00f3rych cz\u0119sto odwo\u0142uj\u0119 si\u0119 podczas warsztat\u00f3w i kt\u00f3re wykorzystuj\u0119 w projektach.<\/p>\n\n<h2>Jak bezpiecznie skonfigurowa\u0107 r\u0119czne przypisanie IRQ<\/h2>\n<p>Je\u015bli obci\u0105\u017cenia s\u0105 bardzo wra\u017cliwe na wahania lub je\u015bli okre\u015blone j\u0105dra maj\u0105 pozosta\u0107 zarezerwowane wy\u0142\u0105cznie dla proces\u00f3w przestrzeni u\u017cytkownika, r\u0119cznie ustawiam przypisanie IRQ. W tym celu zapisuj\u0119 maski bitowe zgodnie z <code>\/proc\/irq\/<em>NUMER IRQ<\/em>\/smp_affinity<\/code> oraz okre\u015blam, na kt\u00f3rych j\u0105drach mo\u017ce by\u0107 uruchamiane przerwanie; zapewnia to mo\u017cliwo\u015b\u0107 planowania <strong>Prowadzenie<\/strong>. Najpierw ustalam odpowiednie numery IRQ za pomoc\u0105 <code>grep<\/code> w <code>\/proc\/interrupts<\/code>. W przypadku urz\u0105dze\u0144 sieciowych cz\u0119sto przypisuj\u0119 kolejki RX\/TX do rdzeni znajduj\u0105cych si\u0119 blisko w\u0105tk\u00f3w aplikacji, pozostawiaj\u0105c inne rdzenie wolne. Dobry przegl\u0105d uzasadnie\u0144 tego podej\u015bcia zawiera ten kr\u00f3tki <a href=\"https:\/\/webhosting.de\/pl\/serwer-irq-affinity-wielordzeniowy-optymalizacja-sieci-wydajnosc\/\">Przewodnik po powi\u0105zaniach IRQ<\/a>, z kt\u00f3rego regularnie korzystam jako punkt wyj\u015bcia.<\/p>\n<p>Poni\u017csza tabela przedstawia popularne maski bitowe oraz ich znaczenie. Korzystam z tych przyk\u0142ad\u00f3w, aby szybko i bezb\u0142\u0119dnie wprowadza\u0107 konfiguracje, a nast\u0119pnie sprawdza\u0107 ich dzia\u0142anie za pomoc\u0105 <code>\/proc\/interrupts<\/code> do <strong>zweryfikowa\u0107<\/strong>.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Cel<\/th>\n      <th>Przyk\u0142adowy szablon (hex)<\/th>\n      <th>j\u0105dra<\/th>\n      <th>Komentarz<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Tylko procesor 0<\/td>\n      <td>0x1<\/td>\n      <td>0<\/td>\n      <td>Prosty test, niewielkie <strong>rozproszenie<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>Tylko procesor 1<\/td>\n      <td>0x2<\/td>\n      <td>1<\/td>\n      <td>Oddziela sygna\u0142y IRQ od procesora CPU0, zmniejsza <strong>Interferencja<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>CPU0\u2013CPU1<\/td>\n      <td>0x3<\/td>\n      <td>0\u20131<\/td>\n      <td>Roz\u0142o\u017cone na dwa rdzenie, lekkie <strong>Ulga<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>CPU2\u2013CPU3<\/td>\n      <td>0xC<\/td>\n      <td>2-3<\/td>\n      <td>Przydatne, gdy 0\u20131 dotyczy w\u0105tk\u00f3w aplikacji <strong>darmowy<\/strong> pobyt<\/td>\n    <\/tr>\n    <tr>\n      <td>CPU0\u2013CPU3<\/td>\n      <td>0xF<\/td>\n      <td>0\u20133<\/td>\n      <td>Szerokie roz\u0142o\u017cenie na 4 rdzenie, mieszanie <strong>Obci\u0105\u017cenie<\/strong><\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\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\/IRQ_Linux_Konferenz_3235.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Pomiar: Prawid\u0142owe odczytywanie \/proc\/interrupts<\/h2>\n<p>Otwieram plik <code>\/proc\/interrupts<\/code> i widz\u0119 po jednym IRQ na wiersz oraz liczniki dla poszczeg\u00f3lnych procesor\u00f3w w kolumnach; to od razu ujawnia nier\u00f3wnowagi <strong>widoczny<\/strong>. Je\u015bli jedna kolumna ro\u015bnie znacznie szybciej ni\u017c pozosta\u0142e, obci\u0105\u017cenie skupia si\u0119 w\u0142a\u015bnie tam. Wtedy sprawdzam, kt\u00f3ry sterownik ma w tym udzia\u0142 i czy RSS\/RPS ju\u017c rozdziela obci\u0105\u017cenie. Dodatkowo uruchamiam tymczasowo irqbalance w tle z wyj\u015bciem debugowania, aby zrozumie\u0107 jego decyzje i unikn\u0105\u0107 b\u0142\u0119dnych ocen. Po ka\u017cdej zmianie ponownie sprawdzam liczniki i mierz\u0119 op\u00f3\u017anienia pod obci\u0105\u017ceniem, aby m\u00f3c potwierdzi\u0107 efekty i unikn\u0105\u0107 niepotrzebnych <strong>Ryzyko<\/strong> mo\u017cna tego unikn\u0105\u0107.<\/p>\n\n<h2>Izolacja procesora i maski zakazane<\/h2>\n<p>Ustawi\u0142em <code>IRQBALANCE_BANNED_CPUS<\/code>, aby konsekwentnie wykluczy\u0107 okre\u015blone j\u0105dra z automatycznego przydzielania; w ten spos\u00f3b rezerwuj\u0119 zasoby dla w\u0105tk\u00f3w aplikacji. W nowszych konfiguracjach korzystam dodatkowo z <code>IRQBALANCE_BANNED_IRQS<\/code>, je\u015bli poszczeg\u00f3lne urz\u0105dzenia maj\u0105 dzia\u0142a\u0107 samodzielnie na jednym j\u0105drze; zmniejsza to zak\u0142\u00f3cenia w przypadku wra\u017cliwych <strong>Obci\u0105\u017cenia<\/strong>. W scenariuszach wymagaj\u0105cych niskiego op\u00f3\u017anienia celowo wy\u0142\u0105czam funkcj\u0119 irqbalance i statycznie przypisuj\u0119 sygna\u0142y IRQ, aby nie zak\u0142\u00f3ca\u0142o tego ponowne przydzielanie. Ci, kt\u00f3rzy chc\u0105 dok\u0142adniej zrozumie\u0107 spos\u00f3b przypisywania obs\u0142ugi przerwa\u0144 przez procesor, znajd\u0105 przydatne informacje na temat <a href=\"https:\/\/webhosting.de\/pl\/obsluga-przerwan-serwera-optymalizacja-wydajnosci-procesora-7342\/\">Obs\u0142uga przerwa\u0144<\/a> na serwerach. Najwa\u017cniejsze jest to, aby najpierw dokona\u0107 pomiar\u00f3w, nast\u0119pnie ustali\u0107 parametry i ponownie sprawdzi\u0107 efekt, aby unikn\u0105\u0107 niespodzianek w <strong>Dzia\u0142anie<\/strong> kt\u00f3rych nale\u017cy unika\u0107.<\/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\/irq-balance-linux-guide-setup-3458.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Aspekty NUMA i blisko\u015b\u0107<\/h2>\n<p>W systemach NUMA staram si\u0119 kierowa\u0107 sygna\u0142y IRQ w miar\u0119 mo\u017cliwo\u015bci do j\u0105der tego w\u0119z\u0142a NUMA, w pami\u0119ci kt\u00f3rego znajduj\u0105 si\u0119 dane, kt\u00f3rych to dotyczy; zmniejsza to op\u00f3\u017anienie i zwi\u0119ksza <strong>Przepustowo\u015b\u0107<\/strong>. \u0141\u0105cz\u0119 to z afynacj\u0105 procesora dla aplikacji, aby w\u0105tki i przerwania dzia\u0142a\u0142y lokalnie wzgl\u0119dem siebie. irqbalance dzia\u0142a dobrze w \u015brodowisku NUMA, ale w razie potrzeby dostosowuj\u0119 ustawienia za pomoc\u0105 masek zakazanych. Kluczowe jest, aby nie rozprasza\u0107 obci\u0105\u017cenia mi\u0119dzy w\u0119z\u0142ami, je\u015bli i tak mo\u017cna je utrzyma\u0107 lokalnie. Kto zachowa t\u0119 blisko\u015b\u0107, zyska sta\u0142e czasy odpowiedzi i oszcz\u0119dzi cenne <strong>Schowek<\/strong>-zasoby.<\/p>\n\n<h2>Intensywny kurs dotycz\u0105cy sieci: RSS, RPS\/RFS i XPS<\/h2>\n<p>Zanim dopracuj\u0119 maski IRQ, sprawdzam funkcje karty sieciowej, takie jak RSS, a tak\u017ce mechanizmy j\u0105dra, takie jak RPS\/RFS i XPS; maj\u0105 one du\u017cy wp\u0142yw na rozdzielanie pakiet\u00f3w. RSS rozdziela przerwania kolejki ju\u017c mi\u0119dzy kilka j\u0105der, podczas gdy RPS\/RFS kszta\u0142tuj\u0105 przetwarzanie w j\u0105drze, a XPS \u2013 \u015bcie\u017cki transmisji; pozwala to unikn\u0105\u0107 niepotrzebnych <strong>Hotspoty<\/strong>. Dostosowuj\u0119 te mechanizmy do mojej strategii IRQ, aby nie dzia\u0142a\u0142y one w sprzeczno\u015bci. Je\u015bli kolejki, preferencje IRQ i preferencje aplikacji s\u0105 ze sob\u0105 zgrane, operacje wej\u015bcia\/wyj\u015bcia sieciowego przebiegaj\u0105 znacznie p\u0142ynniej. Nast\u0119pnie ponownie dokonuj\u0119 pomiar\u00f3w pod rzeczywistym obci\u0105\u017ceniem, zanim podejm\u0119 dalsze <strong>Kroki<\/strong> postawi\u0119.<\/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\/irq_balance_linux_guide_7163.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>MSI-X, Multi-Queue i przejrzysty uk\u0142ad kolejki<\/h2>\n<p>Wiele kart sieciowych 10\u2013100G wykorzystuje technologi\u0119 MSI-X i udost\u0119pnia osobne wektory przerwa\u0144 dla ka\u017cdej kolejki RX\/TX. Najpierw sprawdzam za pomoc\u0105 <code>ethtool -l eth0<\/code> (liczba kana\u0142\u00f3w) oraz <code>\/proc\/interrupts<\/code>, ile kolejek jest faktycznie aktywnych i jak si\u0119 nazywaj\u0105 (np. <code>eth0\u2011TxRx\u20110<\/code>, <code>eth0-TxRx-1<\/code>). Celem jest dostosowanie liczby kolejek do liczby wykorzystywanych rdzeni na w\u0119ze\u0142 NUMA oraz deterministyczne przypisanie ich do tych rdzeni. Za pomoc\u0105 <code>ethtool -L eth0 combined N<\/code> ustawiam liczb\u0119 kolejek; nast\u0119pnie porz\u0105dkuj\u0119 generowane sygna\u0142y IRQ za pomoc\u0105 <code>smp_affinity<\/code> odpowiednich rdzeni. Dbam o to, aby pary RX\/TX z tej samej kolejki by\u0142y przypisane do tego samego rdzenia lub przynajmniej do tego samego gniazda, tak aby <strong>Lokalizacja pami\u0119ci podr\u0119cznej<\/strong> dzia\u0142a. Wa\u017cne: zmiany liczby kolejek i powinowactwa sprawdzam bezpo\u015brednio w <code>\/proc\/interrupts<\/code> oraz przeprowadzaj\u0105c kr\u00f3tki test obci\u0105\u017cenia (pps\/przepustowo\u015b\u0107), zanim przyst\u0105pi\u0119 do dalszej optymalizacji.<\/p>\n\n<h2>Koalescencja przerwa\u0144 i bud\u017cet NAPI<\/h2>\n<p>Szczeg\u00f3lnie przy wysokich cz\u0119stotliwo\u015bciach pakiet\u00f3w warto\u015bci koalescencji wp\u0142ywaj\u0105 na skuteczno\u015b\u0107 mojej strategii IRQ. Przy <code>ethtool -c eth0<\/code> widz\u0119, czy <code>rx-mikrosekund<\/code> oraz <code>oprawki rx<\/code> s\u0105 ustawione. Wi\u0119ksza koalescencja zmniejsza liczb\u0119 sygna\u0142\u00f3w IRQ na sekund\u0119 i odci\u0105\u017ca procesor, ale zwi\u0119ksza op\u00f3\u017anienie i wahania. Dokonuj\u0119 ostro\u017cnych regulacji: ma\u0142e kroki, po ka\u017cdym pomiar (op\u00f3\u017anienie p95\/p99 i obci\u0105\u017cenie procesora). Po stronie nadawczej dzia\u0142a <code>tx-usecs<\/code> analogowo. Ponadto skaluj\u0119 zachowanie NAPI poprzez <code>net.core.netdev_budget<\/code> oraz <code>net.core.netdev_budget_usecs<\/code>, kiedy <strong>NET_RX<\/strong> zaczynaj\u0105 si\u0119 gromadzi\u0107 w SoftIRQ. Je\u015bli liczba utraty pakiet\u00f3w wzrasta w <code>\/proc\/net\/softnet_stat<\/code>, w ramach testu zwi\u0119kszam bud\u017cet lub bardziej konsekwentnie rozdzielam kolejki RX; je\u015bli op\u00f3\u017anienie systemu staje si\u0119 uci\u0105\u017cliwe, zmniejszam te warto\u015bci. GRO\/LRO oraz TSO\/GSO uwzgl\u0119dniam w kontek\u015bcie wzajemnego oddzia\u0142ywania: nadmierna agregacja zmniejsza obci\u0105\u017cenie IRQ, ale mo\u017ce powodowa\u0107 skoki op\u00f3\u017anie\u0144 \u2013 r\u00f3wnowa\u017c\u0119 je za pomoc\u0105 profilu aplikacji.<\/p>\n\n<h2>Przejrzyste odczytywanie SoftIRQ<\/h2>\n<p>Opr\u00f3cz twardych przerwa\u0144 (HardIRQ) decyduj\u0119 r\u00f3wnie\u017c o obci\u0105\u017ceniu w mi\u0119kkich przerwaniach (SoftIRQ). Za pomoc\u0105 <code>cat \/proc\/softirqs<\/code> Obserwuj\u0119 <strong>NET_RX<\/strong> oraz <strong>NET_TX<\/strong> na procesor; je\u015bli niekt\u00f3re kolumny dominuj\u0105, zbyt wiele pracy trafia w\u0142a\u015bnie tam, do w\u0105tk\u00f3w ksoftirqd. Jeden <code>top -H<\/code> poka\u017c mi szybko, kt\u00f3re <code>ksoftirqd\/N<\/code> Obci\u0105\u017cam rdzenie. Mierz\u0119 g\u0142\u0119biej za pomoc\u0105 <code>perf top<\/code> lub kr\u00f3tkich <code>rekord wydajno\u015bci<\/code> Uruchamia si\u0119, aby zidentyfikowa\u0107 w\u0105skie gard\u0142a w sterowniku lub przetwarzaniu stosu. Gdy aktywowane s\u0105 w\u0105tki ksoftirqd (zamiast bezpo\u015bredniej obs\u0142ugi w kontek\u015bcie IRQ), op\u00f3\u017anienie cz\u0119sto znacznie wzrasta; reaguj\u0119 na to lepszym roz\u0142o\u017ceniem kolejek, zwi\u0119kszeniem bud\u017cetu NAPI lub celowym przypisaniem procesora do konkretnych w\u0105tk\u00f3w ksoftirqd za pomoc\u0105 <code>taskset -pc<\/code>. Wa\u017cne: Dokumentuj\u0119 te zmiany, poniewa\u017c s\u0105 one subtelne i w razie w\u0105tpliwo\u015bci musz\u0119 mie\u0107 mo\u017cliwo\u015b\u0107 szybkiego przywr\u00f3cenia poprzedniego stanu.<\/p>\n\n<h2>W\u0142a\u015bciwe wykorzystanie technologii SMT\/Hyper-Threading i topologii<\/h2>\n<p>Gdy funkcja SMT jest aktywna, dziel\u0119 jedno fizyczne j\u0105dro z dwoma procesorami logicznymi. Sprawdzam relacje mi\u0119dzy procesorami za pomoc\u0105 <code>lscpu -e<\/code> oraz <code>\/sys\/devices\/system\/cpu\/cpuX\/topology\/thread_siblings_list<\/code>. W przypadku \u015bcie\u017cek, w kt\u00f3rych op\u00f3\u017anienie ma kluczowe znaczenie, unikam umieszczania w\u0105tku aplikacji i powi\u0105zanego IRQ na tym samym rdzeniu fizycznym (r\u00f3\u017cne w\u0105tki SMT); konkuruj\u0105 one bowiem o jednostki wykonawcze i pami\u0119ci podr\u0119czne. Preferuj\u0119 pary, w kt\u00f3rych np. w\u0105tek aplikacji dzia\u0142a na procesorze CPU2, a powi\u0105zana z nim kolejka RX na procesorze CPU3 (inne rdzenie fizyczne, ten sam w\u0119ze\u0142 NUMA). Je\u015bli SMT zak\u0142\u00f3ca sp\u00f3jno\u015b\u0107, planuj\u0119 zamiast tego z mniejsz\u0105 liczb\u0105, ale wy\u0142\u0105cznych rdzeni fizycznych i oszcz\u0119dzam sobie niepokoju <strong>Zak\u0142\u00f3cenia<\/strong>.<\/p>\n\n<h2>Wirtualizacja: KVM, vhost i SR-IOV<\/h2>\n<p>W \u015brodowiskach wirtualnych rozpatruj\u0119 host i go\u015bcia osobno. Na ho\u015bcie r\u00f3wnomiernie rozdzielam fizyczne sygna\u0142y IRQ kart sieciowych mi\u0119dzy j\u0105dra odpowiedniego w\u0119z\u0142a NUMA. Je\u015bli go\u015b\u0107 korzysta z wirtualnej sieci (virtio-net), powstaj\u0105 dodatkowe sygna\u0142y IRQ dla w\u0105tk\u00f3w vhost; rozpoznaj\u0119 je w <code>\/proc\/interrupts<\/code> i przypisuj\u0119 procesy robocze vhost sp\u00f3jnie z kolejkami fizycznej karty sieciowej. Na poziomie go\u015bcia ustawiam r\u00f3wnie\u017c preferencje RSS\/XPS i IRQ, o ile sterownik virtio udost\u0119pnia kilka kolejek. W przypadku SR-IOV warto przypisa\u0107 ka\u017cdemu systemowi-go\u015bciowi jedn\u0105 lub wi\u0119cej VF z w\u0142asnymi wektorami MSI-X i przypi\u0105\u0107 je w systemie-go\u015bciu; izolacja poprawia op\u00f3\u017anienia i przewidywalno\u015b\u0107. Trzymam si\u0119 jasnego schematu: vCPU systemu go\u015bcinnego na dedykowanych pCPU, powi\u0105zane IRQ na pobliskich rdzeniach, a w\u0105tki emulatora\/vhost nie powinny miesza\u0107 si\u0119 z w\u0105tkami aplikacji wymagaj\u0105cymi intensywnych oblicze\u0144 \u2013 w ten spos\u00f3b \u015bcie\u017cka danych pozostaje <strong>mo\u017cliwy do zaplanowania<\/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\/irq_balance_linux_guide_5421.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cz\u0119stotliwo\u015b\u0107 procesora, stany C i tuning NOHZ<\/h2>\n<p>Op\u00f3\u017anienia IRQ ulegaj\u0105 pogorszeniu, gdy j\u0105dra przechodz\u0105 w g\u0142\u0119bokie stany C lub s\u0105 agresywnie taktowane. W przypadku wra\u017cliwych obci\u0105\u017ce\u0144 ustawiam regulator procesora na <code>Wykonanie<\/code> (<code>cpupower frequency\u2011set -g performance<\/code>) oraz ograniczam g\u0142\u0119bokie stany C za pomoc\u0105 opcji rozruchu lub sterownik\u00f3w, aby skr\u00f3ci\u0107 czas budzenia. Na serwerach o du\u017cym obci\u0105\u017ceniu cz\u0119sto przynosi to lepsze efekty ni\u017c jakiekolwiek precyzyjne dostrajanie afiliacji. W przypadku bardzo wymagaj\u0105cych profili op\u00f3\u017anie\u0144 dodaj\u0119 <code>nohz_full=<\/code> oraz <code>rcu_nocbs=<\/code> dla izolowanych j\u0105der, tak aby zegar \u201eTick-Timer\u201d i wywo\u0142ania zwrotne RCU nie zak\u0142\u00f3ca\u0142y si\u0119 wzajemnie; procesory zarz\u0105dzaj\u0105ce (Housekeeping-CPU) definiuj\u0119 celowo oddzielnie. Te zmiany testuj\u0119 jednak osobno, poniewa\u017c mog\u0105 one wywiera\u0107 skutki uboczne na planowanie zada\u0144 i pob\u00f3r energii. Najwa\u017cniejsze pozostaje: dok\u0142adne por\u00f3wnanie warto\u015bci pomiarowych przed i po zmianie, w przeciwnym razie b\u0119d\u0119 si\u0119 b\u0142\u0105ka\u0142 w ciemno <strong>Optymalizacje<\/strong> w ciemno\u015bci.<\/p>\n\n<h2>Systemd, Cgroups i izolacja aplikacji<\/h2>\n<p>Opr\u00f3cz przypisywania IRQ oddzielam w\u0105tki aplikacji za pomoc\u0105 Cgroups i systemd-Affinity. Za pomoc\u0105 <code>CPUAffinity=<\/code> W plikach Unit oraz w kontrolerach procesor\u00f3w (cgroup v2) przypisuj\u0119 us\u0142ugom sta\u0142e j\u0105dra. W ten spos\u00f3b zapobiegam przenoszeniu w\u0105tk\u00f3w przez harmonogram na te procesory, kt\u00f3re przeznaczy\u0142em na przerwy IRQ. W \u015brodowiskach kontenerowych ustawiam <code>cpuset.cpus<\/code> i sprawdzi\u0107 <code>cpuset.cpus.effective<\/code>, aby obietnice dotycz\u0105ce zasob\u00f3w rzeczywi\u015bcie przynios\u0142y efekty. Wa\u017cne: <code>IRQBALANCE_BANNED_CPUS<\/code> kieruje tylko tam, gdzie irqbalance nie rozdziela zada\u0144; w\u0105tki j\u0105dra, takie jak ksoftirqd, nadal podlegaj\u0105 harmonogramowi. Aby uzyska\u0107 \u015bcis\u0142\u0105 izolacj\u0119, potrzebuj\u0119 zatem po\u0142\u0105czenia powinowactw IRQ, powinowactwa procesora us\u0142ug oraz, w razie potrzeby, izolowanych j\u0105der. W ten spos\u00f3b \u015bcie\u017cka danych i aplikacja pozostaj\u0105 wyra\u017anie oddzielone, a <strong>Obci\u0105\u017cenie<\/strong> nie miesza si\u0119 w spos\u00f3b niekontrolowany.<\/p>\n\n<h2>Typowe b\u0142\u0119dy i sposoby ich unikni\u0119cia<\/h2>\n<p>Nigdy nie wy\u0142\u0105czam funkcji irqbalance w spos\u00f3b og\u00f3lny, nie znaj\u0105c rozk\u0142adu obci\u0105\u017cenia; w przeciwnym razie sygna\u0142y IRQ szybko skupiaj\u0105 si\u0119 na kilku rdzeniach. R\u00f3wnie niekorzystne jest udost\u0119pnianie wszystkich rdzeni dla wszystkich sygna\u0142\u00f3w IRQ, mimo \u017ce wra\u017cliwe w\u0105tki maj\u0105 wy\u0142\u0105czno\u015b\u0107 <strong>Zasoby<\/strong> potrzebne. Kolejny b\u0142\u0105d: brak izolowanego testowania zmian i pomiaru ich skutk\u00f3w; w ten spos\u00f3b nie wiadomo, co faktycznie pomaga. Uwzgl\u0119dniam r\u00f3wnie\u017c pary w technologii Hyper-Threading: w\u0105tek aplikacji i powi\u0105zane IRQ nie powinny dzieli\u0107 tego samego fizycznego rdzenia. Dokumentuj\u0119 ka\u017cdy krok i tworz\u0119 punkty przywracania, aby w razie problem\u00f3w m\u00f3c szybko powr\u00f3ci\u0107 do ostatniego <strong>dobry<\/strong> Wr\u00f3\u0107 do konfiguracji.<\/p>\n\n<h2>Lista kontrolna dotycz\u0105ca serwer\u00f3w<\/h2>\n<p>Zawsze zaczynam od ustalenia stanu pocz\u0105tkowego: w\u0142\u0105czam irqbalance, rejestruj\u0119 obci\u0105\u017cenie systemu, obserwuj\u0119 katalog \/proc\/interrupts i mierz\u0119 op\u00f3\u017anienia; dopiero potem przyst\u0119puj\u0119 do zmiany ustawie\u0144. W drugim kroku ko\u0144cz\u0119, wykonuj\u0105c <code>IRQBALANCE_BANNED_CPUS<\/code> wybieram te j\u0105dra, kt\u00f3re maj\u0105 pozosta\u0107 zarezerwowane dla w\u0105tk\u00f3w aplikacji; w ten spos\u00f3b zapobiegam niepotrzebnym zak\u0142\u00f3ceniom spowodowanym przez IRQ. Nast\u0119pnie przypisuj\u0119 krytyczne IRQ za pomoc\u0105 <code>smp_affinity<\/code> na kilka dobrze dobranych rdzeni i zachowuj\u0119 blisko\u015b\u0107 NUMA. Nast\u0119pnie sprawdzam wska\u017aniki RSS\/RPS\/RFS i XPS, a tak\u017ce opcje odci\u0105\u017cania karty sieciowej (NIC), aby sensownie rozdzieli\u0107 obci\u0105\u017cenie. Na koniec przeprowadzam testy pod obci\u0105\u017ceniem produkcyjnym, por\u00f3wnuj\u0119 wska\u017aniki i zachowuj\u0119 tylko te zmiany, kt\u00f3re w spos\u00f3b widoczny <strong>praca<\/strong>.<\/p>\n\n<h2>Pliki konfiguracyjne i polecenia systemd<\/h2>\n<p>Aktywuj\u0119 t\u0119 us\u0142ug\u0119 za pomoc\u0105 <code>systemctl enable --now irqbalance<\/code> i sprawd\u017a za pomoc\u0105 <code>systemctl status irqbalance<\/code> czas trwania; tak wi\u0119c ustawiam <strong>Us\u0142uga<\/strong> na pewno gotowe. W <code>\/etc\/sysconfig\/irqbalance<\/code> lub <code>\/etc\/default\/irqbalance<\/code> stawiam <code>IRQBALANCE_BANNED_CPUS<\/code> oraz opcjonalnie <code>IRQBALANCE_BANNED_IRQS<\/code>. Zmiany wprowadzam za pomoc\u0105 <code>systemctl restart irqbalance<\/code> i jednocze\u015bnie obserwuj\u0119 liczniki w <code>\/proc\/interrupts<\/code>. Do test\u00f3w korzystam z trybu foreground programu irqbalance, aby na bie\u017c\u0105co \u015bledzi\u0107 podejmowane decyzje. Dopiero gdy zrozumiem to zachowanie, wprowadzam zmiany na sta\u0142e do pliku <strong>Konfiguracja<\/strong>.<\/p>\n\n<h2>Kiedy wy\u0142\u0105czam irqbalance<\/h2>\n<p>W konfiguracjach dzia\u0142aj\u0105cych w czasie rzeczywistym lub w przypadku aplikacji wyj\u0105tkowo wra\u017cliwych na op\u00f3\u017anienia zatrzymuj\u0119 us\u0142ug\u0119 irqbalance i statycznie przypisuj\u0119 sygna\u0142y IRQ, aby \u017cadna redystrybucja nie zak\u0142\u00f3ca\u0142a dzia\u0142ania. Izoluj\u0119 j\u0105dra dla tych obci\u0105\u017ce\u0144 i celowo kieruj\u0119 sygna\u0142y IRQ zwi\u0105zane z ruchem sieciowym na inne j\u0105dra; dzi\u0119ki temu w\u0105tki aplikacji pozostaj\u0105 <strong>mo\u017cliwy do zaplanowania<\/strong>. Nawet w przypadku \u015bci\u015ble oddzielonych \u015brodowisk dzier\u017cawc\u00f3w takie podej\u015bcie si\u0119 op\u0142aca, poniewa\u017c pozwala mi ograniczy\u0107 zak\u0142\u00f3cenia mi\u0119dzy maszynami wirtualnymi lub kontenerami. Je\u015bli pojawiaj\u0105 si\u0119 sterowniki, kt\u00f3re gorzej wsp\u00f3\u0142pracuj\u0105 z automatyk\u0105, wykluczam ich sygna\u0142y IRQ za pomoc\u0105 listy zablokowanych. Gdy wzorce obci\u0105\u017cenia zn\u00f3w stan\u0105 si\u0119 bardziej zr\u00f3\u017cnicowane, ponownie w\u0142\u0105czam irqbalance i sprawdzam efekt przy pomocy \u015bwie\u017cych <strong>Zmierzone warto\u015bci<\/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-irq-balance-setup-1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n<p>Zaczynam od irqbalance, oceniam efekt i wprowadzam selektywne poprawki, zamiast wtr\u0105ca\u0107 si\u0119 na o\u015blep wsz\u0119dzie; w ten spos\u00f3b zachowuj\u0119 ca\u0142o\u015bciowy obraz systemu i <strong>Przejrzysto\u015b\u0107<\/strong>. W przypadku wra\u017cliwych obci\u0105\u017ce\u0144 przypisuj\u0119 odpowiednie numery IRQ, izoluj\u0119 j\u0105dra dla poszczeg\u00f3lnych aplikacji i uwzgl\u0119dniam blisko\u015b\u0107 NUMA. Za pomoc\u0105 masek zakazu kontroluj\u0119, gdzie mo\u017ce dzia\u0142a\u0107 irqbalance, i zapobiegam niepo\u017c\u0105danym przesuni\u0119ciom. Regularnie sprawdzam <code>\/proc\/interrupts<\/code>, op\u00f3\u017anienia i przepustowo\u015b\u0107, aby zmiany by\u0142y poparte wiarygodnymi danymi. Kto post\u0119puje w ten spos\u00f3b, w pe\u0142ni wykorzystuje potencja\u0142 IRQ Balance i zapewnia, \u017ce serwery pod obci\u0105\u017ceniem sieciowym dzia\u0142aj\u0105 zauwa\u017calnie <strong>reaktywny<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Prawid\u0142owa konfiguracja irqbalance w systemie Linux: jak efektywnie rozdziela\u0107 przerwania na serwerach z systemem Linux i poprawi\u0107 wydajno\u015b\u0107.<\/p>","protected":false},"author":1,"featured_media":21035,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21042","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":"IRQ Balance","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":"21035","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21042","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=21042"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21042\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21035"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}