{"id":1046,"date":"2026-09-03T23:12:14","date_gmt":"2026-09-03T23:12:14","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=1046"},"modified":"2026-09-03T23:12:14","modified_gmt":"2026-09-03T23:12:14","slug":"tuned-adm-vps-performance-profiles","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/","title":{"rendered":"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Linux ships with hundreds of tunables \u2014 CPU governors, scheduler settings, virtual-memory ratios, block-device queue depths \u2014 and most VPS owners either leave them at defaults or paste random sysctl values from blog posts. <code>tuned<\/code> (and its <code>tuned-adm<\/code> front end) solves the same problem differently: it bundles curated sets of kernel and device settings into named <em>profiles<\/em>, applies them atomically, and lets you switch between them with one command. This article explains how tuned-adm works on a VPS, which profiles matter for common workloads, and how to verify a profile is actually doing something on virtualized hardware.<\/p>\n<p class=\"wp-block-paragraph\">Profile tuning is most effective when the underlying plan is honest about its resources \u2014 check our <a href=\"https:\/\/virtualserversvps.com\/#providers\">VPS provider comparison table<\/a> to see which hosts give you dedicated vCPUs and full control over kernel settings before you invest time in tuning.<\/p>\n<h2 class=\"wp-block-heading\">What tuned Actually Does<\/h2>\n<p class=\"wp-block-paragraph\">Under the hood, tuned is a daemon that applies a set of <code>sysctl<\/code> values, <code>sysfs<\/code> writes, and device settings defined in a profile directory. Unlike a static <code>\/etc\/sysctl.conf<\/code>, tuned can react to events \u2014 switching profiles when a device is plugged in or when AC power is lost \u2014 and it can disable itself cleanly if a profile conflicts with the running system. On a VPS you care about three things: the CPU governor and scheduler tunings, the virtual-memory behavior, and the block-device queue settings. Profiles bundle all of those coherently.<\/p>\n<h2 class=\"wp-block-heading\">Installing and Enabling tuned<\/h2>\n<p class=\"wp-block-paragraph\">tuned is a standard package on every major distribution. On Debian\/Ubuntu it lives in <code>universe<\/code>; on RHEL\/Rocky\/Alma it is in the base repository:<\/p>\n<pre class=\"wp-block-code\"><code># Debian \/ Ubuntu\nsudo apt update &amp;&amp; sudo apt install tuned -y\n\n# RHEL \/ Rocky \/ Alma\nsudo dnf install tuned -y\n\n# Enable and start the daemon\nsudo systemctl enable --now tuned\n\n# See the active profile and the recommended one\nsudo tuned-adm active\nsudo tuned-adm recommend<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The <code>recommend<\/code> command inspects your hardware and prints the profile the vendor thinks fits \u2014 on most cloud instances that will be <code>virtual-guest<\/code>, which is a good baseline for VPSes and already applied by default on many images.<\/p>\n<h2 class=\"wp-block-heading\">Profiles That Matter on a VPS<\/h2>\n<p class=\"wp-block-paragraph\">You don\u2019t need all 20+ profiles. These are the ones relevant to virtualized servers:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>virtual-guest<\/strong> \u2014 the default for cloud\/VM images. Disables some power-saving and disk barriers, enables the performance governor if the guest can control it, and otherwise stays conservative. Start here.<\/li>\n<li><strong>throughput-performance<\/strong> \u2014 disables power management, sets the CPU governor to <code>performance<\/code>, increases the sysctl network buffers, and raises the block-device read-ahead. Best for file servers, batch jobs, and high-traffic web servers that want maximum raw throughput.<\/li>\n<li><strong>latency-performance<\/strong> \u2014 same CPU focus as throughput-performance but tuned for consistently low latency rather than bulk transfer: it disables transparent huge pages (THP) in some versions, which matters for databases, and tightens scheduler settings for predictable response times.<\/li>\n<li><strong>balanced<\/strong> \u2014 the laptop\/desktop default; on a VPS it usually leaves power saving enabled, which can cap CPU frequency on hosts that expose cpufreq to the guest. Avoid it on production servers.<\/li>\n<li><strong>network-latency<\/strong> \/ <strong>network-throughput<\/strong> \u2014 specialize the kernel network stack for low latency or high throughput. Useful on VPSes running game servers, VoIP, or heavy proxies, but they assume dedicated NICs; verify each setting is accepted by your virtio driver.<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code># Switch profile (persistent across reboots)\nsudo tuned-adm profile latency-performance\n\n# Verify what the profile changed\nsudo tuned-adm active\nsudo tuned-adm verify   # checks profile integrity<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Verifying a Profile Works on Your VPS<\/h2>\n<p class=\"wp-block-paragraph\">Virtualization changes the rules: some profile settings target hardware you don\u2019t control, so the profile may be active without changing anything measurable. Always verify with benchmarks rather than trusting <code>tuned-adm active<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code># CPU governor actually in use per core\ncat \/sys\/devices\/system\/cpu\/cpu*\/cpufreq\/scaling_governor | sort -u\n\n# sysctl values a profile claims to set (example)\nsysctl vm.swappiness net.core.rmem_max vm.transparent_hugepages.enabled 2&gt;\/dev\/null\n\n# Before\/after comparison\nsysbench cpu run --threads=$(nproc) --cpu-max-prime=20000\nsysbench memory run<\/code><\/pre>\n<p class=\"wp-block-paragraph\">If the governor shows <code>performance<\/code> and your sysbench CPU score improves 5\u201315%, the profile is doing its job. If nothing changed, your host either hides cpufreq (common on shared KVM) or already runs the settings \u2014 in that case, the value of tuned is keeping the configuration centralized and revertible rather than the raw speedup.<\/p>\n<h2 class=\"wp-block-heading\">Custom Profiles: Tuned for Your Stack<\/h2>\n<p class=\"wp-block-paragraph\">When stock profiles are close but not exact, write your own by copying one and overriding a few keys:<\/p>\n<pre class=\"wp-block-code\"><code># Create a custom profile directory\nsudo mkdir -p \/etc\/tuned\/vps-web\n\n# \/etc\/tuned\/vps-web\/tuned.conf\n[main]\ninclude=throughput-performance\n\n[sysctl]\nvm.swappiness=10\nvm.dirty_ratio=15\nvm.dirty_background_ratio=5\nnet.core.somaxconn=8192\n\n[cpu]\nforce_latency=1\ngovernor=performance\n\n# Activate it\nsudo tuned-adm profile vps-web\nsudo tuned-adm verify<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The <code>include<\/code> directive inherits everything from <code>throughput-performance<\/code> and your <code>[sysctl]<\/code> section overrides just the values you care about. Keep custom profiles minimal \u2014 every override is a setting you must re-check after kernel or tuned updates.<\/p>\n<h2 class=\"wp-block-heading\">When Not to Use tuned<\/h2>\n<p class=\"wp-block-paragraph\">tuned is not a fit for every setup. If you use a configuration-management tool that already pins every sysctl value, adding tuned creates two sources of truth that can fight each other. If your provider runs OpenVZ\/LXC containers, most sysctls and all cpufreq settings are read-only from inside the container, and tuned will fail to apply them. And if your workload is a single containerized app, Docker\u2019s own resource limits matter more than host profiles. In those cases, a plain <code>\/etc\/sysctl.d\/<\/code> file is the simpler tool \u2014 see our sysctl tuning guides for the values that matter.<\/p>\n<p class=\"wp-block-paragraph\">For hosts that expose real kernel control, tuned-adm is the fastest way to move from \u201cdefault kernel\u201d to \u201cprofile matched to workload\u201d with one command and a clean rollback path. Start with <code>virtual-guest<\/code>, benchmark, try <code>latency-performance<\/code> or <code>throughput-performance<\/code>, and keep the one that wins \u2014 and if your plan\u2019s vCPUs are too oversubscribed for tuning to help, our <a href=\"https:\/\/virtualserversvps.com\/#providers\">VPS comparison table<\/a> can point you to hosts with dedicated cores.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Linux ships with hundreds of tunables \u2014 CPU governors, scheduler settings, virtual-memory ratios, block-device queue depths \u2014 and most VPS owners either leave them at defaults or paste random sysctl&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1046","post","type-post","status-publish","format-standard","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>tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads - Virtual Servers VPS Blog<\/title>\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\/tuned-adm-vps-performance-profiles\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads\" \/>\n<meta property=\"og:description\" content=\"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-03T23:12:14+00:00\" \/>\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\/tuned-adm-vps-performance-profiles\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/\",\"name\":\"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-09-03T23:12:14+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads\"}]},{\"@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":"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads - Virtual Servers VPS Blog","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\/tuned-adm-vps-performance-profiles\/","og_locale":"en_US","og_type":"article","og_title":"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads","og_description":"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads","og_url":"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-09-03T23:12:14+00:00","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\/tuned-adm-vps-performance-profiles\/","url":"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/","name":"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-09-03T23:12:14+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/tuned-adm-vps-performance-profiles\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"tuned-adm on a VPS: Choosing the Right Kernel Profile for Web, Database, and Latency-Sensitive Workloads"}]},{"@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\/1046","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=1046"}],"version-history":[{"count":1,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1046\/revisions"}],"predecessor-version":[{"id":1048,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1046\/revisions\/1048"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=1046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=1046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=1046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}