{"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":"tickless-laege-linux-kaernan-takt","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/tickless-mode-linux-kernel-rhythmus\/","title":{"rendered":"K\u00e4rnans schemal\u00e4ggare i tickless-l\u00e4ge f\u00f6rklarat: F\u00f6rdelar, risker och inst\u00e4llningar"},"content":{"rendered":"<p>Jag f\u00f6rklarar <strong>tickless-l\u00e4ge<\/strong> i Linux-k\u00e4rnan p\u00e5 ett l\u00e4ttbegripligt s\u00e4tt och visar n\u00e4r den har en positiv inverkan p\u00e5 prestanda, latens och energif\u00f6rbrukning. Dessutom redog\u00f6r jag f\u00f6r tydliga f\u00f6rdelar, m\u00f6jliga risker och konkreta optimerings\u00e5tg\u00e4rder som jag sj\u00e4lv anv\u00e4nder i praktiken.<\/p>\n\n<h2>Centrala punkter<\/h2>\n\n<p>Jag sammanfattar de viktigaste <strong>Huvudteman<\/strong> sammanfattat p\u00e5 ett \u00f6versk\u00e5dligt s\u00e4tt, s\u00e5 att du genast vet vad du b\u00f6r t\u00e4nka p\u00e5. Linux-schemal\u00e4ggaren och den dynamiska ticken samverkar direkt och styr beteendet hos din <strong>Processorer<\/strong>. Beroende p\u00e5 arbetsbelastningen avg\u00f6r jag om \u201dTickless Idle\u201d r\u00e4cker eller om jag ska anv\u00e4nda \u201dFull Tickless\u201d med isolerade k\u00e4rnor. F\u00f6r att f\u00e5 reproducerbara resultat planerar jag in \u201dhousekeeping-CPU:er\u201d, IRQ-affinitet och RCU-callbacks p\u00e5 ett noggrant s\u00e4tt. I slut\u00e4ndan \u00e4r det m\u00e4tv\u00e4rdena f\u00f6r latens, energif\u00f6rbrukning och genomstr\u00f6mning i din <strong>Inst\u00e4llning<\/strong> verkligen visa.<\/p>\n<ul>\n  <li><strong>Tickless-tomg\u00e5ng<\/strong>: f\u00e4rre tickar vid tomg\u00e5ng<\/li>\n  <li><strong>NO_HZ_FULL<\/strong>: lugna, avskilda k\u00e4rnor<\/li>\n  <li><strong>IRQ-affinitet<\/strong>: Samla st\u00f6rningsk\u00e4llor<\/li>\n  <li><strong>Fasts\u00e4ttning av CPU<\/strong>: Tilldela tr\u00e5dar permanent<\/li>\n  <li><strong>Uppm\u00e4tta v\u00e4rden<\/strong>: latens, energi, jitter<\/li>\n<\/ul>\n<p>Listan visar de reglage som jag f\u00f6rst kontrollerar och kombinerar. P\u00e5 s\u00e5 s\u00e4tt kan jag snabbt se var det st\u00f6rsta <strong>Spak<\/strong> och hur mycket jag anpassar k\u00e4rnan.<\/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>Vad en kernel-tick i praktiken inneb\u00e4r<\/h2>\n\n<p>En periodisk tick utl\u00f6ser tidsm\u00e4tning, timerhantering och nya <strong>Schemal\u00e4ggning<\/strong>-beslut. Den \u00e4r enkel, men den v\u00e4cker k\u00e4rnor \u00e4ven n\u00e4r det inte finns n\u00e5got meningsfullt arbete att utf\u00f6ra. Med \u201dtickless\u201d planerar k\u00e4rnan n\u00e4sta uppvaknande efter behov och undviker on\u00f6diga <strong>Avbrott<\/strong>. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir processorerna l\u00e4ngre i djupa C-tillst\u00e5nd och genererar mindre jitter f\u00f6r latenskritiska uppgifter. Jag anv\u00e4nder denna mekanism f\u00f6r att skapa lugna exekveringsf\u00f6nster f\u00f6r k\u00e4nsliga tr\u00e5dar.<\/p>\n\n<h2>Varianter: \u00d6versikt \u00f6ver Tickless Idle och NO_HZ_FULL<\/h2>\n\n<p><strong>Tickless-tomg\u00e5ng<\/strong> (CONFIG_NO_HZ_IDLE) inaktiverar den regelbundna ticken s\u00e5 snart en CPU \u00e4r inaktiv. Detta minskar str\u00f6mf\u00f6rbrukningen och v\u00e4rmeutvecklingen, eftersom processorn vakenas ur djups\u00f6mn mindre ofta. <strong>NO_HZ_FULL<\/strong> forts\u00e4tter och minskar till och med antalet tickar p\u00e5 aktiva k\u00e4rnor n\u00e4r endast en uppgift k\u00f6rs d\u00e4r. F\u00f6r att uppn\u00e5 detta isolerar jag dessa k\u00e4rnor strikt och flyttar systemarbetet till s\u00e4rskilda housekeeping-processorer. Den som genomf\u00f6r en ordentlig isolering f\u00e5r mycket tysta k\u00e4rnor och d\u00e4rmed b\u00e4ttre f\u00f6ruts\u00e4gbarhet under belastning.<\/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>J\u00e4mf\u00f6relsetabell och anv\u00e4ndningsscenarier<\/h2>\n\n<p>F\u00f6ljande \u00f6versikt hj\u00e4lper mig att hitta den r\u00e4tta <strong>L\u00e4ge<\/strong> att v\u00e4lja utifr\u00e5n m\u00e5let och f\u00f6rbereda den n\u00f6dv\u00e4ndiga milj\u00f6n p\u00e5 r\u00e4tt s\u00e4tt. Jag tittar f\u00f6rst p\u00e5 arbetsbelastningens egenskaper, sedan p\u00e5 energim\u00e5len och slutligen p\u00e5 jittertoleransen. Erfarenheten visar att tydlig CPU-isolering l\u00f6nar sig s\u00e4rskilt vid handel, HPC och applikationer med mycket l\u00e5g latens <strong>N\u00e4tverk<\/strong>-Stacks. I ett datacenter med varierande belastning ger d\u00e4remot \u201dTickless Idle\u201d ofta den snabbaste besparingen. \u201dFull Tickless\u201d sparar jag till strikt kontrollerade v\u00e4rddatorer, d\u00e4r jag p\u00e5 ett tillf\u00f6rlitligt s\u00e4tt avskiljer systemarbetet.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>L\u00e4ge<\/th>\n      <th>N\u00e4r \u00e4r den aktiv?<\/th>\n      <th>F\u00f6rdel<\/th>\n      <th>Risk<\/th>\n      <th>L\u00e4mplig f\u00f6r<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Periodisk tick<\/td>\n      <td>Alltid, fast frekvens<\/td>\n      <td>Enkel <strong>Administration<\/strong><\/td>\n      <td>Mer jitter och uppvaknanden<\/td>\n      <td>Allm\u00e4nna servrar<\/td>\n    <\/tr>\n    <tr>\n      <td>Tickless Idle (NO_HZ_IDLE)<\/td>\n      <td>Endast vid tomg\u00e5ng<\/td>\n      <td>Mindre energi, svalare <strong>Processorer<\/strong><\/td>\n      <td>Begr\u00e4nsad minskning av latensen<\/td>\n      <td>VM-v\u00e4rdar, webb, blandat<\/td>\n    <\/tr>\n    <tr>\n      <td>Fullt tickl\u00f6st (NO_HZ_FULL)<\/td>\n      <td>\u00c4ven vid enkeluppgiftsbelastning<\/td>\n      <td>Mycket lugna k\u00e4rnor, lite <strong>Jitter<\/strong><\/td>\n      <td>Omfattande isolering kr\u00e4vs<\/td>\n      <td>HPC, handel, n\u00e4ra realtid<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>N\u00e4r det tickless-l\u00e4get lyser<\/h2>\n\n<p>Jag aktiverar Full Tickless p\u00e5 isolerade k\u00e4rnor n\u00e4r ett program \u00e4r extremt <strong>L\u00e5g latenstid<\/strong> m\u00e5ste reagera. Dit h\u00f6r ordermatchning, paketbehandling med Single-Queue eller sn\u00e4v NUMA-lokalisering i vetenskapliga koder. Vid energim\u00e5l p\u00e5 blandade v\u00e4rddatorer r\u00e4cker ofta Tickless Idle f\u00f6r m\u00e4tbara <strong>Besparingar<\/strong>. Den som ser m\u00e5nga s\u00f6mnfaser har stor nytta av det, eftersom C-tillst\u00e5nden l\u00e4mnas mindre ofta vid varje tick. L\u00e4s g\u00e4rna min guide om <a href=\"https:\/\/webhosting.de\/sv\/tickless-kernel-server-energieffektivitet-optimerad-groen\/\">Energieffektivitet med Tickless<\/a>, om du framf\u00f6r allt vill s\u00e4nka elkostnaderna.<\/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>F\u00f6rdelar och biverkningar i vardagen<\/h2>\n\n<p>F\u00e4rre periodiska tickar inneb\u00e4r f\u00e4rre <strong>F\u00f6r\u00e4ndrad kontext<\/strong> och ofta mer j\u00e4mna k\u00f6rtider. I isolerade milj\u00f6er minskar OS-bruset, vilket g\u00f6r att k\u00e4nslig kod reagerar mer konsekvent. Enligt Linux Foundation och k\u00e4rndokumentationen ger NO_HZ_IDLE betydande f\u00f6rb\u00e4ttringar i vilol\u00e4ge, medan NO_HZ_FULL ytterligare minskar st\u00f6rningsimpulserna. HPC-dokumentation bekr\u00e4ftar effekten i kombination med pinning och IRQ-buntning p\u00e5 housekeeping-k\u00e4rnor. Den som utf\u00f6r m\u00e4tningar p\u00e5 ett korrekt s\u00e4tt kan tydligt se dessa effekter i latens- och energiprofilerna f\u00f6r <strong>V\u00e4rdar<\/strong>.<\/p>\n\n<h2>Risker vid felaktig tuning<\/h2>\n\n<p>Jag ser problem om IRQ:er eller RCU-callbacks \u00e4nd\u00e5 hamnar p\u00e5 isolerade k\u00e4rnor och de <strong>Vila<\/strong> f\u00f6rst\u00f6ra. D\u00e5 v\u00e4nds f\u00f6rdelen till nackdel, eftersom st\u00f6rningsbelastningen uppst\u00e5r p\u00e5 ett okoordinerat s\u00e4tt och orsakar jitter. Oplanerade bakgrundstj\u00e4nster, timers eller watchdog-funktioner p\u00e5 isolerade CPU:er har en liknande st\u00f6rande effekt. \u00c4ven blandade arbetsbelastningar med m\u00e5nga korta uppgifter sprider st\u00f6rningarna s\u00e5 brett att Full Tickless ger liten nytta. D\u00e4rf\u00f6r planerar jag in s\u00e4rskilda underh\u00e5llsk\u00e4rnor och testar varje steg med realistiska <strong>Profiler<\/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>Viktiga k\u00e4rnalternativ p\u00e5 ett l\u00e4ttf\u00f6rst\u00e5eligt s\u00e4tt<\/h2>\n\n<p>Med <strong>CONFIG_NO_HZ_IDLE<\/strong> Jag st\u00e4nger av ticket vid tomg\u00e5ng och uppn\u00e5r snabba vinster utan st\u00f6rre ombyggnader. <strong>CONFIG_NO_HZ_FULL<\/strong> Jag aktiverar detta endast n\u00e4r jag strikt isolerar k\u00e4rnor och definierar rena \u201dhousekeeping\u201d-processorer. Startparametern nohz_full anger vilka k\u00e4rnor som ska k\u00f6ras i tickless-l\u00e4ge; isolcpus kopplar bort dem fr\u00e5n den allm\u00e4nna schemal\u00e4ggningen. rcu_nocbs flyttar RCU-callbacks bort fr\u00e5n dessa k\u00e4rnor, medan irqaffinity st\u00e4ller in avbrottsansvaret. Det \u00e4r f\u00f6rst i samverkan som konfigurationen fungerar stabilt och d\u00e4rmed verkligen <strong>anv\u00e4ndbar<\/strong>.<\/p>\n\n<h2>Planera st\u00e4dk\u00e4rnor<\/h2>\n\n<p>Jag bokar en till tv\u00e5 <strong>k\u00e4rnor<\/strong> Varje NUMA-nod fungerar som en housekeeping-zon f\u00f6r IRQ:er, k\u00e4rntr\u00e5dar och RCU. Dessa k\u00e4rnor hanterar de oundvikliga systemuppgifterna och h\u00e5ller de isolerade k\u00e4rnorna fria. F\u00f6r detta \u00e4ndam\u00e5l kopplar jag medvetet tj\u00e4nster och IRQ-k\u00f6er till housekeeping-processorerna och sp\u00e4rrar dem p\u00e5 de tysta k\u00e4rnorna. Den som <a href=\"https:\/\/webhosting.de\/sv\/server-cpu-schemalaeggare-klass-schemalaeggning\/\">CPU-schemal\u00e4ggarklasser<\/a> f\u00f6rst\u00e5r, hanterar prioriteringar och r\u00e4ttvisa p\u00e5 ett tillf\u00f6rlitligt s\u00e4tt. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir latensv\u00e4garna korta, och de lugna k\u00e4rnorna levererar f\u00f6ruts\u00e4gbara <strong>Svarstider<\/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>Praktisk guide: Steg f\u00f6r steg<\/h2>\n\n<p>Jag inleder varje projekt med en tydlig <strong>Baslinje<\/strong>-K\u00f6rning: latens, energif\u00f6rbrukning, genomstr\u00f6mning, jitter. D\u00e4refter kontrollerar jag om NO_HZ_IDLE \u00e4r aktiverat och om k\u00e4rnan st\u00f6der NO_HZ_FULL. D\u00e4refter tilldelar jag IRQ-affinitet, aktiverar rcu_nocbs och planerar housekeeping-processorer. F\u00f6rst d\u00e4refter isolerar jag n\u00e5gra k\u00e4rnor p\u00e5 prov med nohz_full och j\u00e4mf\u00f6r resultaten. F\u00f6r den detaljerade analysen \u00e4r den h\u00e4r guiden till stor hj\u00e4lp f\u00f6r att <a href=\"https:\/\/webhosting.de\/sv\/maeta-latensen-i-linux-schemalaeggaren-och-optimera-prestandan\/\">M\u00e4ta latens<\/a>, s\u00e5 att jag kan utv\u00e4rdera varje \u00e4ndring p\u00e5 ett korrekt s\u00e4tt.<\/p>\n\n<h2>M\u00e4tmetoder och nyckeltal<\/h2>\n\n<p>Jag m\u00e4ter end-to-end-<strong>F\u00f6rdr\u00f6jning<\/strong> med histogram och kvantilerar avvikande v\u00e4rden, ist\u00e4llet f\u00f6r att bara titta p\u00e5 medelv\u00e4rden. Jag utv\u00e4rderar PPS och Tail-Latency tillsammans, s\u00e5 att lugna k\u00e4rnor inte drar ner genomstr\u00f6mningen. Jag m\u00e4ter energif\u00f6rbrukningen via RAPL, IPMI eller en ansluten m\u00e4tare och ber\u00e4knar besparingen i <strong>Euro<\/strong> per m\u00e5nad. Exempel: Om en server sparar 12 W vid drift dygnet runt blir det, vid ett pris p\u00e5 0,30 \u20ac\/kWh, cirka 3,15 \u20ac per m\u00e5nad och server. Med 200 servrar blir det sammanlagt hela 630 \u20ac per m\u00e5nad.<\/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>En djupare inblick: Hur k\u00e4rnan egentligen st\u00e4nger av tickarna<\/h2>\n<p>Bakom Tickless ligger \u00f6verg\u00e5ngen fr\u00e5n periodiska tickar till en <strong>Eng\u00e5ngsklockh\u00e4ndelse<\/strong>: K\u00e4rnan schemal\u00e4gger n\u00e4sta \u201eh\u00e4ndelse\u201c exakt till det tidigaste tillf\u00e4llet d\u00e5 en timer l\u00f6per ut eller ett schemal\u00e4ggningsbeslut ska fattas. Timers med h\u00f6g uppl\u00f6sning (hrtimer) m\u00f6jligg\u00f6r fin granularitet. P\u00e5 en <strong>NO_HZ_FULL<\/strong>-CPU:n utel\u00e4mnar den periodiska schemal\u00e4ggarticken s\u00e5 l\u00e4nge endast en uppgift k\u00f6rs och ingen k\u00e4rnarbete beh\u00f6ver utf\u00f6ras. S\u00e5 snart tv\u00e5 eller flera uppgifter \u00e4r k\u00f6rbara startar k\u00e4rnan ticket igen f\u00f6r att s\u00e4kerst\u00e4lla r\u00e4ttvisa f\u00f6rdelning och tidsdelning. Det \u00e4r just denna dynamik som g\u00f6r systemet tystare utan att schemal\u00e4ggningens korrekthet g\u00e5r f\u00f6rlorad.<\/p>\n\n<h2>HZ, High-Res-Timer och tidskonto<\/h2>\n<p>K\u00e4rnkonstanten <strong>HZ<\/strong> (vanligtvis 250 eller 1000) best\u00e4mmer frekvensen f\u00f6r den klassiska ticken. Med \u201dtickless\u201d f\u00f6rlorar HZ sin praktiska betydelse f\u00f6r k\u00e4rnor d\u00e4r k\u00f6rningstiden \u00e4r avg\u00f6rande, men f\u00f6rblir relevant f\u00f6r jiffies-baserad logik. Viktigt \u00e4r ocks\u00e5 <strong>Tidskontiering<\/strong> (VTIME\/Context Tracking): F\u00f6r att anv\u00e4ndar- och systemtid ska registreras korrekt sp\u00e5rar k\u00e4rnan exakt n\u00e4r en uppgift befinner sig i k\u00e4rnan eller i anv\u00e4ndarutrymmet \u2013 utan en permanent tick. Den som arbetar mycket med profilering b\u00f6r ha detta i \u00e5tanke f\u00f6r att kunna tolka m\u00e4tningarna korrekt.<\/p>\n\n<h2>Energisparmekanismer och tickless<\/h2>\n<p>Tickless ger endast energibesparingar n\u00e4r plattformen \u00e4r i djup <strong>C-tillst\u00e5nd<\/strong> uppn\u00e5s p\u00e5 ett tillf\u00f6rlitligt s\u00e4tt. Jag kontrollerar d\u00e4rf\u00f6r firmware- och k\u00e4rninst\u00e4llningarna kring intel_pstate\/amd-pstate, turbol\u00e4gen och <strong>cpufreq<\/strong>-Governor. En aggressiv prestandagouverneur kan minska latensen, men motverka energim\u00e5len. Omv\u00e4nt kan en alltf\u00f6r tr\u00f6g energisparregulator minska genomstr\u00f6mningen. Min strategi: F\u00f6rst stabilisera den tickless-konfigurationen, sedan systematiskt testa P- och C-state-inst\u00e4llningarna, varje g\u00e5ng med identiska arbetsbelastningsprofiler.<\/p>\n\n<h2>Virtualisering och containrar<\/h2>\n<p>P\u00e5 hypervisor-v\u00e4rdar ger <strong>Tickless-tomg\u00e5ng<\/strong> ofta omedelbara besparingar, eftersom vilande vCPU:er v\u00e4cks upp mindre ofta. F\u00f6r <strong>NO_HZ_FULL<\/strong> Jag isolerar fysiska k\u00e4rnor och tilldelar vCPU:er till de kritiska virtuella maskinerna exakt d\u00e4r. Viktigt: Steal-Time och v\u00e4rd-IRQ:er f\u00e5r inte st\u00f6ra dessa k\u00e4rnor. I g\u00e4stsystem \u00e4r Full Tickless endast meningsfullt om v\u00e4rden tillhandah\u00e5ller CPU-tiden deterministiskt. I containermilj\u00f6er replikerar jag isoleringslogiken med <strong>cgroups CPU-upps\u00e4ttningar<\/strong> och f\u00f6rhindra att Systempods eller Sidecars tar upp de tysta k\u00e4rnorna.<\/p>\n\n<h2>Stabilisera n\u00e4tverks- och lagringsv\u00e4gar<\/h2>\n<p>F\u00f6r extremt l\u00e5ga latenser sl\u00e5r jag ihop <strong>RX\/TX-k\u00f6er<\/strong> och deras IRQ:er p\u00e5 housekeeping-processorer. P\u00e5 de mindre belastade k\u00e4rnorna f\u00f6redrar jag att anv\u00e4nda polling i anv\u00e4ndarutrymmet eller s\u00e4rskilda slutf\u00f6randetr\u00e5dar ist\u00e4llet f\u00f6r att till\u00e5ta IRQ:er. N\u00e4r det g\u00e4ller NVMe kan <strong>IO-k\u00f6-affinitet<\/strong> fungerar p\u00e5 liknande s\u00e4tt. NAPI-Busy-Polling kan anv\u00e4ndas p\u00e5 ett m\u00e5linriktat s\u00e4tt n\u00e4r polling-jitter \u00e4r mer f\u00f6ruts\u00e4gbar \u00e4n interrupt-jitter. M\u00e5let \u00e4r att de isolerade k\u00e4rnorna aldrig ska v\u00e4ckas ov\u00e4ntat av externa h\u00e4ndelser.<\/p>\n\n<h2>Exempel: Startparametrar och pinning<\/h2>\n<p>S\u00e5 h\u00e4r skissar jag upp en minimal konfiguration (exempel: 16 k\u00e4rnor, CPU 0\u20131 f\u00f6r underh\u00e5ll; 2\u20137 och 10\u201315 som kandidater f\u00f6r belastning; 8\u20139 f\u00f6r systemtj\u00e4nster):<\/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>Efter uppstarten till\u00e4mpar jag Affinity och CPUsets p\u00e5 ett konsekvent s\u00e4tt:<\/p>\n<pre><code>Sammanf\u00f6ra #-IRQ:er\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\n# F\u00e4sta latenskritiska tj\u00e4nster\ntaskset -c 2-3 \/usr\/bin\/min_tj\u00e4nst\n\n# cgroup-cpuset f\u00f6r systemtj\u00e4nster (exempel)\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>I systemd-enheter anv\u00e4nder jag dessutom <strong>CPU-affinitet =<\/strong> eller . <strong>AllowedCPUs=<\/strong>, s\u00e5 att tj\u00e4nsterna alltid anv\u00e4nder r\u00e4tt k\u00e4rnor.<\/p>\n\n<h2>Diagnos: Kontrollera om k\u00e4rnorna verkligen \u00e4r tysta<\/h2>\n<p>Jag kontrollerar om mina k\u00e4rnor \u00e4r inaktiva med n\u00e5gra enkla steg:\n\u2013 \/proc\/interrupts: Stiger r\u00e4knaren p\u00e5 isolerade CPU:er? Om ja, korrigera IRQ-affinitet.\n\u2013 \/proc\/timer_list: Identifiera ov\u00e4ntade timers p\u00e5 NO_HZ_FULL-k\u00e4rnor.\n\u2013 ftrace\/perf: G\u00f6r wakeups, softirqs och schemal\u00e4ggningsh\u00e4ndelser synliga.\n\u2013 turbostat: Kontrollera C-state-uppeh\u00e5llstider.\nOm softirq:er (NET_RX, TIMER) fortfarande intr\u00e4ffar p\u00e5 inaktiva k\u00e4rnor f\u00f6religger n\u00e4stan alltid ett f\u00f6rdelnings- eller drivrutinsproblem.<\/p>\n\n<h2>Interaktion med PREEMPT_RT och RT-tr\u00e5dar<\/h2>\n<p><strong>PREEMPT_RT<\/strong> minskar latensen genom att f\u00f6ra in preemption djupt in i k\u00e4rnan. I kombination med NO_HZ_FULL kan detta ge mycket goda resultat om IRQ:er k\u00f6rs som tr\u00e5dar och strikt h\u00e5lls p\u00e5 housekeeping-processorer. Viktigt: Sprid inte ut RT-tr\u00e5dar f\u00f6r mycket, utan placera dem t\u00e4tt och kontrollera deras minnesv\u00e4gar (NUMA, sidfel). Jag h\u00e5ller alltid RT-tr\u00e5dar p\u00e5 isolerade k\u00e4rnor \u201eensamma\u201c, s\u00e5 att ingen tick \u00e5terv\u00e4nder p\u00e5 grund av att en andra k\u00f6rbar uppgift uppst\u00e5r.<\/p>\n\n<h2>N\u00e4r \u201dFull Tickless\u201d inte l\u00f6nar sig<\/h2>\n<p>Jag avst\u00e5r fr\u00e5n NO_HZ_FULL om:\n\u2013 M\u00e5nga kortlivade uppgifter uppst\u00e5r kontinuerligt (t.ex. Fork\/Exec-bursts).\n\u2013 Arbetsbelastningen \u00e4r starkt synkroniserad och tvingar fram st\u00e4ndiga k\u00e4rnv\u00e4xlingar.\n\u2013 Plattformen inte n\u00e5r rena C-tillst\u00e5nd eller om TSC \u00e4r instabil.\nI s\u00e5dana fall ger ren <strong>IRQ- och CPU-pinning<\/strong> ofta mer \u00e4n kostnaden f\u00f6r en fullst\u00e4ndig isolering.<\/p>\n\n<h2>Finesser i produktionen: \u00d6vervakning och drift<\/h2>\n<p>I produktionsmilj\u00f6er varnar jag f\u00f6r \u201esmygande\u201c f\u00f6r\u00e4ndringar: en k\u00e4rnuppdatering, en ny agent eller en \u00e4ndrad IRQ-mappning kan st\u00f6ra k\u00e4rnornas stabilitet. D\u00e4rf\u00f6r inf\u00f6r jag:\n\u2013 Ett \u201eGuardrail\u201c-skript som efter omstart verifierar affinitet, CPU-set och RCU-inst\u00e4llningar.\n\u2013 M\u00e4tv\u00e4rden f\u00f6r uppvakningar per sekund, C-state-tider och p99,9-latens.\n\u2013 Periodiska <strong>Regressionstester<\/strong> med identiska arbetsbelastningar.\nEndast p\u00e5 detta s\u00e4tt kan f\u00f6rdelarna med tickless-tekniken bevaras p\u00e5 ett tillf\u00f6rlitligt s\u00e4tt.<\/p>\n\n<h2>M\u00e5lmedvetet eliminera k\u00e4llor till jitter<\/h2>\n<p>F\u00f6rutom IRQ:er orsakar ofta <strong>Timer i anv\u00e4ndarutrymmet<\/strong> (sleep\/usleep\/timerfd) f\u00f6r oregelbundna m\u00f6nster. Jag arbetar med <em>timer slack<\/em> (prctl eller \/proc) och grupperar f\u00f6rfallodatum s\u00e5 att k\u00e4rnan planerar f\u00e4rre enskilda uppvakningar. \u00c4ven bakgrunds-GC:er i hanterade k\u00f6rmilj\u00f6er (JVM, Go) tidsplanerar jag eller isolerar dem till housekeeping-k\u00e4rnor. M\u00e5let \u00e4r alltid att endast till\u00e5ta de absolut n\u00f6dv\u00e4ndiga v\u00e4ckningarna p\u00e5 NO_HZ_FULL-k\u00e4rnor.<\/p>\n\n<h2>Tolkning av nyckeltalen: Synligg\u00f6ra avv\u00e4gningar<\/h2>\n<p>Jag utv\u00e4rderar inte bara medelv\u00e4rden, utan \u00e4ven <strong>Distribution<\/strong>: p50, p95, p99,9 och max. Ett typiskt framg\u00e5ngsm\u00f6nster: Tail-latensen minskar avsev\u00e4rt, den genomsnittliga genomstr\u00f6mningen f\u00f6rblir of\u00f6r\u00e4ndrad eller \u00f6kar n\u00e5got, och C-state-tiden blir l\u00e4ngre. Om jag d\u00e4remot ser f\u00f6rb\u00e4ttrad jitter men m\u00e4rkbart l\u00e4gre genomstr\u00f6mning justerar jag CPU:ns frekvenspolicy eller \u00f6kar f\u00f6rsiktigt antalet vilande k\u00e4rnor s\u00e5 att k\u00f6erna inte blir \u00f6verbelastade.<\/p>\n\n<h2>Checklista innan NO_HZ_FULL aktiveras<\/h2>\n<p>\n\u2013 K\u00e4rnfunktioner: CONFIG_NO_HZ_FULL, High-Res-Timer aktiverad<br\/>\n\u2013 Tydliga CPU-roller: Housekeeping-CPU:er definierade per NUMA-nod<br\/>\n\u2013 IRQ- och RCU-avlastning: irqaffinity och rcu_nocbs \u00e4r konsekvent inst\u00e4llda<br\/>\n\u2013 Placering av tj\u00e4nster: dokumentation och testning av systemd\/cgroups-pinning<br\/>\n\u2013 M\u00e4tuppst\u00e4llning: reproducerbara arbetsbelastningar, meningsfulla nyckeltal, j\u00e4mf\u00f6relse <em>f\u00f6re\/efter<\/em><br\/>\n\u2013 \u00c5terst\u00e4llningsplan: Startpost tillg\u00e4nglig utan NO_HZ_FULL\n<\/p>\n\n<h2>Vanliga hinder och l\u00f6sningar<\/h2>\n\n<p>Jag ser ofta att systemtj\u00e4nster k\u00f6rs p\u00e5 isolerade k\u00e4rnor och att <strong>Isolering<\/strong> f\u00f6rs\u00e4mra prestandan. Detta kan motverkas med systemd-Affinity, cgroups-CPUsets och en tydlig dokumentation av tj\u00e4nsterna. \u00c4ven felaktig NUMA-placering leder till on\u00f6diga fj\u00e4rr\u00e5tkomster och latensspikar. Jag kopplar minne och tr\u00e5dar strikt till respektive nod, s\u00e5 att v\u00e4garna blir korta och konsekventa <strong>stanna<\/strong>. Otydlig IRQ-f\u00f6rdelning \u00e4r det tredje vanliga problemet, d\u00e4rf\u00f6r samlar jag h\u00f6gtrafikerade k\u00f6er p\u00e5 housekeeping-processorer.<\/p>\n\n<h2>Kort sammanfattning f\u00f6r praktiken<\/h2>\n\n<p>Der <strong>tickless<\/strong> K\u00e4rnan minskar st\u00f6rande tickar, sparar energi och skapar tillf\u00f6rlitliga tidsf\u00f6nster f\u00f6r k\u00e4nsliga arbetsbelastningar. Med \u201dTickless Idle\u201d uppn\u00e5r jag snabbt effektivitetsvinster, medan \u201dFull Tickless\u201d ger ytterligare lugn p\u00e5 isolerade k\u00e4rnor. Den st\u00f6rsta effekten ser jag n\u00e4r jag p\u00e5 ett smidigt s\u00e4tt samlar IRQ:er, RCU och bakgrundsarbete p\u00e5 housekeeping-CPU:er. Utan m\u00e4tningar g\u00e5r det inte: latens, jitter, energif\u00f6rbrukning och genomstr\u00f6mning visar mig om optimeringen ger resultat. P\u00e5 s\u00e5 s\u00e4tt anv\u00e4nder jag tickless-l\u00e4get m\u00e5lmedvetet och f\u00e5r ut det mesta av <strong>schemal\u00e4ggare<\/strong> ut.<\/p>","protected":false},"excerpt":{"rendered":"<p>Tickless-k\u00e4rnan enkelt f\u00f6rklarad: F\u00f6rdelar, risker och k\u00e4rnoptimering f\u00f6r servrar, HPC och system med l\u00e5g latens.<\/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":"63","_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\/sv\/wp-json\/wp\/v2\/posts\/21507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/comments?post=21507"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/21507\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/21500"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=21507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=21507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=21507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}