{"id":888,"date":"2026-08-14T23:15:27","date_gmt":"2026-08-14T23:15:27","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=888"},"modified":"2026-08-19T22:12:35","modified_gmt":"2026-08-19T22:12:35","slug":"cpu-steal-vps-performance","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/","title":{"rendered":"High CPU Steal on Your VPS? Measure It and Fix the Root Cause"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">CPU steal is the percentage of time your virtual machine wanted to run but the hypervisor gave the physical CPU core to another tenant. On shared VPS infrastructure it is the most common cause of &#8220;the server feels slow but nothing is using the CPU&#8221; complaints. Unlike memory pressure or a misconfigured application, steal is invisible in <code>htop<\/code> unless you know which column to read, and it cannot be fixed with more RAM or a faster framework. This guide explains how to measure steal reliably, what the numbers mean, and what actually reduces it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How CPU steal shows up in your metrics<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On Linux, the kernel accounts steal time in the <code>st<\/code> column of <code>top<\/code>, <code>vmstat<\/code>, and <code>mpstat<\/code>. It appears whenever the hypervisor schedules a different virtual machine on the physical core your vCPU depends on. The telltale signature is high <code>st<\/code> with low <code>us<\/code> and <code>sy<\/code>: the CPU is not busy doing your work \u2014 it simply was not given time to do it.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Tool<\/th><th>Command<\/th><th>What to look at<\/th><\/tr><\/thead><tbody><tr><td>top \/ htop<\/td><td><code>top -d 2<\/code><\/td><td><code>st<\/code> column; sustained &gt;5% while load is high<\/td><\/tr><tr><td>vmstat<\/td><td><code>vmstat 1<\/code><\/td><td><code>st<\/code> column in the CPU section<\/td><\/tr><tr><td>mpstat<\/td><td><code>mpstat -P ALL 1<\/code><\/td><td><code>%steal<\/code> per vCPU<\/td><\/tr><tr><td>sar<\/td><td><code>sar -u 1 10<\/code><\/td><td><code>%steal<\/code> history via sysstat<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What the numbers actually mean<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>0\u20132% sustained:<\/strong> normal on shared hosts. Ignore single spikes.<\/li>\n<li><strong>2\u20135% sustained:<\/strong> worth watching; expect occasional latency spikes during host-wide peaks.<\/li>\n<li><strong>5\u201310% sustained:<\/strong> your application is measurably slower. Investigate patterns (time of day, host-wide cron jobs).<\/li>\n<li><strong>Over 10% sustained:<\/strong> the host is oversubscribed. This explains real user-facing slowdowns and is a legitimate reason to move.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Steal, iowait, or just a slow app?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before blaming the provider, rule out the other two suspects:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>iowait<\/code> high and <code>st<\/code> low: storage is the bottleneck, not the CPU scheduler.<\/li>\n<li><code>us<\/code> + <code>sy<\/code> near 100% with <code>st<\/code> low: your code is genuinely CPU-bound. Tune the application or add vCPUs.<\/li>\n<li><code>st<\/code> high while <code>us<\/code>\/<code>sy<\/code> are low: the classic steal signature. No amount of application tuning fixes this.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Also compare <code>load average<\/code> against your vCPU count. Load persistently above the vCPU count means the VM is waiting for CPU time \u2014 which is exactly the condition steal measures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because steal varies with host load, a single reading is not enough. Log <code>%steal<\/code> over a week with a lightweight loop \u2014 for example <code>mpstat -P ALL 10 &gt;&gt; \/var\/log\/steal.log<\/code> under cron \u2014 then look at the weekly average and the 95th percentile. A host that is fine at noon and saturated at 8 p.m. still hurts you if that is when your traffic peaks. Providers with dedicated CPU cores publish that guarantee in their plan specs; shared hosts publish nothing, which is exactly why the measurement is on you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What actually reduces CPU steal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Steal is a host-level property, so the fixes are about placement and plan design, not kernel parameters:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Move heavy jobs off peak hours.<\/strong> Cron backups, log aggregation, and database maintenance at 02:00 hit a quieter host. Even on an oversubscribed node, off-peak steal is usually far lower.<\/li>\n<li><strong>Right-size the plan.<\/strong> A bursty 1-vCPU instance that peaks at 100% every few minutes suffers more from steal than a 2-vCPU plan with headroom, because steal hurts most when a vCPU is saturated.<\/li>\n<li><strong>Ask for a different host.<\/strong> Many providers migrate you to another node on request. If steal follows you, the provider&#8217;s overall oversubscription is the problem.<\/li>\n<li><strong>Move to a dedicated-CPU or dedicated-core plan.<\/strong> These guarantee physical cores and eliminate steal almost entirely \u2014 the definitive fix for latency-sensitive workloads.<\/li>\n<li><strong>Benchmark before you commit.<\/strong> Run the same workload on a trial instance on different hosts and compare <code>st<\/code> and request latency before signing up long-term.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Benchmarking steal before you buy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A quick, repeatable test: run <code>sysbench cpu --threads=4 --time=60 run<\/code> (or <code>openssl speed<\/code>) three times on a trial instance, capture <code>mpstat -P ALL 1<\/code> during each run, and average the <code>%steal<\/code> column. Repeat at different times of day if you can. If average steal stays above 5% during a trivial CPU benchmark, the host is already saturated \u2014 it will only get worse under real traffic. This is also the moment to <a href=\"https:\/\/virtualserversvps.com\/#providers\">compare providers on our comparison table<\/a>, because CPU allocation model, storage type, and guaranteed resources matter as much as the sticker price.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When steal is not the problem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the metrics say steal is low but the site is slow, look elsewhere: swap thrash (the <code>si<\/code>\/<code>so<\/code> columns of <code>vmstat<\/code>), network latency, TLS handshake overhead, or a database query missing an index. A common and expensive mistake is blaming the host for what is actually a 5 MB unindexed table scan. Measure first, then decide.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The bottom line<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CPU steal is a real, measurable cost of shared hosting, and the fix is placement and plan design rather than configuration heroics. When you evaluate plans, <a href=\"https:\/\/virtualserversvps.com\/#features\">see the full specs and pricing<\/a> side by side, and run the benchmark above on any candidate before you pay. If your workload needs consistent CPU, a dedicated-core plan removes the variable entirely.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CPU steal is the percentage of time your virtual machine wanted to run but the hypervisor gave the physical CPU core to another tenant. On shared VPS infrastructure it is&#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":[3],"tags":[],"class_list":["post-888","post","type-post","status-publish","format-standard","hentry","category-performance-optimization"],"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>High CPU Steal on Your VPS? Measure It and Fix the Root Cause - 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\/cpu-steal-vps-performance\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"High CPU Steal on Your VPS? Measure It and Fix the Root Cause\" \/>\n<meta property=\"og:description\" content=\"High CPU Steal on Your VPS? Measure It and Fix the Root Cause\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-14T23:15:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-19T22:12:35+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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/\",\"name\":\"High CPU Steal on Your VPS? Measure It and Fix the Root Cause - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-08-14T23:15:27+00:00\",\"dateModified\":\"2026-08-19T22:12:35+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"High CPU Steal on Your VPS? Measure It and Fix the Root Cause\"}]},{\"@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":"High CPU Steal on Your VPS? Measure It and Fix the Root Cause - 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\/cpu-steal-vps-performance\/","og_locale":"en_US","og_type":"article","og_title":"High CPU Steal on Your VPS? Measure It and Fix the Root Cause","og_description":"High CPU Steal on Your VPS? Measure It and Fix the Root Cause","og_url":"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-08-14T23:15:27+00:00","article_modified_time":"2026-08-19T22:12:35+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/","url":"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/","name":"High CPU Steal on Your VPS? Measure It and Fix the Root Cause - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-08-14T23:15:27+00:00","dateModified":"2026-08-19T22:12:35+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/cpu-steal-vps-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"High CPU Steal on Your VPS? Measure It and Fix the Root Cause"}]},{"@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\/888","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=888"}],"version-history":[{"count":2,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/888\/revisions"}],"predecessor-version":[{"id":920,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/888\/revisions\/920"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}