{"id":88,"date":"2025-11-30T01:44:28","date_gmt":"2025-11-30T01:44:28","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=88"},"modified":"2026-10-29T22:04:40","modified_gmt":"2026-10-29T22:04:40","slug":"linux-vps-cpu-governor-swappiness-io-scheduler-tuning","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/","title":{"rendered":"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Most Linux VPS images ship with kernel defaults chosen for compatibility across the widest range of hardware and workloads \u2014 not for the single virtual machine you are running. Three settings cause the majority of avoidable performance loss on a small instance: the CPU frequency governor (when exposed at all), the swappiness value that pushes anonymous memory to disk too eagerly, and the I\/O scheduler assigned to virtual block devices. This guide walks through checking each, changing it safely, and proving whether the change helped.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Establish a Baseline Before Changing Anything<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Record the current state and a workload measurement first, or you will have no way to tell a real improvement from noise. Save the sysctl and block-device configuration, then run a short representative load \u2014 a build, an HTTP benchmark, or a database query mix \u2014 and keep the latency numbers. Cloud hosts vary enough between runs that an unmeasured change is indistinguishable from luck.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>sysctl kernel.sched_* vm.swappiness vm.dirty_ratio vm.vfs_cache_pressure\nfor d in \/sys\/block\/vd* \/sys\/block\/sd* \/sys\/block\/nvme*; do\n  [ -e &quot;$d\/queue\/scheduler&quot; ] &amp;&amp; echo &quot;$d: $(cat $d\/queue\/scheduler)&quot;\ndone\ncpufreq-info 2&gt;\/dev\/null | head -20 || echo &quot;no cpufreq exposed&quot;\nsysbench --test=cpu --cpu-max-prime=20000 run | tail -3<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Write the captured values to a file outside the VM as well. If a tuning experiment makes things worse, you want the original numbers available without guessing at distribution defaults.<\/p>\n\n\n<h2 class=\"wp-block-heading\">CPU Governors: What You Can and Cannot Control<\/h2>\n\n\n<p class=\"wp-block-paragraph\">The governor controls how the <code>cpufreq<\/code> subsystem chooses a frequency for a core. On bare metal, switching from <code>powersave<\/code> or <code>schedutil<\/code> to <code>performance<\/code> removes ramp-up delay after idle periods. On a KVM guest, the hypervisor usually owns the real frequency of the physical core, and what the guest sees is either a simulation or nothing at all.<\/p>\n\n<p class=\"wp-block-paragraph\">Check what exists before planning any work: <code>ls \/sys\/devices\/system\/cpu\/cpu0\/cpufreq\/<\/code> will either list <code>scaling_governor<\/code> and <code>scaling_available_governors<\/code> or be empty. If it is empty, frequency tuning is not available to you and the delivered clock is whatever the host decides. If it is present, read the available governors and whether the files are writable \u2014 on many providers they are read-only even when they appear.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>cat \/sys\/devices\/system\/cpu\/cpu0\/cpufreq\/scaling_available_governors\ncat \/sys\/devices\/system\/cpu\/cpu0\/cpufreq\/scaling_governor\n# try it, and read back the result\necho performance | sudo tee \/sys\/devices\/system\/cpu\/cpu*\/cpufreq\/scaling_governor\ncat \/sys\/devices\/system\/cpu\/cpu*\/cpufreq\/scaling_governor<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">If the write fails, the guest lacks permission and no userspace tool will change that. What you can still verify is whether the delivered frequency is stable: sample <code>scaling_cur_freq<\/code> or <code>\/proc\/cpuinfo<\/code> during a sustained load. A frequency that drops partway through a long run means host-level thermal or quota throttling, a different problem from governor choice.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Making a Governor Change Persist<\/h2>\n\n\n<p class=\"wp-block-paragraph\">A <code>tee<\/code> into sysfs lasts until reboot. For a permanent setting use <code>cpufrequtils<\/code> or a systemd unit, and verify after a restart rather than assuming the package hook runs on your distribution. If you are using <code>tuned<\/code>, its profiles manage the governor for you and will overwrite manual changes \u2014 pick one mechanism.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>echo 'GOVERNOR=&quot;performance&quot;' | sudo tee \/etc\/default\/cpufrequtils\nsudo systemctl enable --now cpufrequtils\n# or, on systems using tuned\nsudo tuned-adm profile throughput-performance\nsudo tuned-adm active<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Note that <code>performance<\/code> keeps cores at maximum frequency and raises host power draw; on a shared host that may be irrelevant to your bill but is rarely what the provider wants, and some hypervisors clamp it anyway. Measure the difference on your own workload before keeping it \u2014 for I\/O-bound services the effect is usually inside the noise floor.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Swappiness: The Default Is Too Aggressive for Small VPS<\/h2>\n\n\n<p class=\"wp-block-paragraph\"><code>vm.swappiness<\/code> tells the kernel how willing it should be to reclaim anonymous pages instead of page cache. The default of 60 is tuned for desktops where swap is plentiful; on a 1-2 GB VPS with a small swap file, it means the kernel will evict hot application memory to disk while still holding file cache. The result is latency spikes under memory pressure that look like disk problems.<\/p>\n\n<p class=\"wp-block-paragraph\">For a server that runs a database or a language runtime with a working set close to RAM size, a value of 10 is a reasonable starting point, and 1 is defensible when swap exists only as an emergency buffer. Do not set 0 on kernels where it still means &#8220;avoid swap unless absolutely necessary&#8221; \u2014 the difference between 1 and 0 is small, but 1 keeps an escape hatch.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/sys\/vm\/swappiness\necho 'vm.swappiness = 10' | sudo tee \/etc\/sysctl.d\/60-vps-tuning.conf\nsudo sysctl --system\n# check that pages are actually staying resident\nvmstat 5 12<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Watch the <code>si<\/code> and <code>so<\/code> columns in <code>vmstat<\/code> after the change. Persistent swap-in with low cache pressure means the working set genuinely exceeds RAM and swappiness was never the problem \u2014 resize the instance or reduce the working set. Also check <code>vm.vfs_cache_pressure<\/code>: lowering it keeps dentries and inodes cached, which helps on hosts with many small files but delays reclaim of memory you may need.<\/p>\n\n\n<h2 class=\"wp-block-heading\">I\/O Schedulers on Virtual Block Devices<\/h2>\n\n\n<p class=\"wp-block-paragraph\">A virtual disk is not a physical disk. Requests pass through virtio to the host, which does its own scheduling on real hardware. That is why the common recommendation on modern kernels is <code>none<\/code> (or <code>mq-deadline<\/code> where <code>none<\/code> is unavailable) for SSD-backed VPS volumes: the guest-side scheduler adds merge and sort work without any visibility into the device&#8217;s real queue.<\/p>\n\n<p class=\"wp-block-paragraph\">The exception is a spinning-disk-backed plan or a heavily contended shared volume where request ordering matters for throughput. There, <code>bfq<\/code> can improve fairness between competing processes at the cost of latency. The only way to know which applies is to test both under your workload rather than copy a recommendation from a different provider.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>cat \/sys\/block\/vda\/queue\/scheduler   # shows [none] mq-deadline kyber bfq\necho mq-deadline | sudo tee \/sys\/block\/vda\/queue\/scheduler\nfio --name=r --filename=\/tmp\/fiotest --size=512M --bs=4k \\\n    --rw=randread --iodepth=16 --numjobs=4 --runtime=30 --time_based<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">A scheduler change on a guest volume is frequently smaller than run-to-run noise. Repeat each configuration three times and compare the median IOPS and p99 latency, not the best run. If the difference is inside the variance, keep the default \u2014 fewer moving parts survive kernel upgrades and provider migrations.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Verify the Changes Persist Across Reboots<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Distributions differ in which sysctl directories they read and in what order, and a provider image may include its own tuning file that overrides yours. After writing configuration, reboot once and re-read every value. If a setting reverted, check for a competing file with a higher sort order in <code>\/etc\/sysctl.d\/<\/code> or a cloud-init script that reapplies it on each boot.<\/p>\n\n\n<pre class=\"wp-block-code\"><code>grep -r . \/etc\/sysctl.d\/ \/etc\/sysctl.conf | grep -E 'swappiness|vfs_cache'\nsudo reboot\n# after reboot\ncat \/proc\/sys\/vm\/swappiness\ncat \/sys\/block\/vda\/queue\/scheduler\nsystemctl status cpufrequtils --no-pager<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Record the verified post-reboot values alongside the baseline so the next person knows what was intentionally changed and why. Undocumented sysctl tweaks are a common source of &#8220;this host behaves differently from the test host&#8221; incidents.<\/p>\n\n\n<h2 class=\"wp-block-heading\">When These Tweaks Do Not Apply<\/h2>\n\n\n<p class=\"wp-block-paragraph\">If the guest reports no <code>cpufreq<\/code> entries and only a single <code>none<\/code> scheduler, the provider has already made these decisions at the host layer and guest-side tuning is limited to memory behaviour. In that case the useful levers are elsewhere: reducing the working set, moving hot data to local storage if the plan offers it, and checking whether the instance is CPU-constrained by steal rather than by configuration.<\/p>\n\n<p class=\"wp-block-paragraph\">Steal is worth ruling out early, since no governor or scheduler setting fixes contention on the physical core. Sampling the steal column of <code>\/proc\/stat<\/code> over a few minutes is enough to tell whether the ceiling is yours or the host&#8217;s; the method is described in <a href=\"https:\/\/virtualserversvps.com\/blog\/measuring-vps-cpu-steal-time-accurately\">this walkthrough on measuring steal time<\/a>. If the tuning that remains is driven by disk and network rather than by CPU, a larger instance with guaranteed resources is cheaper than working around the limits \u2014 the plan differences are summarised in <a href=\"https:\/\/virtualserversvps.com\/\">our VPS plan comparison<\/a>.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n<p class=\"wp-block-paragraph\">CPU governors, swappiness, and I\/O schedulers are worth checking once, on every new instance, and then verified after reboot and left alone. The governor is often not yours to control in a guest; swappiness is almost always worth lowering from 60 on a small VPS; and the I\/O scheduler choice matters mainly on contended or spinning-disk-backed volumes. Make one change at a time, measure with the same workload, and revert anything that does not produce a repeatable improvement.<\/p>","protected":false},"excerpt":{"rendered":"<p>Three kernel-level knobs \u2014 the CPU governor, vm.swappiness, and the block I\/O scheduler \u2014 can cut latency spikes on a default VPS install. Here are the exact commands, configs, and before\/after benchmarks.<\/p>\n","protected":false},"author":1,"featured_media":89,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":22,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-88","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps-guides-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained - Virtual Servers VPS Blog<\/title>\n<meta name=\"description\" content=\"If you\u2019re ready to move beyond the limitations of basic shared hosting and unlock a new level of website performance, stability, and control, you\u2019re looking at the right solution. The interconnected terms virtual dedicated server vps vds represent the gold standard in flexible, powerful hosting, sitting perfectly between cheap shared plans and expensive, physical dedicated machines.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained\" \/>\n<meta property=\"og:description\" content=\"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-30T01:44:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-29T22:04:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Virtual-Servers-Vps-Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Virtual-Servers-Vps-Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/\",\"name\":\"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg\",\"datePublished\":\"2025-11-30T01:44:28+00:00\",\"dateModified\":\"2026-10-29T22:04:40+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"description\":\"If you\u2019re ready to move beyond the limitations of basic shared hosting and unlock a new level of website performance, stability, and control, you\u2019re looking at the right solution. The interconnected terms virtual dedicated server vps vds represent the gold standard in flexible, powerful hosting, sitting perfectly between cheap shared plans and expensive, physical dedicated machines.\",\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#primaryimage\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg\",\"contentUrl\":\"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg\",\"width\":640,\"height\":426},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/\",\"name\":\"Virtual Servers VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\",\"name\":\"Virtual-Servers-Vps-Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"caption\":\"Virtual-Servers-Vps-Editor\"},\"sameAs\":[\"https:\/\/virtualserversvps.com\/blog\"],\"url\":\"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained - Virtual Servers VPS Blog","description":"If you\u2019re ready to move beyond the limitations of basic shared hosting and unlock a new level of website performance, stability, and control, you\u2019re looking at the right solution. The interconnected terms virtual dedicated server vps vds represent the gold standard in flexible, powerful hosting, sitting perfectly between cheap shared plans and expensive, physical dedicated machines.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/","og_locale":"en_US","og_type":"article","og_title":"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained","og_description":"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained","og_url":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2025-11-30T01:44:28+00:00","article_modified_time":"2026-10-29T22:04:40+00:00","og_image":[{"width":640,"height":426,"url":"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg","type":"image\/jpeg"}],"author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/","url":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/","name":"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#primaryimage"},"image":{"@id":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#primaryimage"},"thumbnailUrl":"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg","datePublished":"2025-11-30T01:44:28+00:00","dateModified":"2026-10-29T22:04:40+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"description":"If you\u2019re ready to move beyond the limitations of basic shared hosting and unlock a new level of website performance, stability, and control, you\u2019re looking at the right solution. The interconnected terms virtual dedicated server vps vds represent the gold standard in flexible, powerful hosting, sitting perfectly between cheap shared plans and expensive, physical dedicated machines.","breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#primaryimage","url":"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg","contentUrl":"https:\/\/virtualserversvps.com\/blog\/wp-content\/uploads\/2025\/11\/8866-2.jpg","width":640,"height":426},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/linux-vps-cpu-governor-swappiness-io-scheduler-tuning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Linux VPS Tuning: CPU Governors, Swappiness, and I\/O Schedulers Explained"}]},{"@type":"WebSite","@id":"https:\/\/virtualserversvps.com\/blog\/#website","url":"https:\/\/virtualserversvps.com\/blog\/","name":"Virtual Servers VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0","name":"Virtual-Servers-Vps-Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","caption":"Virtual-Servers-Vps-Editor"},"sameAs":["https:\/\/virtualserversvps.com\/blog"],"url":"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/"}]}},"_links":{"self":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":5,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":1540,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions\/1540"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media\/89"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}