{"id":18689,"date":"2026-04-03T18:19:44","date_gmt":"2026-04-03T16:19:44","guid":{"rendered":"https:\/\/webhosting.de\/server-cpu-affinity-hosting-optimierung-kernelaffinity\/"},"modified":"2026-04-03T18:19:44","modified_gmt":"2026-04-03T16:19:44","slug":"server-cpu-affinity-hosting-optimering-kernelaffinity","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/server-cpu-affinity-hosting-optimierung-kernelaffinity\/","title":{"rendered":"Server CPU Affinity: Optimering av hosting-drift"},"content":{"rendered":"<p><strong>Server CPU-affinitet<\/strong> tilldelar specifikt processer till fasta CPU-k\u00e4rnor och minskar d\u00e4rmed migreringar, kontextbyten och kalla cacheminnen i hosting-stackar. Jag visar hur denna pinning skapar f\u00f6ruts\u00e4gbara latenser, h\u00f6gre cache-tr\u00e4fffrekvenser och konsekvent genomstr\u00f6mning i webbservrar, PHP-FPM, databaser, virtuella datorer och containrar.<\/p>\n\n<h2>Centrala punkter<\/h2>\n<p>F\u00f6ljande centrala aspekter utg\u00f6r riktlinjerna f\u00f6r en effektiv implementering av Affinity inom hosting.<\/p>\n<ul>\n  <li><strong>N\u00e4rhet till cachen<\/strong> minimerar latenstiden och \u00f6kar effektiviteten i flertr\u00e5dade arbetsbelastningar.<\/li>\n  <li><strong>Planerbarhet<\/strong> genom pinning: f\u00e4rre outliers p\u00e5 p99 och konstanta svarstider.<\/li>\n  <li><strong>NUMA-medvetenhet<\/strong> kopplar ihop minne och CPU, minskar dyr fj\u00e4rr\u00e5tkomst.<\/li>\n  <li><strong>C-grupper<\/strong> komplettera Affinity med kvoter, prioriteringar och r\u00e4ttvis f\u00f6rdelning.<\/li>\n  <li><strong>\u00d6vervakning<\/strong> med perf\/Prometheus avsl\u00f6jar migreringar och missar.<\/li>\n<\/ul>\n\n<h2>Vad betyder CPU Affinity i hosting?<\/h2>\n\n<p>Affinitet binder <strong>Tr\u00e5dar<\/strong> till fasta k\u00e4rnor s\u00e5 att schemal\u00e4ggaren inte sprider ut dem \u00f6ver hela sockeln. Som ett resultat f\u00f6rblir L1\/L2\/L3-cacherna varma, vilket \u00e4r s\u00e4rskilt viktigt f\u00f6r latens-kritiska <strong>F\u00f6rfr\u00e5gningar p\u00e5 webben<\/strong> r\u00e4knar. Linux CFS balanserar dynamiskt som standard, men genererar \u00f6verfl\u00f6diga migreringar i heta faser. Jag begr\u00e4nsar specifikt dessa migreringar ist\u00e4llet f\u00f6r att sakta ner schemal\u00e4ggaren helt. Jag ger en mer djupg\u00e5ende introduktion till CFS-alternativ h\u00e4r: <a href=\"https:\/\/webhosting.de\/sv\/linux-schemalaeggare-cfs-alternativ-hosting-kernelperf-boost\/\">Alternativ f\u00f6r Linux-schemal\u00e4ggare<\/a>.<\/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\/04\/cpu-affinity-serverraum-1842.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Analys och profilering av arbetsbelastning<\/h2>\n\n<p>Innan jag n\u00e5lar unders\u00f6ker jag <strong>Karakt\u00e4ristisk<\/strong> av tj\u00e4nsterna. H\u00e4ndelsestyrda webbservrar genererar f\u00e5 kontextf\u00f6r\u00e4ndringar, men har stor nytta av cache-coherence. Databaser \u00e4r k\u00e4nsliga f\u00f6r k\u00e4rnmigreringar under intensiva sammankopplingar eller kontrollpunkter. Jag m\u00e4ter p95\/p99-latens, sp\u00e5rar CPU-migreringar med <strong>perf<\/strong> och letar efter LLC-missar. F\u00f6rst d\u00e4refter skriver jag fasta regler och testar dem under toppbelastning.<\/p>\n\n<h2>CPU-topologi, SMT och k\u00e4rnpar<\/h2>\n<p>Jag tar h\u00e4nsyn till den fysiska topologin: k\u00e4rnkomplex, L3-skivor och <strong>SMT<\/strong>-...syskon. F\u00f6r tj\u00e4nster som \u00e4r kritiska f\u00f6r svansf\u00f6rdr\u00f6jningen allokerar jag bara en SMT-tr\u00e5d per k\u00e4rna s\u00e5 att heta tr\u00e5dar inte delar exekveringsenheter. SMT f\u00f6rblir aktivt f\u00f6r batchjobb som drar nytta av den extra genomstr\u00f6mningen. P\u00e5 AMD-EPYC \u00e4r jag uppm\u00e4rksam p\u00e5 CCD\/CCX-gr\u00e4nserna: Workers h\u00e5ller sig inom ett L3-segment f\u00f6r att h\u00e5lla LLC-tr\u00e4ffarna stabilt h\u00f6ga. F\u00f6r NIC-tunga stackar parar jag ihop RX\/TX-k\u00f6er med <strong>K\u00e4rnor<\/strong>, p\u00e5 vilken userspace-arbetarna k\u00f6rs. Detta par undviker snokande mellan k\u00e4rnor och h\u00e5ller v\u00e4garna mellan IRQ, SoftIRQ och app korta.<\/p>\n\n<h2>Pinning-strategier f\u00f6r webbservrar och PHP-FPM<\/h2>\n\n<p>F\u00f6r webbfrontends anv\u00e4nder jag <strong>NGINX<\/strong> Jag anv\u00e4nder ofta en smal k\u00e4rnupps\u00e4ttning, till exempel 0-3, f\u00f6r att s\u00e4kerst\u00e4lla konsekventa svarstider. Jag delar upp PHP-FPM: heta arbetare p\u00e5 4-7, bakgrundsjobb p\u00e5 8-11. Jag avlastar Node.js med arbetartr\u00e5dar och binder CPU-tunga uppgifter till mina egna arbetartr\u00e5dar. <strong>k\u00e4rnor<\/strong>. Jag h\u00e5ller Apache i event MPM med sn\u00e4va gr\u00e4nser i korttidsk\u00f6er. S\u00e5dana layouter h\u00e5ller pipelines rena och minskar jitter m\u00e4rkbart.<\/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\/04\/server_cpu_affinity_3621.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>K\u00e4rn- och schemal\u00e4ggningsparametrar i samband med Affinity<\/h2>\n<p>Affinity har en starkare effekt om k\u00e4rnan inte permanent motverkar den. F\u00f6r mycket cache-k\u00e4nsliga tj\u00e4nster \u00f6kar jag <strong>sched_migration_cost_ns<\/strong>, s\u00e5 att CFS mindre ofta anser att migreringar \u00e4r \u201ebilliga\u201c. <strong>sched_min_granularitet_ns<\/strong> och <strong>sched_wakeup_granularity_ns<\/strong> p\u00e5verka tidsintervall och f\u00f6rk\u00f6psbeteende; h\u00e4r anv\u00e4nder jag A\/B-tester. F\u00f6r k\u00e4rnor med isolerad latens anv\u00e4nder jag specifikt <em>hush\u00e5llning<\/em>-CPU:er och placera RCU\/kerntr\u00e5dar p\u00e5 avst\u00e5nd fr\u00e5n de heta k\u00e4rnorna (nohz_full\/rcu_nocbs p\u00e5 utvalda v\u00e4rddatorer). Dessa \u00e5tg\u00e4rder \u00e4r <strong>beroende av sammanhanget<\/strong>Jag \u00e4ndrar dem bara per arbetsbelastningsklass och rullar tillbaka dem med noggrann \u00f6vervakning om variansen eller genomstr\u00f6mningen f\u00f6rs\u00e4mras.<\/p>\n\n<h2>Databaser och affinitetsmasker<\/h2>\n\n<p>I databaser \u00e4r en bra <strong>Tilldelning<\/strong> Online-transaktioner, underh\u00e5llsjobb och I\/O-hantering. SQL Server har st\u00f6d f\u00f6r affinitetsmasker, som jag anv\u00e4nder f\u00f6r att definiera CPU-upps\u00e4ttningar f\u00f6r motortr\u00e5dar och separat f\u00f6r I\/O. Jag undviker \u00f6verlappningar mellan affinitetsmasken och I\/O-masken, eftersom heta tr\u00e5dar annars konkurrerar med block-I\/O. F\u00f6r v\u00e4rdar med mer \u00e4n 32 k\u00e4rnor anv\u00e4nder jag de ut\u00f6kade 64-bitars maskerna. Detta h\u00e5ller loggspolare, kontrollpekare och query workers rena fr\u00e5n varandra <strong>isolerad<\/strong>.<\/p>\n\n<h2>Lagringss\u00f6kv\u00e4gar och NVMe-k\u00f6er<\/h2>\n<p>Med <strong>blk-mq<\/strong> Jag mappar NVMe- och lagringsk\u00f6er till k\u00e4rnor i samma NUMA-dom\u00e4n som DB-arbetarna. Log flush-tr\u00e5dar och tillh\u00f6rande IRQ:er f\u00f6r NVMe-k\u00f6er hamnar p\u00e5 n\u00e4rliggande k\u00e4rnor s\u00e5 att skrivbekr\u00e4ftelser inte k\u00f6rs \u00f6ver sockeln. Jag ser till att apptr\u00e5dar och IRQ:er f\u00f6r lagring som anv\u00e4nds flitigt inte delar samma k\u00e4rna, annars skapas block som ligger i linje med varandra. Jag anv\u00e4nder schemal\u00e4ggare f\u00f6r flera k\u00f6er p\u00e5 ett s\u00e5dant s\u00e4tt att antalet k\u00f6er matchar de k\u00e4rnor som faktiskt tilldelas - f\u00f6r m\u00e5nga k\u00f6er \u00f6kar bara overhead, f\u00f6r f\u00e5 skapar l\u00e5sretention.<\/p>\n\n<h2>Virtualisering, vCPU-pinning och NUMA<\/h2>\n\n<p>I KVM eller Hyper-V kopplar jag <strong>vCPU:er<\/strong> till fysiska k\u00e4rnor f\u00f6r att undvika stj\u00e4ltid. Jag separerar vhost-net\/virtio-k\u00f6er fr\u00e5n g\u00e4stens heta k\u00e4rnor f\u00f6r att f\u00f6rhindra att IO stryper apptr\u00e5darna. NUMA kr\u00e4ver ocks\u00e5 att man h\u00e5ller ett \u00f6ga p\u00e5 minneslokalitet, annars f\u00f6rdubblas \u00e5tkomsttiderna. F\u00f6r mer djupg\u00e5ende bakgrund om topologier och tuning, se den h\u00e4r artikeln: <a href=\"https:\/\/webhosting.de\/sv\/blogg-numa-arkitektur-serverprestanda-hosting-hardvara-optimering-infrastruktur\/\">NUMA-arkitektur inom hosting<\/a>. I t\u00e4ta uppst\u00e4llningar ger denna koppling m\u00e4rkbart j\u00e4mnare <strong>F\u00f6rdr\u00f6jningar<\/strong>.<\/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\/04\/cpu-affinity-optimization-7253.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Orkestrering av containrar: cpuset-policyer och QoS<\/h2>\n<p>I beh\u00e5llare placerar jag <strong>cpuset.cpus<\/strong> i \u00f6verensst\u00e4mmelse med CPU-kvoter. Kubernetes anv\u00e4nder CPU-hanteraren (\u201estatisk\u201c policy) f\u00f6r att tillhandah\u00e5lla exklusiva k\u00e4rnor f\u00f6r pods i QoS-klassen Guaranteed om Requests=Limits har angetts. Detta inneb\u00e4r att kritiska pods landar p\u00e5 fasta k\u00e4rnor, medan arbetsbelastningar med b\u00e4sta anstr\u00e4ngning f\u00f6rblir flexibla. Jag planerar pods topologimedvetet: Jag delar upp latensv\u00e4gar (ingress, app, cache) per NUMA-nod s\u00e5 att minnes- och IRQ-belastningen f\u00f6rblir lokal. Viktigt \u00e4r att <strong>Planerbarhet<\/strong> \u00e4ven f\u00f6r utrullningar: repliker f\u00e5r identiska k\u00e4rnupps\u00e4ttningar, annars glider uppm\u00e4tta v\u00e4rden is\u00e4r mellan olika instanser.<\/p>\n\n<h2>C-grupper, r\u00e4ttvisa och isolering<\/h2>\n\n<p>Enbart sl\u00e4ktskap garanterar inte <strong>R\u00e4ttvisa<\/strong>, vilket \u00e4r anledningen till att jag kombinerar dem med cgroups. cpu.shares prioriterar grupper relativt, cpu.max s\u00e4tter h\u00e5rda \u00f6vre gr\u00e4nser per tidsslice. Det \u00e4r s\u00e5 h\u00e4r jag h\u00e5ller bullriga grannar i schack, \u00e4ven om de k\u00f6r CPU-bound. I hosting med flera hyresg\u00e4ster skyddar jag kritiska tj\u00e4nster med h\u00f6gre andelar. Sammantaget skapar detta en tydlig <strong>Separation<\/strong> utan att ta f\u00f6r stora risker.<\/p>\n\n<h2>Energi- och frekvenshantering f\u00f6r f\u00f6ruts\u00e4gbara latenstider<\/h2>\n<p>Effekttillst\u00e5nd har ett m\u00e4rkbart inflytande p\u00e5 jitter. F\u00f6r strikta p99-m\u00e5l h\u00e5ller jag h\u00f6ga basfrekvenser stabila p\u00e5 heta k\u00e4rnor (Governor-prestanda eller h\u00f6g <em>energi_prestanda_preferens<\/em>) och begr\u00e4nsa djupa C-l\u00e4gen s\u00e5 att uppvakningstiderna inte dominerar. Jag anv\u00e4nder Turbo med m\u00e5tta: enskilda tr\u00e5dar gynnas, men termiska gr\u00e4nser kan orsaka parallellk\u00f6rning <strong>k\u00e4rnor<\/strong> gasen i botten. F\u00f6r j\u00e4mn genomstr\u00f6mning s\u00e4tter jag \u00f6vre\/nedre frekvensgr\u00e4nser per sockel och flyttar energisparande logik till kalla k\u00e4rnor. Detta minskar variansen utan att begr\u00e4nsa den totala genomstr\u00f6mningen i alltf\u00f6r h\u00f6g grad.<\/p>\n\n<h2>systemd, taskset och Windows: Implementering<\/h2>\n\n<p>F\u00f6r permanenta tj\u00e4nster anv\u00e4nder jag <strong>systemd<\/strong> med CPUAffinity=0-3 i enheten, kombinerat med CPUSchedulingPolicy=fifo f\u00f6r RT-arbetsbelastningar. Jag startar eng\u00e5ngsjobb med taskset -c 4-7 s\u00e5 att s\u00e4kerhetskopior inte sparkar in i heta cacheminnen. Jag kapslar in containrar via cpuset.cpus och cgroupv2 s\u00e5 att pods f\u00e5r sina fasta k\u00e4rnor. Under Windows st\u00e4ller jag in ProcessorAffinity till en bitmask hex via PowerShell. Dessa alternativ ger mig exakt <strong>Kontroll<\/strong> upp till k\u00e4rngr\u00e4nsen.<\/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\/04\/cpu_affinity_optimization_9876.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>\u00d6vervakning och testning: m\u00e4ta ist\u00e4llet f\u00f6r att gissa<\/h2>\n\n<p>Jag kontrollerar framg\u00e5ngen med <strong>perf<\/strong> (kontextbyten, migreringar, cache-missar) och sp\u00e5ra p95\/p99 per tidsserie. Omspelningar av arbetsbelastningen med wrk, hey eller sysbench visar om avvikelserna blir mindre. Jag \u00f6vervakar \u00e4ven steal-tid i VM:er och IRQ-belastning p\u00e5 v\u00e4rdk\u00e4rnor. En kort A\/B-j\u00e4mf\u00f6relse under toppbelastning avsl\u00f6jar felaktiga antaganden. F\u00f6rst n\u00e4r siffrorna matchar fryser jag reglerna som permanenta <strong>Policys<\/strong> i.<\/p>\n\n<h2>Risker, begr\u00e4nsningar och anti-m\u00f6nster<\/h2>\n\n<p>Styva pinningk\u00e4rnor f\u00f6r burkar <strong>torka ut<\/strong> n\u00e4r trafiken fluktuerar. Jag st\u00e4ller d\u00e4rf\u00f6r bara in kritiska tr\u00e5dar och l\u00e4mnar icke-kritiska tr\u00e5dar p\u00e5 schemal\u00e4ggaren. Overcommit \u00e4ter ocks\u00e5 upp resurser om tv\u00e5 bullriga VM:er vill ha samma k\u00e4rna. Om du fixar f\u00f6r mycket kommer du senare att k\u00e4mpa med hotspots och d\u00e5ligt utnyttjande. En bra verklighetskoll: den h\u00e4r artikeln om CPU-pinning \u00e4r <a href=\"https:\/\/webhosting.de\/sv\/cpu-pinning-hosting-saellan-meningsfullt-optimeringstuning\/\">S\u00e4llan anv\u00e4ndbar<\/a> kr\u00e4ver en v\u00e4l avv\u00e4gd strategi med tydliga m\u00e5l och avg\u00f6rande <strong>M\u00e4tetal<\/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\/04\/server_cpu_affinity_1984.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>S\u00e4rskilda fall: H\u00f6gfrekvent och i realtid<\/h2>\n\n<p>F\u00f6r submillisekunder l\u00e4nkar jag <strong>Affinitet<\/strong> med RT-policy, IRQ-tuning och NUMA-konsistens. Jag binder n\u00e4tverks-IRQ:er till deras egna k\u00e4rnor och h\u00e5ller userspace-tr\u00e5dar borta fr\u00e5n dem. P\u00e5 AMD-EPYC med chiplet-topologi s\u00e4kerst\u00e4ller jag korta v\u00e4gar mellan k\u00e4rna, minneskontroller och NIC. Stora sidor (HugeTLB) hj\u00e4lper till att minska TLB-missfrekvensen. Dessa steg minskar variansen avsev\u00e4rt och skapar <strong>Planerbarhet<\/strong> med HF-trafik.<\/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\/04\/serverraum-cpu-affinitat-8291.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Finjustering f\u00f6r popul\u00e4ra stackar<\/h2>\n\n<p>Med <strong>PHP-FPM<\/strong> Jag st\u00e4ller in pm dynamic med matchande pm.max_children och process_idle_timeout s\u00e5 att inaktiva arbetare utel\u00e4mnas. NGINX k\u00f6rs med worker_processes auto, men jag binder arbetare specifikt till de heta k\u00e4rnorna. Jag h\u00e5ller Apache i event-MPM kort s\u00e5 att k\u00f6rk\u00f6n inte v\u00e4xer. F\u00f6r Node.js kapslar jag in CPU-belastningen i arbetartr\u00e5dar med sin egen affinitet. Detta h\u00e5ller h\u00e4ndelseslingan fri och responsiv <strong>snabb<\/strong> till I\/O.<\/p>\n\n<h2>IRQ-styrning och I\/O-separation<\/h2>\n\n<p>I pin <strong>IRQ<\/strong>-hanterare via smp_affinity p\u00e5 dedikerade k\u00e4rnor s\u00e5 att paketfl\u00f6den inte f\u00f6rskjuter apptr\u00e5dar. Jag delar multik\u00f6-NIC:er \u00f6ver flera k\u00e4rnor f\u00f6r att matcha RSS-distributionen. Jag separerar lagringsavbrott fr\u00e5n n\u00e4tverks-IRQ:er f\u00f6r att undvika blockering av huvudlinjen. Asynkron I\/O och tr\u00e5dpooler i NGINX f\u00f6rhindrar blockering av syscalls p\u00e5 heta k\u00e4rnor. Denna separation h\u00e5ller v\u00e4garna korta och skyddar <strong>Toppbelastning<\/strong>.<\/p>\n\n<h2>Guide f\u00f6r successiv introduktion<\/h2>\n\n<p>Jag b\u00f6rjar med <strong>Profilering<\/strong> under Real-Traffic och st\u00e4ller sedan in endast kritiska tj\u00e4nster. Sedan kontrollerar jag p95\/p99 och migreringar innan jag binder ytterligare tr\u00e5dar. Cgroups ger mig korrigeringsalternativ utan omstart. Jag dokumenterar f\u00f6r\u00e4ndringar per host och sammanfattar regler i systemd-enheter. F\u00f6rst efter stabila uppm\u00e4tta v\u00e4rden rullar jag ut <strong>Konfiguration<\/strong> i stort sett.<\/p>\n\n<h2>Drift, \u00e4ndringshantering och rollback<\/h2>\n<p>Jag behandlar affinitetsregler som kod. Jag versionerar systemd-enheter och cgroup-policyer, rullar dem <strong>iscensatt<\/strong> (f\u00f6rst kanarief\u00e5glar, sedan bredare) och ha en tydlig v\u00e4g tillbaka redo. En snabb rollback \u00e4r obligatorisk om p99 SLOs g\u00e5r s\u00f6nder eller genomstr\u00f6mningen sjunker. Jag fryser \u00e4ndringar f\u00f6re topptider och \u00f6vervakar migreringshastigheter, LLC-missfrekvenser och anv\u00e4ndning per k\u00e4rna efter varje steg. Detta minskar de operativa riskerna och f\u00f6rhindrar att \u201ebra\u201c individuella optimeringar genererar o\u00f6nskade bieffekter i n\u00e4tverket.<\/p>\n\n<h2>S\u00e4kerhets- och isoleringseffekter<\/h2>\n<p>Affinity hj\u00e4lper ocks\u00e5 till med <strong>Isolering<\/strong>I milj\u00f6er med flera hyresg\u00e4ster delar jag inte SMT-syskon mellan klienter f\u00f6r att minimera \u00f6verh\u00f6rning och sidokanaler. K\u00e4nsliga tj\u00e4nster k\u00f6rs p\u00e5 exklusiva k\u00e4rnor, \u00e5tskilda fr\u00e5n bullriga IRQ-k\u00e4llor. K\u00e4rnans \u00e5tg\u00e4rder mot spekulativa exekveringsluckor \u00f6kar kostnaderna f\u00f6r kontextbyte - ren pinning minimerar effekten eftersom f\u00e4rre tr\u00e5dar korsar kakelgr\u00e4nserna. Viktigt: Balansera s\u00e4kerhetsm\u00e5l och prestandam\u00e5l; ibland \u00e4r \u201eSMT off\u201c motiverat f\u00f6r ett f\u00e5tal arbetsbelastningar som \u00e4r s\u00e4rskilt skyddsv\u00e4rda, medan resten forts\u00e4tter att dra nytta av SMT-genomstr\u00f6mningen.<\/p>\n\n<h2>KPI:er, SLO:er och l\u00f6nsamhet<\/h2>\n<p>Jag definierar <strong>i f\u00f6rv\u00e4g<\/strong> tydliga KPI:er: p95\/p99-latens, genomstr\u00f6mning, cs\/req (kontextbyten per beg\u00e4ran), migreringar per sekund och LLC-missfrekvens. M\u00e5lkorridorer hj\u00e4lper till att utv\u00e4rdera avv\u00e4gningar, t.ex. \u201ep99 -25% vid \u22645% mindre max genomstr\u00f6mning\u201c. P\u00e5 v\u00e4rdniv\u00e5 \u00f6vervakar jag obalans mellan k\u00e4rnor och tomg\u00e5ngstid s\u00e5 att pinning inte leder till dyr tomg\u00e5ngstid. Affinity \u00e4r ekonomiskt meningsfullt om den f\u00f6ruts\u00e4gbarhet som uppn\u00e5s minskar SLO-straff eller \u00f6kar densiteten i kluster eftersom reservbuffertarna kan vara mindre. Utan detta numeriska sp\u00e5r f\u00f6rblir pinning en magk\u00e4nsla - med det blir det en motst\u00e5ndskraftig <strong>Optimering<\/strong>.<\/p>\n\n<h2>Granskning och kategorisering<\/h2>\n\n<p>Affinity levererar p\u00e5 <strong>Servrar<\/strong> med m\u00e5nga k\u00e4rnor erbjuder ofta en fantastisk m\u00e4ngd f\u00f6ruts\u00e4gbarhet f\u00f6r lite ingripande. I virtuella datorer med \u00f6verengagemang eller kraftigt fluktuerande trafik stryper jag distributionen. NUMA-medvetenhet, IRQ-inst\u00e4llning och r\u00e4ttvisa kvoter avg\u00f6r framg\u00e5ngen. Utan \u00f6vervakning blir pinning snabbt en b\u00f6rda, men med siffror f\u00f6rblir det ett verktyg. Det selektiva tillv\u00e4gag\u00e5ngss\u00e4ttet vinner <strong>F\u00f6ruts\u00e4gbarhet<\/strong> och utnyttjar h\u00e5rdvaran p\u00e5 ett effektivt s\u00e4tt.<\/p>\n\n<h2>Sammanfattning<\/h2>\n\n<p>Jag anv\u00e4nder <strong>Server CPU-affinitet<\/strong>, f\u00f6r att h\u00e5lla heta tr\u00e5dar n\u00e4ra sina data, minska migreringar och j\u00e4mna ut latensspikar. I webbservrar, PHP-FPM, databaser och virtuella datorer kombinerar jag Affinity med Cgroups, IRQ-tuning och NUMA-disciplin. Systemd-alternativ, taskset och container-cpusets g\u00f6r implementeringen l\u00e4mplig f\u00f6r daglig anv\u00e4ndning. Jag s\u00e4kerst\u00e4ller effekten med m\u00e4tningar med hj\u00e4lp av perf och tidsserier och vrider gradvis p\u00e5 kontrollerna. Om du anv\u00e4nder pinning p\u00e5 ett m\u00e5linriktat s\u00e4tt f\u00e5r du konstanta svarstider, rena cacheminnen och en m\u00e4tbart h\u00f6gre prestanda. <strong>Genomstr\u00f6mning<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Server CPU Affinity optimerar hosting-prestanda genom processpinning och tuning. Mindre latens, h\u00f6gre genomstr\u00f6mning - praktiska tips.<\/p>","protected":false},"author":1,"featured_media":18682,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-18689","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":"535","_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":"Server CPU 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":"18682","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/18689","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=18689"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/18689\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/18682"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=18689"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=18689"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=18689"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}