{"id":19745,"date":"2026-06-06T15:03:33","date_gmt":"2026-06-06T13:03:33","guid":{"rendered":"https:\/\/webhosting.de\/server-irq-affinity-multicore-netzwerkoptimierung-performance\/"},"modified":"2026-06-06T15:03:33","modified_gmt":"2026-06-06T13:03:33","slug":"server-irq-affinity-multicore-naetverksoptimering-prestanda","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/server-irq-affinity-multicore-netzwerkoptimierung-performance\/","title":{"rendered":"Server IRQ Affinity och n\u00e4tverksoptimering med flera k\u00e4rnor f\u00f6r maximal prestanda"},"content":{"rendered":"<p>Jag optimerar n\u00e4tverkss\u00f6kv\u00e4garna f\u00f6r en server genom att <strong>IRQ-affinitet<\/strong> och mappa RX\/TX-k\u00f6er till k\u00e4rnor f\u00f6r att kontrollera latens, genomstr\u00f6mning och p99-jitter. De som anv\u00e4nder flerk\u00e4rniga processorer orkestrerar konsekvent avbrott, SoftIRQ, NAPI och NUMA p\u00e5 ett s\u00e5dant s\u00e4tt att fl\u00f6dena f\u00f6rblir k\u00e4rn-affina, kontextbytena minskar och applikationen svarar m\u00e4tbart snabbare.<\/p>\n\n<h2>Centrala punkter<\/h2>\n<ul>\n  <li><strong>IRQ-f\u00f6rdelning<\/strong> best\u00e4mmer vilka k\u00e4rnor som ska b\u00e4ra h\u00e5rdvaruinterrupts och f\u00f6rhindrar hotspots.<\/li>\n  <li><strong>NUMA-n\u00e4rhet<\/strong> minskar fj\u00e4rr\u00e5tkomsten och s\u00e4nker f\u00f6rdr\u00f6jningstopparna.<\/li>\n  <li><strong>SoftIRQs och NAPI<\/strong> styra batchbearbetning och minska belastningen p\u00e5 k\u00e4rnorna.<\/li>\n  <li><strong>RPS\/RFS<\/strong> h\u00e5ller fl\u00f6dena n\u00e4ra de f\u00f6rbrukande tr\u00e5darna.<\/li>\n  <li><strong>M\u00e4tning och fasts\u00e4ttning<\/strong> g\u00f6r prestandan mer deterministisk.<\/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\/06\/serverraum-optimierung-4761.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Varf\u00f6r IRQ Affinity r\u00e4knas vid serverdrift<\/h2>\n\n<p>H\u00f6ga pakethastigheter belastar snabbt enskilda k\u00e4rnor om alla avbrott landar p\u00e5 ett f\u00e5tal processorer, s\u00e5 jag f\u00f6rdelar belastningen selektivt f\u00f6r att <strong>Hotspots<\/strong> f\u00f6r att undvika detta. Jag tilldelar RX\/TX-k\u00f6er till l\u00e4mpliga k\u00e4rnor f\u00f6r att h\u00e5lla datav\u00e4garna korta och cacherna varma. Detta minskar p95\/p99-latenstiderna eftersom jag undviker on\u00f6diga migreringar och h\u00e5ller bearbetningsstegen p\u00e5 samma k\u00e4rnor. Jag tar h\u00e4nsyn till den fysiska n\u00e4rheten mellan NIC, minneskanaler och CPU-socklar s\u00e5 att v\u00e4gen fr\u00e5n paketet till applikationsarbetaren f\u00f6rblir konsekvent snabb. Denna k\u00e4rnaffinitet skapar m\u00e4tbar stabilitet under trafiktoppar utan att man beh\u00f6ver uppgradera h\u00e5rdvaran omedelbart.<\/p>\n\n<h2>IRQ-balansering kontra fast affinitet<\/h2>\n\n<p>Standardtj\u00e4nsten <strong>irqbalans<\/strong> distribuerar avbrott automatiskt, men den k\u00e4nner inte till min applikationslogik, NUMA-m\u00e5l och latensbudgetar. Jag binder kritiska n\u00e4tverks-IRQ:er till utvalda k\u00e4rnor, medan bullriga eller mindre viktiga avbrott flyttas till andra k\u00e4rnor. Denna bindning harmoniserar med applikationsprocessernas pinning s\u00e5 att pipelinen per fl\u00f6de f\u00f6rblir konsekvent. Med tung trafik undviker jag omf\u00f6rdelningar som genererar ytterligare overhead och f\u00f6rsvagar cache-effekten. Om du vill g\u00e5 djupare kan du hitta praktisk bakgrundsinformation i den h\u00e4r guiden: <a href=\"https:\/\/webhosting.de\/sv\/server-irq-balansering-optimering-av-naetverksprestanda-datacenter\/\">IRQ-balansering i datacentret<\/a>.<\/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\/06\/netzwerkoptimierung_meeting_4827.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>CPU-affinitet, NUMA och den korta datav\u00e4gen<\/h2>\n\n<p>Jag f\u00f6redrar att koppla applikationsarbetare och n\u00e4tverks-IRQ:er till samma <strong>NUMA<\/strong>-noder s\u00e5 att minnes\u00e5tkomst f\u00f6rblir lokal. Om en NIC h\u00e4nger p\u00e5 nod 0 s\u00e4tter jag ocks\u00e5 de tillh\u00f6rande RX-k\u00f6erna d\u00e4r och binder de relevanta processerna till dessa k\u00e4rnor. P\u00e5 s\u00e5 s\u00e4tt undviker jag dyra fj\u00e4rrminnes\u00e5tkomster, som har en stor inverkan p\u00e5 latensen vid h\u00f6ga pakethastigheter. Jag inkluderar ocks\u00e5 hyper-threading-par s\u00e5 att systertr\u00e5dar inte st\u00f6r varandra. Denna triangel av processpinning, IRQ-affinitet och NUMA-topologi g\u00f6r n\u00e4tverksv\u00e4garna mer f\u00f6ruts\u00e4gbara och \u00f6kar genomstr\u00f6mningen.<\/p>\n\n<h2>F\u00f6rst\u00e5else f\u00f6r SoftIRQs, NAPI och utformning av k\u00f6er<\/h2>\n\n<p>Efter h\u00e5rdvaruavbrottet tar k\u00e4rnan \u00f6ver bearbetningen i <strong>SoftIRQs<\/strong>, ofta p\u00e5 samma k\u00e4rna som mottog IRQ:n. N\u00e4r belastningen \u00e4r h\u00f6g f\u00f6rdelar jag medvetet SoftIRQ-belastningen f\u00f6r att minska flaskhalsarna utan att fragmentera datav\u00e4gen i on\u00f6dan. NIC:er med flera k\u00f6er underl\u00e4ttar eftersom jag kan tilldela tydligt definierade k\u00e4rnor till varje k\u00f6 och p\u00e5 s\u00e5 s\u00e4tt uppn\u00e5 verklig parallellisering. Jag anv\u00e4nder NAPI f\u00f6r att bearbeta paket i satser s\u00e5 att inga avbrottsstormar uppst\u00e5r och CPU-tiden utnyttjas effektivt. Den h\u00e4r artikeln ger bakgrundskunskap om den h\u00e4r v\u00e4gen: <a href=\"https:\/\/webhosting.de\/sv\/softirq-cpu-hosting-naetverk-genomstroemning-optimering-datacenter\/\">SoftIRQ och genomstr\u00f6mning i n\u00e4tverket<\/a>.<\/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\/06\/maxperformance-network-optimization-6742.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>RPS\/RFS och fl\u00f6deslokalitet<\/h2>\n\n<p>Jag anv\u00e4nder RPS f\u00f6r en bredare distribution av paketen och st\u00e4ller in <strong>RFS<\/strong> s\u00e5 att fl\u00f6dena hamnar i de konsumerande tr\u00e5darna. P\u00e5 s\u00e5 s\u00e4tt h\u00e5lls cache\u00e5tkomsterna effektiva och applikationen f\u00e5r konsekventa svarstider. Jag harmoniserar hash-strategin f\u00f6r NIC, antalet k\u00f6er och RPS CPU-upps\u00e4ttningar s\u00e5 att ingen k\u00e4rnk\u00f6 \u00f6verbelastas. Fl\u00f6desaffiniteten \u00e4r s\u00e4rskilt effektiv f\u00f6r m\u00e5nga korta f\u00f6rfr\u00e5gningar, t.ex. de som genereras av API:er och mikrotj\u00e4nster. P\u00e5 det h\u00e4r s\u00e4ttet bygger jag en pipeline d\u00e4r varje fl\u00f6de ber\u00f6r samma k\u00e4rna s\u00e5 ofta som m\u00f6jligt och undviker on\u00f6diga migreringar.<\/p>\n\n<h2>RSS, indirection table och XPS: m\u00e5linriktad kontroll av hashing<\/h2>\n\n<p>F\u00f6r att s\u00e4kerst\u00e4lla att distributionen b\u00f6rjar rent vid NIC, justerar jag <strong>RSS<\/strong> (Receive Side Scaling) och indirektionstabellen s\u00e5 att RX-k\u00f6erna tilldelas exakt till de k\u00e4rnor som senare kommer att b\u00e4ra apptr\u00e5darna. Jag ser till att antalet k\u00f6er matchar antalet k\u00e4rnor som anv\u00e4nds och att hashnycklarna f\u00f6rblir stabila s\u00e5 att fl\u00f6dena inte ov\u00e4ntat vandrar iv\u00e4g. Om hashalgoritmen \u00e4ndras eller om indirektionstabellen skrivs \u00f6ver dynamiskt, f\u00f6rst\u00f6r detta fl\u00f6deslokaliteten och fr\u00e4mjar cachemissar.<\/p>\n\n<p>P\u00e5 TX-banan aktiverar jag dessutom <strong>XPS<\/strong> (Transmit Packet Steering) s\u00e5 att utg\u00e5ende paket skickas av den k\u00e4rna som bearbetar programmet. Detta g\u00f6r ocks\u00e5 att TX-cacherna ligger n\u00e4ra processorn och att v\u00e4gen fr\u00e5n socketk\u00f6n till NIC-k\u00f6n f\u00f6rblir kort. Jag h\u00e5ller RX- och TX-mappningarna konsekventa, dokumenterar dem per gr\u00e4nssnitt och definierar dem i startskript s\u00e5 att en omstart inte suddar ut arkitekturen.<\/p>\n\n<h2>Sammanslagning av avbrott: v\u00e4ga latenstid mot genomstr\u00f6mning<\/h2>\n\n<p>Med <strong>Sammansm\u00e4ltning<\/strong> Jag sammanfattar avbrott f\u00f6r att minska overhead, men \u00e4r uppm\u00e4rksam p\u00e5 latensgr\u00e4nserna i min applikation. F\u00f6r streaming och VoIP tenderar jag att h\u00e5lla intervallen korta, medan bulk\u00f6verf\u00f6ringar tolererar l\u00e4ngre batcher bra. Jag testar steg f\u00f6r steg, m\u00e4ter p95\/p99 och kontrollerar drops, retransmissioner och CPU-anv\u00e4ndning per k\u00e4rna. F\u00f6rst d\u00e4refter skriver jag ner inst\u00e4llningarna och dokumenterar dem f\u00f6r varje host och NIC. Den h\u00e4r praktiska artikeln ger en djupare inblick i avv\u00e4gningen: <a href=\"https:\/\/webhosting.de\/sv\/avbrott-koalescens-naetverksoptimering-serverflux\/\">Sammanslagning av avbrott f\u00f6rklaras<\/a>.<\/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\/06\/tech_office_multi_core_optimierung_4729.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Korrekt dosering av avlastare och aggregat<\/h2>\n\n<p>Jag st\u00e4ller in <strong>GRO\/LRO<\/strong> f\u00f6r att minska CPU-\u00f6verhead, men kontrollera om mina arbetsbelastningar gynnas av st\u00f6rre partier. Latensk\u00e4nsliga API:er svarar ofta b\u00e4ttre n\u00e4r GRO \u00e4r m\u00e5ttligt och LRO \u00e4r avst\u00e4ngt, eftersom stora superpaket kan f\u00f6rv\u00e4rra blockeringseffekter p\u00e5 huvudlinjen. F\u00f6r bulk\u00f6verf\u00f6ringar, replikering eller s\u00e4kerhetskopiering anv\u00e4nder jag GRO\/GSO\/TSO mer aggressivt s\u00e5 l\u00e4nge som mottagarsidan f\u00f6rblir stabil och CPU-anv\u00e4ndningen sjunker.<\/p>\n\n<p><strong>Avlastning av checksumma<\/strong> och <strong>TSO\/GSO<\/strong> minska belastningen p\u00e5 processorn avsev\u00e4rt, men jag ser till att mellanl\u00e5dor, tunnlar eller inkompatibilitet med avlastning (t.ex. med vissa inkapslingar) fungerar korrekt. Om avvikelser uppst\u00e5r minskar jag gradvis enskilda avlastningar och m\u00e4ter effekterna p\u00e5 genomstr\u00f6mning, \u00e5ters\u00e4ndningar och CPU-tid. M\u00e5let \u00e4r en upps\u00e4ttning som f\u00f6rblir stabil \u00f6ver hela linjen och f\u00f6ruts\u00e4gbar vid topptider.<\/p>\n\n<h2>CPU-isolering, schemal\u00e4ggare och energistatus<\/h2>\n\n<p>F\u00f6r h\u00e5rda latensbudgetar isolerar jag k\u00e4rnor f\u00f6r n\u00e4tverksstigar och apparbetare. Med <strong>CPU-isolering<\/strong> och Lean Housekeeping-strategin f\u00f6rhindrar jag att systemuppgifter, Kthreads eller timeravbrott hamnar p\u00e5 de \u201eheta\u201c k\u00e4rnorna. Jag fixar ocks\u00e5 <strong>CPU-guvern\u00f6r<\/strong> till \u201eprestanda\u201c och begr\u00e4nsa djup <strong>C-tillst\u00e5nd<\/strong>, om dessa orsakar uppvakningslatenser. Jag h\u00e5ller ett \u00f6ga p\u00e5 k\u00e4rntemperaturen, eftersom termisk r\u00f6ta annars kan f\u00f6rst\u00f6ra alla finjusteringar.<\/p>\n\n<p>Valet av <strong>Schemal\u00e4ggning av lektioner<\/strong> p\u00e5verkar f\u00f6ruts\u00e4gbarheten. Jag prioriterar n\u00e4tverksrelaterade tr\u00e5dar, men k\u00f6r dem inte aggressivt och uteslutande, s\u00e5 att de inte konkurrerar med ksoftirqd om CPU-tid. Jag kontrollerar regelbundet om ksoftirqd startar p\u00e5 enskilda k\u00e4rnor - ett tydligt tecken p\u00e5 att SoftIRQ-belastningen \u00e4r f\u00f6r h\u00f6g eller felaktigt f\u00f6rdelad.<\/p>\n\n<h2>Upptagen polling och v\u00e4gar med l\u00e5g latens<\/h2>\n\n<p>N\u00e4r mikrosekunderna r\u00e4knas st\u00e4ller jag in <strong>Upptagen polling<\/strong> p\u00e5 ett m\u00e5linriktat s\u00e4tt. Program kan definiera polling-f\u00f6nster f\u00f6r utvalda socklar s\u00e5 att de h\u00e4mtar paket direkt fr\u00e5n NAPI-budgetar utan att v\u00e4nta p\u00e5 avbrott. Jag v\u00e4ljer korta pollningsintervall f\u00f6r att undvika att br\u00e4nna CPU-tid och begr\u00e4nsar den h\u00e4r tekniken till heta v\u00e4gar med konstant trafik. Parallellt med detta anpassar jag <strong>netdev-budgetar<\/strong> m\u00e5ttligt s\u00e5 att batcherna \u00e4r tillr\u00e4ckligt stora utan att sv\u00e4lta resten av systemet.<\/p>\n\n<h2>Disciplin f\u00f6r n\u00e4tverksk\u00f6er och pacing<\/h2>\n\n<p>Jag satte upp <strong>qdisc<\/strong> per gr\u00e4nssnitt f\u00f6r att matcha arbetsbelastningen. Jag anv\u00e4nder moderna metoder som fq\/fq_codel f\u00f6r att reglera tempot och k\u00f6l\u00e4ngderna f\u00f6r att j\u00e4mna ut rusningar och undvika buffertbl\u00e5sning. I konfigurationer med flera k\u00f6er kombinerar jag detta med <strong>mqprio<\/strong>, s\u00e5 att trafikklasserna konsekvent tilldelas r\u00e4tt HW-k\u00f6er. Tillsammans med <strong>BQL<\/strong> (Byte Queue Limits) p\u00e5 drivrutinen minskar f\u00f6rdr\u00f6jningen vid full belastning eftersom k\u00f6n inte v\u00e4xer okontrollerat.<\/p>\n\n<p>Det \u00e4r viktigt att interagera med <strong>XPS<\/strong> p\u00e5 TX-v\u00e4gen: Jag mappar s\u00e4ndningsk\u00f6erna till de k\u00e4rnor d\u00e4r motsvarande RX-fl\u00f6den ocks\u00e5 landar. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir b\u00e5da riktningarna av ett fl\u00f6de n\u00e4ra CPU:n och jag uppn\u00e5r stabilare svarstider med dubbelriktade protokoll (t.ex. HTTP\/2, gRPC).<\/p>\n\n<h2>Praktiskt arbetsfl\u00f6de under Linux<\/h2>\n\n<p>Jag b\u00f6rjar med en belastningsregistrering, kontrollerar CPU-f\u00f6rdelningen i top\/htop, tittar p\u00e5 \/proc\/interrupts och \/proc\/softirqs och l\u00e4ser ethtool-statistik f\u00f6r att k\u00e4nna igen flaskhalsar och f\u00f6rbereda n\u00e4sta <strong>Arbetsfl\u00f6de<\/strong>-steg. Jag best\u00e4mmer sedan IRQ-ID:n f\u00f6r de relevanta NIC-k\u00f6erna och st\u00e4ller in l\u00e4mpliga CPU-masker som utnyttjar k\u00e4rnorna j\u00e4mnt och tar h\u00e4nsyn till NUMA. Jag kopplar sedan applikationsarbetarna via taskset eller systemd-CPUAffinity till samma k\u00e4rnor som ocks\u00e5 betj\u00e4nar de tillh\u00f6rande k\u00f6erna. Jag aktiverar RPS\/RFS endast d\u00e4r det st\u00e4rker fl\u00f6deslokaliteten och h\u00e5ller konfigurationen konsekvent per gr\u00e4nssnitt. Slutligen m\u00e4ter jag genomstr\u00f6mning, latens och jitter igen innan jag rullar ut \u00e4ndringarna enhetligt p\u00e5 flera v\u00e4rdar.<\/p>\n\n<h2>M\u00e4tning, undvik p95\/p99 och regressioner<\/h2>\n\n<p>Jag f\u00f6rlitar mig inte p\u00e5 magk\u00e4nsla utan m\u00e4ter latenstider, felfrekvenser och k\u00e4rnanv\u00e4ndning f\u00f6re och efter varje tuningrunda s\u00e5 att <strong>p99<\/strong> f\u00f6rblir stabil. Jag sp\u00e5rar ocks\u00e5 kontextf\u00f6r\u00e4ndringar, migreringshastigheter och belastning per SoftIRQ-typ f\u00f6r att tidigt identifiera dolda biverkningar. Jag h\u00e5ller testerna reproducerbara, anv\u00e4nder samma dataupps\u00e4ttningar och fasta versioner s\u00e5 att resultaten f\u00f6rblir j\u00e4mf\u00f6rbara. Jag avsl\u00f6jar regressioner med korskontroller under topp- och vilol\u00e4ge samt med l\u00e5nga uth\u00e5llighetsk\u00f6rningar. F\u00f6rst n\u00e4r m\u00e4tv\u00e4rden, loggar och applikationssp\u00e5r st\u00e4mmer \u00f6verens f\u00f6rklarar jag konfigurationen som den nya baslinjestatusen.<\/p>\n\n<h2>Virtualisering, containrar och SR-IOV<\/h2>\n\n<p>I virtualiserade milj\u00f6er ser jag till att <strong>vCPU:er<\/strong>, minnet och vNIC:erna i VM:n finns p\u00e5 samma NUMA-nod som den tillh\u00f6rande fysiska NIC:en slutar p\u00e5. D\u00e4r det \u00e4r m\u00f6jligt anv\u00e4nder jag <strong>SR-IOV<\/strong>, s\u00e5 att datav\u00e4gen \u00e4r kort och IRQ:erna kan bindas direkt till g\u00e4stk\u00e4rnorna. Jag kopplar vCPU:er f\u00f6r de kritiska virtuella datorerna till dedikerade v\u00e4rdk\u00e4rnor och ser till att v\u00e4rd-IRQ:er och g\u00e4st-IRQ:er inte \u00f6verlappar varandra. I containerupps\u00e4ttningar st\u00e4ller jag in <strong>cpusets<\/strong> och \u201egaranterade\u201c QoS-klasser s\u00e5 att arbetscontainrar och deras n\u00e4tverks-IRQ:er f\u00e5r CPU-tid p\u00e5 ett f\u00f6ruts\u00e4gbart s\u00e4tt.<\/p>\n\n<p>Jag kontrollerar om irqbalance ska ha ledningen i g\u00e4sten eller p\u00e5 v\u00e4rden - annars ger dubbel \u201eautomatisk\u201c suddighet. Med virtio st\u00e4ller jag in flera k\u00f6er och mappar dem rent till vCPU: er f\u00f6r att m\u00f6jligg\u00f6ra parallellt arbete. Om vhost-net anv\u00e4nder enskilda v\u00e4rdk\u00e4rnor omf\u00f6rdelar jag backends och h\u00e5ller vhost-tr\u00e5dar NUMA-n\u00e4ra det fysiska n\u00e4tverkskortet.<\/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\/06\/servernetzwerkoptmierung-9473.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Fels\u00f6kning: snabbt k\u00e4nna igen m\u00f6nster<\/h2>\n\n<ul>\n  <li><strong>K\u00e4rnor m\u00e4ttade, ksoftirqd aktiv:<\/strong> S\u00e4tt RX-k\u00f6erna n\u00e4rmare varandra, kontrollera antalet k\u00f6er, justera RPS\/RFS eller \u00f6ka koalesceringen n\u00e5got.<\/li>\n  <li><strong>Jumpy p99 jitter:<\/strong> Kontrollera NUMA-drift, verifiera C-states\/governor, justera avlastningar och GRO-storlekar steg f\u00f6r steg.<\/li>\n  <li><strong>M\u00e5nga \u00e5ters\u00e4ndningar\/avbrott:<\/strong> Kontrollera RX\/TX-ringstorlekar, qdisc och BQL, kontrollera indirektionstabell och XPS f\u00f6r konsistens.<\/li>\n  <li><strong>Oj\u00e4mnt f\u00f6rdelade fl\u00f6den:<\/strong> Balansera RSS-hash och indirektionstabell, ta h\u00e4nsyn till pinning av heta fl\u00f6den, h\u00e5ll hashfr\u00f6et stabilt.<\/li>\n  <li><strong>Problem med enbart VM:<\/strong> Placera vhost\/virtio-backends n\u00e4ra NUMA, utv\u00e4rdera SR-IOV, separera IRQ:er mellan v\u00e4rd och g\u00e4st.<\/li>\n<\/ul>\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\/06\/entwicklerschreibtisch_4312.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Inkludera applikationer och databaser<\/h2>\n\n<p>En ren n\u00e4tverkss\u00f6kv\u00e4g \u00e4r till liten nytta om appservrar eller databaser inte arbetar parallellt, vilket \u00e4r anledningen till att jag konfigurerade <strong>Arbetare<\/strong>-nummer, tr\u00e5dpooler och anslutningsgr\u00e4nser till de tillg\u00e4ngliga k\u00e4rnorna. Jag kopplar NGINX- eller HAProxy-arbetare till l\u00e4mpliga k\u00e4rnor s\u00e5 att de matchar RX-k\u00f6erna. Jag skalar PHP-FPM, Node.js, Java eller Go s\u00e5 att de gynnar den lokala NUMA-dom\u00e4nen och anv\u00e4nder flera instanser om det beh\u00f6vs. Jag integrerar cacher som Redis eller Memcached n\u00e4ra CPU:n och \u00e4r uppm\u00e4rksam p\u00e5 deras egna n\u00e4tverks- och tr\u00e5dparametrar. Det \u00e4r bara samspelet mellan IRQ-affinitet, processpinning och appskalning som ger den m\u00e4rkbara \u00f6kningen av latens och genomstr\u00f6mning.<\/p>\n\n<h2>Hosting-scenarier med stora f\u00f6rdelar<\/h2>\n\n<p>Jag investerar fr\u00e4mst i djupjustering n\u00e4r API:er genererar m\u00e5nga korta f\u00f6rfr\u00e5gningar eller n\u00e4r <strong>I realtid<\/strong>-kommunikation som VoIP och chattar kr\u00e4ver l\u00e5ga jitterv\u00e4rden. E-handelskonfigurationer med toppbelastningar gynnas eftersom kassafl\u00f6den \u00e4r k\u00e4nsliga f\u00f6r latens. V\u00e4rdar med flera hyresg\u00e4ster och h\u00f6g densitet gynnas av att dedikerade k\u00e4rnor per k\u00f6 minskar grannskapseffekterna. Streamingtj\u00e4nster kan ocks\u00e5 uppn\u00e5 mer genomstr\u00f6mning per euro utan att omedelbart k\u00f6pa ny h\u00e5rdvara. Kostnaderna f\u00f6rblir ber\u00e4kningsbara s\u00e5 l\u00e4nge jag h\u00e5ller f\u00f6r\u00e4ndringarna m\u00e4tbara och rullar ut dem p\u00e5 ett korrekt s\u00e4tt.<\/p>\n\n<h2>Snabbreferenstabell: K\u00e4rnor, k\u00f6er, verktyg<\/h2>\n\n<p>Jag anv\u00e4nder f\u00f6ljande <strong>Tabell<\/strong> som en p\u00e5minnelse n\u00e4r jag s\u00e4tter upp nya v\u00e4rdar eller kalibrerar om befintliga inst\u00e4llningar. Den visar typiska m\u00e5l, l\u00e4mpliga \u00e5tg\u00e4rder, vanliga Linux-verktyg och den avsedda effekten p\u00e5 latens och genomstr\u00f6mning. Jag anv\u00e4nder den inte dogmatiskt, utan som en utg\u00e5ngspunkt f\u00f6r en serie m\u00e4tningar med verklig trafik. Om NIC-arkitekturen eller NUMA-topologin varierar anpassar jag k\u00e4rnvalet. Det \u00e4r fortfarande viktigt att beh\u00e5lla dokumentationen f\u00f6r varje host och att h\u00e5lla \u00e4ndringar sp\u00e5rbara.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>M\u00e5l<\/th>\n      <th>M\u00e5tt<\/th>\n      <th>Linux verktyg\/placering<\/th>\n      <th>F\u00f6rv\u00e4ntad effekt<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>F\u00f6rdela IRQ-belastning<\/td>\n      <td>Binda ledtr\u00e5dar till k\u00e4rnor<\/td>\n      <td>\/proc\/irq\/*\/smp_affinitet<\/td>\n      <td>F\u00e4rre hotspots, mer konstant latens<\/td>\n    <\/tr>\n    <tr>\n      <td>\u00d6ka fl\u00f6dets lokalitet<\/td>\n      <td>St\u00e4ll in RPS\/RFS CPU-upps\u00e4ttningar<\/td>\n      <td>\/sys\/class\/net\/*\/k\u00f6er\/*\/rps_cpus<\/td>\n      <td>F\u00e4rre migreringar, b\u00e4ttre cacheminnen<\/td>\n    <\/tr>\n    <tr>\n      <td>Kontrollera batchbearbetning<\/td>\n      <td>Finjustera NAPI\/sammanl\u00e4ggning<\/td>\n      <td>ethtool -C \/ standardinst\u00e4llningar f\u00f6r drivrutiner<\/td>\n      <td>L\u00e4gre overhead, kontrollerat jitter<\/td>\n    <\/tr>\n    <tr>\n      <td>Para ihop app och IRQ<\/td>\n      <td>Stiftarbetare<\/td>\n      <td>taskset, systemd CPUAffinitet<\/td>\n      <td>Kortare v\u00e4g, l\u00e4gre p99<\/td>\n    <\/tr>\n    <tr>\n      <td>Undvik NUMA<\/td>\n      <td>Samlokalisera enheter och k\u00e4rnor<\/td>\n      <td>numactl, lscpu, lspci -vv<\/td>\n      <td>Mindre fj\u00e4rr\u00e5tkomst, mer genomstr\u00f6mning<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>B\u00e4sta praxis som fungerar p\u00e5 l\u00e5ng sikt<\/h2>\n\n<p>Jag \u00e4ndrar bara en styrspak per testomg\u00e5ng, dokumenterar m\u00e4tv\u00e4rdena och sparar resultaten. <strong>Dokumentation<\/strong> i v\u00e4rdens repo. Jag h\u00e5ller konfigurationerna konsekventa genom att tydligt beskriva mappningar mellan k\u00f6er och k\u00e4rnor och anv\u00e4nda skript f\u00f6r replikering. Jag \u00f6vervakar loggar f\u00f6r drops, retransmissioner och timeouts och korrelerar dem med kernelmetriker. Jag inkluderar hypervisor- och lagringsniv\u00e5n i analysen s\u00e5 att inga skuggflaskhalsar kvarst\u00e5r. Jag har rollbacks redo ifall tester visar negativa effekter eller om arbetsbelastningen f\u00f6r\u00e4ndras.<\/p>\n\n<h2>Kortfattat sammanfattat<\/h2>\n\n<p>Jag uppn\u00e5r maximal n\u00e4tverksprestanda genom att anv\u00e4nda avbrott, <strong>Ledtr\u00e5dar<\/strong> och arbetare och h\u00e5ller d\u00e4rmed datav\u00e4gen per fl\u00f6de stabil. IRQ Affinity f\u00f6rdelar h\u00e5rdvarubelastningen p\u00e5 ett f\u00f6rnuftigt s\u00e4tt, medan SoftIRQs, NAPI och RPS\/RFS g\u00f6r bearbetningen effektiv. NUMA-n\u00e4rhet skyddar mot undvikbara minnesomv\u00e4gar och minskar jitter. Steg-f\u00f6r-steg-tuning med reproducerbara m\u00e4tningar f\u00f6rhindrar felkonfigurationer och visar verkliga framsteg. Om du t\u00e4nker p\u00e5 dessa byggstenar tillsammans kan du med s\u00e4kerhet utnyttja kapaciteten hos moderna flerk\u00e4rniga servrar f\u00f6r latenskritiska tj\u00e4nster.<\/p>","protected":false},"excerpt":{"rendered":"<p>Uppt\u00e4ck hur Server IRQ Affinity och n\u00e4tverksoptimering med flera k\u00e4rnor accelererar din paketbehandling och maximerar anv\u00e4ndningen av multicore-n\u00e4tverk i hosting.<\/p>","protected":false},"author":1,"featured_media":19738,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-19745","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":"122","_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 Affinity","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":"19738","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/19745","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=19745"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/19745\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/19738"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=19745"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=19745"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=19745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}