{"id":20578,"date":"2026-08-12T13:59:33","date_gmt":"2026-08-12T11:59:33","guid":{"rendered":"https:\/\/webhosting.de\/cfs-scheduler-fair-scheduling-hosting\/"},"modified":"2026-08-12T13:59:33","modified_gmt":"2026-08-12T11:59:33","slug":"cfs-schemalaeggare-raettvis-schemalaeggning-webbhotell","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/cfs-scheduler-fair-scheduling-hosting\/","title":{"rendered":"K\u00e4rnschemal\u00e4ggaren CFS: Att f\u00f6rst\u00e5 r\u00e4ttvis schemal\u00e4ggning p\u00e5 webbhotellsservrar"},"content":{"rendered":"<p>Jag f\u00f6rklarar hur <strong>CFS<\/strong> Schemal\u00e4ggaren p\u00e5 webbhotellsservrarna f\u00f6rdelar CPU-tiden r\u00e4ttvist och ser till att svarstiderna f\u00f6rblir f\u00f6ruts\u00e4gbara. Jag visar konkret hur <strong>vruntime<\/strong>, hur prioriteringar och systemgr\u00e4nser samverkar och vilka justeringsm\u00f6jligheter som \u00e4r effektiva i produktiva milj\u00f6er.<\/p>\n\n<h2>Centrala punkter<\/h2>\n\n<p>F\u00f6r att ge en tydlig \u00f6verblick sammanfattar jag de viktigaste aspekterna innan jag g\u00e5r in p\u00e5 detaljerna. Den <strong>Helt och h\u00e5llet<\/strong> Fair Scheduler f\u00f6rdelar ber\u00e4kningstiden r\u00e4ttvist och prioriterar uppgifter efter behov. P\u00e5 webbhotellsservrar p\u00e5verkar den latens, genomstr\u00f6mning och upplevelsen av stabilitet. Jag utv\u00e4rderar praktiska inst\u00e4llningsparametrar, typiska arbetsbelastningar och rimliga gr\u00e4nsv\u00e4rden. Dessutom visar jag hur jag kombinerar Cgroups, CPU-kvoter och affinitet. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rst\u00e5r jag orsakerna till v\u00e4ntetider och kan reagera m\u00e5linriktat p\u00e5 <strong>F\u00f6r\u00e4ndrad kontext<\/strong>.<\/p>\n<p>F\u00f6ljande punkter hj\u00e4lper dig att snabbt f\u00e5 en \u00f6verblick:<\/p>\n<ul>\n  <li><strong>R\u00e4ttvisa<\/strong> Innan toppprestanda: r\u00e4ttvis CPU-f\u00f6rdelning ist\u00e4llet f\u00f6r maximal enskild prestanda.<\/li>\n  <li><strong>vruntime<\/strong> styr ordningen: uppgifter som prioriteras l\u00e4gre behandlas f\u00f6rst.<\/li>\n  <li><strong>C-grupper<\/strong> Begr\u00e4nsade budgetar: Tj\u00e4nsterna f\u00f6rdelar resurserna p\u00e5 ett kontrollerat s\u00e4tt.<\/li>\n  <li><strong>F\u00f6rdr\u00f6jning<\/strong> och detaljniv\u00e5: finjustering av respons och effektivitet.<\/li>\n  <li><strong>Prioritet<\/strong> och bra: Viktningen styr i vilken ordning kommandona ska utf\u00f6ras.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverraum-fair-scheduling-8247.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Hur CFS f\u00f6rdelar r\u00e4ttvist: vruntime, viktning och r\u00f6d-svart-tr\u00e4d<\/h2>\n\n<p>Bakom r\u00e4ttvisan ligger <strong>vruntime<\/strong>, det vill s\u00e4ga en virtuell k\u00f6rtid som registrerar f\u00f6rbrukningen per uppgift p\u00e5 ett viktat s\u00e4tt. Varje uppgift samlar p\u00e5 sig vruntime n\u00e4r den k\u00f6rs, och den som har samlat p\u00e5 sig minst f\u00e5r turas f\u00f6rst. K\u00e4rnan placerar k\u00f6rbara uppgifter i ett r\u00f6d-svart-tr\u00e4d och hittar p\u00e5 s\u00e5 s\u00e4tt snabbt den uppgift som har minst \u201eefterl\u00e4ge\u201c. P\u00e5 s\u00e5 s\u00e4tt sparar jag fasta tidsintervall och minskar administrationsarbetet i den normala v\u00e4gen. Det viktiga \u00e4r fortfarande <strong>viktning<\/strong>, som jag p\u00e5verkar via nice-v\u00e4rden och d\u00e4rmed finjusterar den r\u00e4ttvisa ordningen.<\/p>\n\n<p>P\u00e5 flerk\u00e4rniga system f\u00f6rdelar CFS uppgifter per CPU-k\u00f6rk\u00f6 och balanserar mellan k\u00e4rnorna. Jag observerar samtidigt hur affinitet och NUMA-topologi p\u00e5verkar k\u00f6rtiderna. Om tr\u00e5dar stannar kvar p\u00e5 en k\u00e4rna minskar de antalet cache-missar och f\u00f6rlorar mindre tid p\u00e5 migrering. Om jag byter k\u00e4rna f\u00f6r ofta \u00f6kar kostnaderna f\u00f6r kontextv\u00e4xlingar och cache. En v\u00e4l genomt\u00e4nkt CPU-tilldelning ger h\u00e4r m\u00e4rkbara <strong>Accenter<\/strong>.<\/p>\n\n<h2>R\u00e4ttvisa kontra prestanda p\u00e5 webbhotellsservrar<\/h2>\n\n<p>P\u00e5 \u00f6verbelastade v\u00e4rddatorer konkurrerar webbservrar, databaser och arbetsprocesser om samma k\u00e4rnor, vilket s\u00e4tter r\u00e4ttvisan i fokus. CFS ser till att f\u00f6rdelningen blir r\u00e4ttvis, men kan vid m\u00e5nga aktiva uppgifter kr\u00e4va ytterligare <strong>F\u00f6r\u00e4ndrad kontext<\/strong> generera. Om antalet processer som \u00e4r redo att k\u00f6ras \u00f6kar kraftigt, stiger administrationsb\u00f6rdan m\u00e4rkbart. Jag ser d\u00e4rf\u00f6r till att parallelliteten \u00e4r realistisk och h\u00e5ller antalet tr\u00e5dar inom ramen f\u00f6r I\/O- eller CPU-profilen. Den som vill s\u00e4tta in alternativ och till\u00e4gg i sitt sammanhang hittar bakgrundsinformation under <a href=\"https:\/\/webhosting.de\/sv\/linux-schemalaeggare-cfs-alternativ-hosting-kernelperf-boost\/\">Alternativ till CFS<\/a>, f\u00f6r att s\u00e4tta besluten i sitt sammanhang.<\/p>\n\n<p>Att f\u00f6rdela r\u00e4ttvist inneb\u00e4r inte att f\u00f6rdela blint och j\u00e4mnt. Kritiska tj\u00e4nster ska reagera mer tillf\u00f6rlitligt \u00e4n bakgrundsjobb under toppbelastningar. Det \u00e4r just d\u00e4rf\u00f6r jag anv\u00e4nder prioriteringar, kvoter och servicegrupper. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir reaktionen fr\u00e5n <strong>API<\/strong> smidigt, medan batch-arbetsbelastningarna forts\u00e4tter att k\u00f6ras \u2013 fast med reducerad kapacitet. Denna balans g\u00f6r att produktiva v\u00e4rddatorer m\u00e4rks tydligt <strong>mer konstant<\/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\/08\/meeting_scheduler_server_8972.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cgroups, CPU-kvoter och affinitet i samverkan<\/h2>\n\n<p>Jag grupperar tj\u00e4nster per kund, container eller roll i <strong>C-grupper<\/strong>, s\u00e5 att varje grupp f\u00e5r en tydlig budget. Med CPU-kvoter och CPU-andelar s\u00e4tter jag fasta gr\u00e4nser eller relativa viktningar. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rhindrar jag att en h\u00f6gljudd granne \u00f6verbelastar maskinen. Dessutom kopplar jag vid behov tr\u00e5dar till specifika k\u00e4rnor via affinitet f\u00f6r att utnyttja cacheminnena b\u00e4ttre. En bra introduktion till <a href=\"https:\/\/webhosting.de\/sv\/policyer-foer-serverschemalaeggning-raettvisa-prestanda-hostingoptimering\/\">Schemal\u00e4ggningsriktlinjer<\/a> hj\u00e4lper till att strukturera strategier p\u00e5 ett tydligt s\u00e4tt.<\/p>\n\n<p>N\u00e4r det g\u00e4ller webbstackar delar jag upp frontend, PHP-arbetare och databaser i grupper med l\u00e4mpliga andelar. Cachesystem som Redis eller Memcached tilldelas tillr\u00e4ckligt med CPU-resurser f\u00f6r att smidigt hantera toppbelastningar. S\u00e4kerhetskopiering och komprimering k\u00f6rs i bakgrunden med l\u00e4gre andelar. P\u00e5 noder med heterogen belastning anv\u00e4nder jag kvoter per kund, s\u00e5 att varje kund f\u00e5r en f\u00f6ruts\u00e4gbar ber\u00e4kningstid. Denna tydlighet underl\u00e4ttar <strong>Kapacitetsplanering<\/strong> och minskar risken f\u00f6r \u00f6verraskningar.<\/p>\n\n<h2>Viktiga k\u00e4rnparametrar: latens och granularitet<\/h2>\n\n<p>N\u00e4r jag finjusterar anv\u00e4nder jag framf\u00f6r allt parametrar som r\u00f6r <strong>F\u00f6rdr\u00f6jning<\/strong> och granularitet. De styr hur ofta CFS byter och hur stora de effektiva tidsintervallen blir. L\u00e4gre latensv\u00e4rden f\u00f6rb\u00e4ttrar responsen, men \u00f6kar samtidigt overheaden. H\u00f6gre v\u00e4rden sparar administrationstid, men kan f\u00f6rl\u00e4nga enskilda svar. Jag testar mig fram med olika profiler, m\u00e4ter och j\u00e4mf\u00f6r resultatet mot belastningstoppar innan jag planerar ytterligare \u00e5tg\u00e4rder.<\/p>\n\n<p>Tabellen nedan visar viktiga inst\u00e4llningar med deras effekter och typiska anvisningar f\u00f6r hostingmilj\u00f6er. V\u00e4rdena \u00e4r riktlinjer, inte fasta regler. Jag kontrollerar alltid \u00e4ndringar genom belastningstester och \u00f6vervakning. Varje plattform reagerar lite olika, s\u00e4rskilt n\u00e4r det finns m\u00e5nga containrar och virtuella maskiner. Just d\u00e4rf\u00f6r dokumenterar jag justeringar noggrant och inf\u00f6r dem stegvis f\u00f6r att <strong>Risker<\/strong> till l\u00e4gre.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Parametrar<\/th>\n      <th>Effekt<\/th>\n      <th>Information om webbhotell<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>kernel.sched_latency_ns<\/td>\n      <td>Fastst\u00e4ller m\u00e5lk\u00f6rtiden f\u00f6r en fullst\u00e4ndig cykel f\u00f6r alla uppgifter<\/td>\n      <td>F\u00f6rkorta sm\u00e5 v\u00e4rden <strong>reaktion<\/strong>, \u00f6kar kostnaderna f\u00f6r schemal\u00e4ggning<\/td>\n    <\/tr>\n    <tr>\n      <td>kernel.sched_min_granularity_ns<\/td>\n      <td>Minsta k\u00f6rtid per uppgift inom latensen<\/td>\n      <td>N\u00e5got st\u00f6rre vid CPU-kr\u00e4vande uppgifter, mindre vid webbmix<\/td>\n    <\/tr>\n    <tr>\n      <td>kernel.sched_wakeup_granularity_ns<\/td>\n      <td>Tr\u00f6skelv\u00e4rde fr\u00e5n vilket v\u00e4ckande uppgifter ges f\u00f6retr\u00e4de<\/td>\n      <td>H\u00f6gre s\u00e4nker preemption-frekvensen, bra mot thrash<\/td>\n    <\/tr>\n    <tr>\n      <td>kernel.sched_migration_cost_ns<\/td>\n      <td>Kostnadsfaktor f\u00f6r k\u00e4rnmigrering mellan k\u00e4rnor<\/td>\n      <td>\u00d6kar d\u00e4mpar vandringen, fr\u00e4mjar cache-<strong>Tr\u00e4ffar<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>kernel.sched_cfs_bandwidth_slice_us<\/td>\n      <td>Tidsintervall f\u00f6r CFS-bandbreddskontroll via kvot<\/td>\n      <td>Anpassa efter arbetsbelastning och kvotfrekvens<\/td>\n    <\/tr>\n    <tr>\n      <td>kernel.sched_autogroup_enabled<\/td>\n      <td>Grupperar interaktiva uppgifter automatiskt<\/td>\n      <td>Testa specifikt p\u00e5 servrar; effekten beror p\u00e5 belastningen<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/kernel-scheduler-cfs-hosting-7481.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Att klassificera arbetsbelastningstyper p\u00e5 r\u00e4tt s\u00e4tt<\/h2>\n\n<p>Jag skiljer mellan CPU-intensiva, minnesbundna och I\/O-dominerade <strong>Arbetsbelastning<\/strong>. CFS utm\u00e4rker sig vid blandade serveruppgifter och klassisk CPU-belastning. Vid minneskr\u00e4vande m\u00f6nster \u00e4r det ofta minnessystemets bandbredd eller latens som begr\u00e4nsar prestandan, inte schemal\u00e4ggaren. D\u00e5 \u00e4r det b\u00e4ttre att uppr\u00e4tth\u00e5lla minneslokaliteten och undvika swapping. I mycket starkt parallelliserade scenarier kontrollerar jag om tr\u00e5darna utnyttjar k\u00e4rnorna p\u00e5 ett meningsfullt s\u00e4tt eller om de blockerar varandra. Om jag minskar on\u00f6dig parallellitet minskar overheaden och maskinen k\u00e4nns m\u00e4rkbart snabbare <strong>flytande<\/strong>.<\/p>\n\n<p>F\u00f6r webbfrontend planerar jag antalet tr\u00e5dar till strax \u00f6ver antalet k\u00e4rnor, eftersom m\u00e5nga f\u00f6rfr\u00e5gningar v\u00e4ntar p\u00e5 I\/O. Databaser drar nytta av v\u00e4l genomt\u00e4nkt parallellitet och tydlig affinitet. Batchjobb samlar jag i tidsf\u00f6nster d\u00e5 anv\u00e4ndartrafiken \u00e4r l\u00e5g. CPU-intensiv komprimering eller transkodning placerar jag i egna grupper s\u00e5 att interaktiviteten inte p\u00e5verkas negativt. Dessa m\u00f6nster minimerar \u00f6verraskningar och ger mig <strong>Kontroll<\/strong> om effekten av varje \u00e4ndring.<\/p>\n\n<h2>Att f\u00f6rst\u00e5 prioriteringar, viktning och viktning<\/h2>\n\n<p>Jag anv\u00e4nder nice-v\u00e4rden f\u00f6r att <strong>viktning<\/strong> att st\u00e4lla in en process och d\u00e4rmed dess andel av CPU-tiden. L\u00e4gre \u201dnice\u201d-v\u00e4rden inneb\u00e4r h\u00f6gre prioritet, medan h\u00f6gre \u201dnice\u201d-v\u00e4rden begr\u00e4nsar bakgrundsuppgifterna. P\u00e5 s\u00e5 s\u00e4tt ser jag till att centrala tj\u00e4nster reagerar p\u00e5litligt, medan underh\u00e5llsuppgifter f\u00e5r st\u00e5 tillbaka. Dessutom h\u00e5ller jag koll p\u00e5 hur m\u00e5nga uppgifter per grupp som \u00e4r aktiva samtidigt, eftersom det ytterligare p\u00e5verkar f\u00f6rdelningen. En \u00f6versikt \u00f6ver klassificeringen av <a href=\"https:\/\/webhosting.de\/sv\/server-cpu-schemalaeggare-klass-schemalaeggning\/\">Schemal\u00e4ggarklasser<\/a> Jag anv\u00e4nder detta f\u00f6r att tydligt skilja CFS fr\u00e5n realtidsklasser.<\/p>\n\n<p>Det \u00e4r viktigt att vara konsekvent: Jag dokumenterar inst\u00e4llningarna och ser till att de f\u00f6rblir desamma mellan olika distributioner. Olika viktningar per steg kan annars leda till effekter som \u00e4r sv\u00e5ra att f\u00f6rklara. Om jag ser till att vara konsekvent kan jag snabbare hitta orsakerna till avvikelser. Sm\u00e5, \u00f6versk\u00e5dliga steg underl\u00e4ttar \u00e5terg\u00e5ngar vid behov. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir effekten av <strong>Prioriteringar<\/strong> transparent.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/fair_scheduling_server_2390.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Virtualisering och containrar: Tv\u00e5 niv\u00e5er av r\u00e4ttvis f\u00f6rdelning<\/h2>\n\n<p>P\u00e5 hypervisorer konkurrerar virtuella maskiner om v\u00e4rd-CPU:er, medan CFS samordnar processer i g\u00e4stinstansen. Jag fastst\u00e4ller vCPU:er p\u00e5 ett realistiskt s\u00e4tt ist\u00e4llet f\u00f6r att ge tomma l\u00f6ften som inte h\u00e5ller n\u00e4r det blir pressat <strong>stj\u00e4la<\/strong>. I containrar anv\u00e4nder jag CPU-andelar och kvoter f\u00f6r att f\u00f6rhindra att toppar i enskilda tj\u00e4nster p\u00e5verkar hela noden. Kombinationen av v\u00e4rdtilldelning och g\u00e4stfairness g\u00f6r att latensen kan planeras. Endast med tydliga budgetar kan anv\u00e4ndarupplevelsen f\u00f6rbli behaglig och <strong>P\u00e5litlig<\/strong>.<\/p>\n\n<p>P\u00e5 NUMA-system tar jag dessutom h\u00e4nsyn till minneslokalitet. N\u00e4r containrar flyttar sig okontrollerat mellan socklar \u00f6kar minneslatensen och genomstr\u00f6mningen minskar. D\u00e4rf\u00f6r kopplar jag k\u00e4nsliga tj\u00e4nster till specifika noder och ser till att minnesbindningen \u00e4r l\u00e4mplig. Detta samspel minskar biverkningarna och bidrar till j\u00e4mna svarstider. CFS f\u00f6rblir d\u00e4rvid den centrala <strong>Instans<\/strong> per CPU-k\u00f6rk\u00f6.<\/p>\n\n<h2>\u00d6vervakning och stegvis finjustering i praktiken<\/h2>\n\n<p>Jag b\u00f6rjar med standardkonfigurationen, m\u00e4ter och g\u00f6r \u00e4ndringar f\u00f6rst d\u00e4refter. Nyckeltal som l\u00e4ngden p\u00e5 k\u00f6rk\u00f6n, frekvensen f\u00f6r kontextbyten, CPU-utnyttjande och procentandelar per Cgroup visar var det finns utrymme f\u00f6r f\u00f6rb\u00e4ttring. H\u00f6g frekvens av kontextbyten i kombination med m\u00e5ttlig CPU-belastning tyder p\u00e5 f\u00f6r fin granularitet. L\u00e5nga k\u00f6rk\u00f6er vid h\u00f6ga latenser tyder p\u00e5 f\u00f6r m\u00e5nga aktiva tr\u00e5dar. I slut\u00e4ndan \u00e4r det avg\u00f6rande om anv\u00e4ndar\u00e5tg\u00e4rder ger snabbare resultat och om diagrammen visar den f\u00f6rv\u00e4ntade <strong>Tendens<\/strong> visa.<\/p>\n\n<p>Jag dokumenterar varje justering med tidpunkt, omfattning och m\u00e5l. Belastningstester f\u00f6re och efter \u00e4ndringen bekr\u00e4ftar att id\u00e9n fungerar. Om en strategi misslyckas \u00e5tertar jag \u00e4ndringen och provar en annan kombination. Jag f\u00f6rlitar mig p\u00e5 separata testmilj\u00f6er innan jag r\u00f6r produktiva system. Denna disciplin kostar lite och sparar mycket senare. <strong>Tid<\/strong>.<\/p>\n\n<h2>Prestandaprofil f\u00f6r webbhotell: Praktiska scenarier<\/h2>\n\n<p>F\u00f6r en typisk WordPress-stack f\u00f6rdelar jag resurserna tydligt mellan Nginx\/Apache, PHP-FPM och Redis, och h\u00e5ller antalet PHP-arbetare strax \u00f6ver antalet k\u00e4rnor. Databasen prioriteras framf\u00f6r batch-exporter, s\u00e5 att kassa och s\u00f6kfunktioner f\u00f6rblir smidiga. Medietranskodning flyttar jag till \u201elugnare\u201c tidsf\u00f6nster eller s\u00e4tter str\u00e4ngare kvoter. P\u00e5 API-noder stryper jag bakgrundsjobb mer f\u00f6r att d\u00e4mpa svansf\u00f6rdr\u00f6jningar. I alla fall kontrollerar jag om <strong>Svarstid<\/strong> stabilare och att genomstr\u00f6mningen f\u00f6rblir j\u00e4mn.<\/p>\n\n<p>I delade milj\u00f6er presenterar jag budgetar f\u00f6r kunderna i euro per m\u00e5nad och omvandlar dem till tydliga CPU-andelar. Transparens f\u00f6rhindrar besvikelser och underl\u00e4ttar uppf\u00f6rs\u00e4ljning n\u00e4r belastningstopparna \u00f6kar. M\u00e4tv\u00e4rden ligger till grund f\u00f6r dessa samtal, inte magk\u00e4nsla. Jag ser n\u00e4r en kund b\u00f6r \u00f6ka antalet vCPU:er eller gr\u00e4nserna. P\u00e5 s\u00e5 s\u00e4tt utnyttjas servrarna p\u00e5 ett r\u00e4ttvist s\u00e4tt och den totala prestandan blir <strong>konstant<\/strong>.<\/p>\n\n<h2>K\u00f6pbeslut och val av webbhotell<\/h2>\n\n<p>N\u00e4r jag granskar erbjudanden tittar jag p\u00e5 hur r\u00e4ttvist CPU-tiden f\u00f6rdelas under h\u00f6g belastning och om isoleringen fungerar konsekvent. Den som j\u00e4mf\u00f6r webbhotell, servrar eller WordPress-paket b\u00f6r l\u00e4gga m\u00e4rke till tydliga kvoter, v\u00e4lordnade Cgroups och tillf\u00f6rlitliga \u00f6vervakningsdata. Erfarenhetsrapporter och prestandatester visar hur plattformarna reagerar under toppbelastning. I j\u00e4mf\u00f6relser dyker webhoster.de ofta upp som testvinnare n\u00e4r CPU-f\u00f6rdelningen och isoleringen p\u00e5 ett tydligt s\u00e4tt \u00f6vertygar. Jag bed\u00f6mer detta objektivt och ser till att pris och <strong>Effekt<\/strong> som passar profilen f\u00f6r de egna arbetsbelastningarna.<\/p>\n\n<h2>Cgroup v2 i praktiken: att anv\u00e4nda cpu.max och cpu.weight p\u00e5 r\u00e4tt s\u00e4tt<\/h2>\n\n<p>I moderna distributioner f\u00f6redrar jag att anv\u00e4nda Cgroup v2. D\u00e4r kalibrerar jag CPU-budgetarna med <strong>cpu.max<\/strong> och <strong>cpu.vikt<\/strong>. Med cpu.max anger jag en fast tidsbudget per period (t.ex. \u201e50 ms 100 ms\u201c f\u00f6r 50% p\u00e5 en CPU). Om det andra talet l\u00e4mnas tomt g\u00e4ller systemets standardv\u00e4rde. Den <strong>viktning<\/strong> Jag styr detta med cpu.weight (1\u201310000); p\u00e5 s\u00e5 s\u00e4tt f\u00f6rdelar jag \u00e5terst\u00e5ende kapacitet r\u00e4ttvist n\u00e4r flera grupper \u00e4r aktiva. F\u00f6r varje tj\u00e4nst dokumenterar jag om den beh\u00f6ver h\u00e5rda gr\u00e4nser (t.ex. h\u00f6gt belastande batchjobb) eller om den snarare ska viktas relativt (API:er, databaser). Genom konsekventa vikter per roll f\u00f6rblir v\u00e4rdarna planerbara och <strong>r\u00e4ttvist<\/strong>.<\/p>\n\n<p>Det \u00e4r viktigt att hitta en balans mellan viktning och kvot: En sn\u00e4v kvot skyddar grannar, men kan leda till att trafiken stryps tidigt vid korta trafiktoppar. Om viktningen i sig r\u00e4cker, s\u00e4tter jag kvoten gener\u00f6st eller utel\u00e4mnar den helt. Under perioder med h\u00f6g belastning \u00e4r det bra med en n\u00e5got h\u00f6gre viktning f\u00f6r interaktivitet, medan arkivering och rapporter klarar sig med en m\u00e5ttlig viktning.<\/p>\n\n<h2>CFS-bandbreddskontroll i detalj: period, kvot och hastighetsbegr\u00e4nsning<\/h2>\n\n<p>CFS-bandbreddskontrollen begr\u00e4nsar CPU-tiden per Cgroup inom ett definierat <strong>Period<\/strong>. Vanligtvis st\u00e4ller jag in period och quota (v1) respektive cpu.max (v2). Om budgeten tar slut, <strong>stryper<\/strong> CFS fram till n\u00e4sta period. Just h\u00e4r uppst\u00e5r l\u00e4tt oj\u00e4mnheter i latenskurvan. Jag undviker skarpa kanter genom att justera perioden och <strong>Skivstorlek<\/strong> (kernel.sched_cfs_bandwidth_slice_us) anpassas efter arbetsbelastningen: Mindre segment f\u00f6rdelar exekveringen mer j\u00e4mnt, men \u00f6kar samtidigt overheaden. F\u00f6r tj\u00e4nster med mycket kraftiga trafikspikar v\u00e4ljer jag en m\u00e5ttlig period (t.ex. 50\u2013100 ms) och tillr\u00e4cklig budget s\u00e5 att typiska f\u00f6rfr\u00e5gningsspikar kan hanteras utan begr\u00e4nsning.<\/p>\n\n<p>Om jag m\u00e4rker att det ofta uppst\u00e5r begr\u00e4nsningar trots l\u00e5g total CPU-belastning, \u00e4r kvoten f\u00f6r sn\u00e4v. D\u00e5 h\u00f6jer jag budgeten i f\u00f6rh\u00e5llande till arbetsbelastningen eller anv\u00e4nder viktning ist\u00e4llet f\u00f6r fasta gr\u00e4nser. Om det bara uppst\u00e5r kortvariga flaskhalsar, f\u00f6rdelar jag belastningstopparna p\u00e5 flera <strong>Arbetare<\/strong> med n\u00e5got f\u00f6rskjuten aktivitet, s\u00e5 att perioderna inte l\u00f6per ut samtidigt.<\/p>\n\n<h2>Att anv\u00e4nda SMT, IRQ-affinitet och k\u00e4rnisolering p\u00e5 ett \u00e4ndam\u00e5lsenligt s\u00e4tt<\/h2>\n\n<p>P\u00e5 system med <strong>SMT\/Hyper-Threading<\/strong> Jag tar h\u00e4nsyn till att tv\u00e5 tr\u00e5dar delar p\u00e5 en k\u00e4rnas exekveringsenheter. F\u00f6r latenskritiska frontend-processer prioriterar jag att gruppera aktiva tr\u00e5dar p\u00e5 separata fysiska k\u00e4rnor, medan bakgrundsjobb fyller SMT-systerslotsen. Dessutom st\u00e4ller jag in <strong>IRQ-affinitet<\/strong> f\u00f6r n\u00e4tverkskort och NVMe-k\u00f6er till l\u00e4mpliga CPU-upps\u00e4ttningar. P\u00e5 s\u00e5 s\u00e4tt hamnar softirq:erna n\u00e4ra de enheter som anv\u00e4nder dem <strong>Arbetstr\u00e5dar<\/strong>, antalet cache-tr\u00e4ffar \u00f6kar och jitter minskar.<\/p>\n\n<p>Om jag beh\u00f6ver strikt isolering reserverar jag ett f\u00e5tal k\u00e4rnor via k\u00e4rnparametrar (t.ex. isolerade \u201ehousekeeping-fria\u201c k\u00e4rnor). D\u00e4r flyttar jag endast dedikerade tj\u00e4nster samt deras avbrott och h\u00e5ller systemtr\u00e5dar borta. Samtidigt testar jag noggrant f\u00f6r att s\u00e4kerst\u00e4lla att k\u00e4rntj\u00e4nsterna inte blir underf\u00f6rs\u00f6rjda. Ofta r\u00e4cker det med tydlig affinitet utan fullst\u00e4ndig isolering f\u00f6r att uppn\u00e5 stabila svarstider.<\/p>\n\n<h2>Frekvensskalning: Governor och Turbo f\u00f6r konstant latens<\/h2>\n\n<p>Die <strong>CPU-frekvens<\/strong> p\u00e5verkar tail-latensen m\u00e4rkbart. Med governor-inst\u00e4llningen \u201eschedutil\u201c f\u00f6ljer klockfrekvensen noga schemal\u00e4ggarens syn p\u00e5 belastningen. F\u00f6r latenskritiska API:er anv\u00e4nder jag dock ofta \u201eperformance\u201c-guvern\u00f6ren eller h\u00f6jer minimifrekvensen s\u00e5 att k\u00e4rnorna inte hamnar i djupa P-tillst\u00e5nd. Turbo Boost anv\u00e4nder jag m\u00e5lmedvetet: den accelererar korta bursts, men kan utl\u00f6sa temperaturregleringen och d\u00e4mpa frekvenserna efter\u00e5t. Jag m\u00e4ter svarstiderna med och utan Turbo och fattar beslut f\u00f6r varje nod. M\u00e5let \u00e4r <strong>Constance<\/strong>, inte maximiv\u00e4rden under laboratorief\u00f6rh\u00e5llanden.<\/p>\n\n<p>P\u00e5 blandade noder kombinerar jag: n\u00e5gra k\u00e4rnor med fast h\u00f6g frekvens f\u00f6r interaktivitet, resten dynamiskt f\u00f6r batchbearbetning. Det \u00e4r viktigt att h\u00e5lla v\u00e4rdens energipolitik konsekvent, s\u00e5 att testerna blir reproducerbara och s\u00e5 att effekten av CFS-justeringen inte \u00f6verskuggas av energisparlogiken.<\/p>\n\n<h2>F\u00f6rdjupa diagnosen: sp\u00e5rningspunkter, perf och schemal\u00e4ggningsstatistik<\/h2>\n\n<p>Om effekterna fortfarande \u00e4r oklara g\u00e5r jag ett steg djupare. Med perf och sp\u00e5rpunkter unders\u00f6ker jag <strong>V\u00e4ckningar<\/strong>, kontextbyten och v\u00e4ntetider i k\u00f6rk\u00f6n. Iakttagelser som \u201em\u00e5nga preemptioner strax efter uppvaknande\u201c tyder p\u00e5 f\u00f6r l\u00e5g wakeup_granularity eller \u00f6verdriven parallellitet. \/proc\/schedstat och \/proc\/sched_debug visar k\u00f6rtider, migreringshastigheter och f\u00f6rdelning per CPU. Jag korrelerar dessa v\u00e4rden med Cgroup-andelar och applikationsmetrikerna tills <strong>Orsak<\/strong> kan uppfattas som en latensv\u00e5g.<\/p>\n\n<p>Merv\u00e4rdet uppst\u00e5r genom j\u00e4mf\u00f6relse: samma tester f\u00f6re och efter en \u00e4ndring, identiska belastningsm\u00f6nster, fasta tidsf\u00f6nster. F\u00f6rst d\u00e5 omv\u00e4rderar jag. Om m\u00e4tkurvorna \u00e4r brusiga minskar jag antalet variabler (t.ex. fast frekvens, konstant antal tr\u00e5dar) innan jag justerar andra inst\u00e4llningar.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/kernel_scheduler_cfs_8945.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>En \u00f6versikt \u00f6ver I\/O och n\u00e4tverk: Softirqs, RPS\/RFS och blockscheduler<\/h2>\n\n<p>CPU-Fairness fungerar endast om datav\u00e4gen h\u00e5ller j\u00e4mna steg. Jag ordnar <strong>Softirqs<\/strong> (ksoftirqd) till applikationens processorer, s\u00e5 att paket och bearbetning sker p\u00e5 samma st\u00e4lle. Med distribuerade NIC-k\u00f6er och l\u00e4mplig affinitet avlastar jag hotspots. Vid h\u00f6g n\u00e4tverksgenomstr\u00f6mning hj\u00e4lper RPS\/RFS- och XPS-inst\u00e4llningar till att f\u00f6rdela belastningen mer j\u00e4mnt. P\u00e5 lagringssidan ser jag till att anv\u00e4nda en l\u00e4mplig block-I\/O-schemal\u00e4ggare och Cgroup-I\/O-kontroll, s\u00e5 att I\/O-kr\u00e4vande processer inte indirekt tar CPU-tid fr\u00e5n andra. P\u00e5 s\u00e5 s\u00e4tt undviker jag att r\u00e4ttvisan p\u00e5 CPU-niv\u00e5 \u00e4ventyras genom <strong>Eftersl\u00e4pning<\/strong> motverkas i I\/O-v\u00e4gen.<\/p>\n\n<p>F\u00f6r arbetsbelastningar med io_uring eller intensiv asynkron I\/O planerar jag in egna CPU-upps\u00e4ttningar eller grupper f\u00f6r I\/O-hj\u00e4lptr\u00e5darna, s\u00e5 att de inte konkurrerar med frontend-arbetartr\u00e5darna om samma resursbudget.<\/p>\n\n<h2>Anti-m\u00f6nster och bepr\u00f6vade handb\u00f6cker<\/h2>\n\n<p>I praktiken st\u00f6ter jag p\u00e5 \u00e5terkommande m\u00f6nster som f\u00f6rst\u00f6r svarstiderna. Jag undviker dem konsekvent:<\/p>\n<ul>\n  <li>F\u00f6r m\u00e5nga <strong>Tr\u00e5dar<\/strong> F\u00f6r CPU-bundna tj\u00e4nster: Jag h\u00e5ller mig n\u00e4ra antalet k\u00e4rnor och skalar horisontellt ist\u00e4llet f\u00f6r att starta hundratals arbetare.<\/li>\n  <li>F\u00f6r tr\u00e5ngt <strong>Odds<\/strong> med kort period: Det leder till throttle-v\u00e5gor. B\u00e4ttre: anv\u00e4nd lite mer budget eller viktning.<\/li>\n  <li>Oklara <strong>affinitet<\/strong>: Migrerande tr\u00e5dar som offrar cache-lokaliteten. Jag f\u00e4ster hotpaths och deras avbrott p\u00e5 ett konsekvent s\u00e4tt.<\/li>\n  <li>Blandade <strong>Etapper<\/strong> med olika nice- och viktv\u00e4rden: Det ger upphov till \u00f6verraskningar. Jag harmoniserar standardinst\u00e4llningarna.<\/li>\n  <li>Autogroup pauschal aktiv: P\u00e5 servrarna testar jag effekten p\u00e5 ett m\u00e5linriktat s\u00e4tt; interaktiva optimeringar av skrivbordsmilj\u00f6n hj\u00e4lper inte alltid i datacentret.<\/li>\n<\/ul>\n\n<p>Mina arbetsmetoder \u00e4r pragmatiska: f\u00f6rst skapa \u00f6versikt (m\u00e4tv\u00e4rden, sp\u00e5rningar), sedan grova justeringar (tr\u00e5dar, cgroups) och f\u00f6rst d\u00e4refter finjustering (latens, granularitet). Varje \u00e4ndring \u00e4r reversibel och dokumenterad. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir milj\u00f6n hanterbar och <strong>f\u00f6ruts\u00e4gbar<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/hosting-serverraum-7482.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kortfattat sammanfattat<\/h2>\n\n<p>Der <strong>CFS<\/strong> Schemal\u00e4ggaren f\u00f6rdelar CPU-tiden r\u00e4ttvist, uppr\u00e4tth\u00e5ller en h\u00f6g interaktivitet och utg\u00f6r den b\u00e4sta utg\u00e5ngspunkten f\u00f6r blandade hosting-arbetsbelastningar. Avg\u00f6rande \u00e4r l\u00e4mpliga gr\u00e4nser med Cgroups, realistisk parallellitet och tydliga prioriteringar. Jag justerar endast latens- och granularitetsv\u00e4rdena om m\u00e4tv\u00e4rdena visar p\u00e5 en flaskhals. D\u00e4refter utv\u00e4rderar jag effekten och justerar tillbaka inst\u00e4llningarna om resultatet inte \u00e4r tillfredsst\u00e4llande. Med detta pragmatiska tillv\u00e4gag\u00e5ngss\u00e4tt s\u00e4kerst\u00e4ller jag konstanta <strong>Svarstider<\/strong> och planerbara kapaciteter \u2013 utan att \u00f6verbelasta maskinen.<\/p>","protected":false},"excerpt":{"rendered":"<p>CFS Scheduler f\u00f6rklarat: Fair Scheduling i Linux-k\u00e4rnan f\u00f6r webbhotellsservrar, prestanda och optimal CPU-f\u00f6rdelning.<\/p>","protected":false},"author":1,"featured_media":20571,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20578","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":"91","_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":"CFS Scheduler","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":"20571","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/20578","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=20578"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/20578\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/20571"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=20578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=20578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=20578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}