{"id":1635,"date":"2026-11-07T22:38:57","date_gmt":"2026-11-07T22:38:57","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=1635"},"modified":"2026-11-07T22:38:57","modified_gmt":"2026-11-07T22:38:57","slug":"vps-cpu-credit-burst-vs-sustained","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/","title":{"rendered":"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Burstable VPS plans decouple the CPU you can consume for short periods from the CPU you pay for continuously. A plan advertised as &#8220;4 vCPU burstable&#8221; may guarantee only 20% of one core at steady state, with the rest available as credits that accumulate while idle and deplete under load. For a low-traffic API this is excellent economics. For a video transcoder it is a trap that manifests as mysterious slowdowns twelve hours after deployment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This article explains how credit accounting works, how to measure it from inside the guest, and how to decide whether your workload profile fits. It focuses on measurable behavior rather than plan names, because the same accounting model appears under several different names. Instance families and their baseline ratios are listed on the main <a href=\"https:\/\/virtualserversvps.com\/\">VPS hosting platform<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Credit Accounting Model<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each vCPU has a baseline performance percentage. When the guest uses below baseline, credits accrue at a defined rate; when it uses above baseline, credits are consumed at the surplus rate. A vCPU at 20% baseline running at 100% for one minute consumes four minutes&#8217; worth of credits. Total burst capacity is bounded by an account ceiling \u2014 often 24 hours of baseline per vCPU \u2014 which caps how long any single burst can last.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical consequence is a duty-cycle constraint. If your workload needs 100% CPU for 30 minutes out of every 8 hours on a single core, the average is about 6%, which fits comfortably within a 20% baseline. If it needs 100% for 7 hours out of 8, the average is 87%, and credits will exhaust and the guest will be throttled to 20% for the remainder. Compute your own duty cycle before choosing a plan; it is the only number that matters.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reading Credit State From Inside the Guest<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most cloud platforms expose credit balance through an instance metadata endpoint or an agent, not through the kernel. On AWS, <code>curl -s http:\/\/169.254.169.254\/latest\/meta-data\/cpu-credits\/<\/code> has historically returned balances for T-family instances; other providers expose equivalents through their own metadata service or console API. If your provider does not, infer the state from the CPU steal and throttling counters described below.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inside the guest, the clearest kernel-level signal is CPU cgroup throttling. Read <code>cat \/sys\/fs\/cgroup\/cpu.stat<\/code> and watch <code>nr_throttled<\/code> and <code>throttled_usec<\/code>. On a burstable instance under sustained load, <code>throttled_usec<\/code> climbs steadily once credits run out, and <code>\/proc\/pressure\/cpu<\/code> shows <code>some avg10<\/code> rising while your own utilization is pinned at your quota rather than at 100% of the visible vCPUs. That combination \u2014 high pressure, utilization capped below total capacity \u2014 is the signature of throttling rather than contention.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Benchmarking Burst Behavior Deliberately<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Measure the burst and the baseline separately. Start with a 60-second full-throttle run: <code>sysbench cpu --threads=$(nproc) --time=60 run<\/code>, which should show near-linear scaling if credits are full. Then run for 45 minutes and plot events per second in 60-second buckets. A healthy burstable instance shows a plateau, then a step down to a stable baseline level; the time to the step is your effective burst duration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run the long test after a period of idleness so credits start full, and again immediately after the first run so they start depleted. The difference between the two curves is the entire value proposition of the plan, quantified. Record <code>cat \/sys\/fs\/cgroup\/cpu.stat<\/code> before and after each run to confirm throttling occurred where the curve steps down, ruling out thermal or hypervisor explanations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Workloads That Fit Burstable Plans<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Burstable plans suit workloads with low mean utilization and short peaks: HTTP APIs with traffic concentrated in a few hours, scheduled batch jobs that run briefly, CI workers that are idle between builds, and staging environments. The common property is that the peak is short relative to the time available to replenish credits, and that degradation during throttling is acceptable because it happens during low-value periods.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A concrete test: model your workload as peak CPU-seconds per hour and compare it against the plan&#8217;s baseline capacity. A 2-vCPU plan at 20% baseline produces about 1440 CPU-seconds of continuous capacity per hour, with a burst ceiling far above that. If your hourly demand peaks below 1000 CPU-seconds, the plan fits with margin. If it exceeds the baseline for several consecutive hours, you are borrowing against credits you cannot repay.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Workloads That Should Not Use Credits<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sustained workloads are the wrong fit: databases under continuous load, media transcoding, compile farms, game servers with steady tick rates, and anything with a latency SLO. A database on a burstable plan behaves well during warm-up and degrades precisely when a long analytical query or a vacuum needs CPU, which is the worst possible correlation. Throttling does not fail requests cleanly; it stretches them, which turns into lock timeouts and retries that amplify the original load.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The diagnostic signature is p99 latency tracking the credit balance: stable during the morning, degrading through the afternoon, recovering after a quiet period. If <code>throttled_usec<\/code> correlates with your slow-request log, the plan is structurally wrong for the workload regardless of how much headroom the CPU graph appears to show.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Designing Around a Burst Ceiling<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you stay on a burstable plan, shape the workload to conserve credits. Pin batch jobs away from peak hours using <code>systemd<\/code> timers with <code>RandomizedDelaySec<\/code> and <code>Nice=10<\/code>, and cap them with <code>CPUQuota=50%<\/code> in the unit file so a single job cannot drain the balance. Move long-running work to a queue with rate limiting rather than firing it inline with requests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reduce CPU per request so the baseline goes further: enable opcache for PHP, use <code>worker_processes<\/code> sized to baseline rather than burst capacity, and cache aggressively at the edge. A 30% reduction in per-request CPU is equivalent to a 40% larger baseline, and it is usually cheaper than moving up a plan tier. Track requests-per-CPU-second as your primary efficiency metric rather than raw throughput.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monitoring for Silent Throttling<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Throttling is invisible on a naive CPU graph because utilization simply plateaus below capacity. Alert on <code>rate(container_cpu_cfs_throttled_seconds_total[5m])<\/code> or the cgroup v2 equivalent rather than on utilization, and pair it with pressure stall information: <code>node_pressure_cpu_waiting_seconds_total<\/code> for <code>some<\/code> rising while utilization is flat is the definitive signal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also monitor the ratio of achieved throughput to offered load. If request rate is constant but response time grows steadily over hours, you have a capacity decay pattern that matches credit exhaustion, and no amount of application tuning will fix it. The <a href=\"https:\/\/virtualserversvps.com\/managed-vs-unmanaged\/\">managed versus unmanaged<\/a> decision affects who watches these counters, but not what they mean.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When to Move to Sustained or Dedicated CPU<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Move when any of three conditions holds: throttling occurs during your defined business hours, sustained load exceeds 60% of baseline for more than four hours per day, or a latency SLO applies to the workload. At that point a fixed-CPU or dedicated-core plan costs more per hour but delivers predictable scheduling, and the migration is usually cheaper than the engineering time spent tuning around credits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before migrating, re-baseline with the same 45-minute sustained test and confirm the new plan holds throughput flat for the full duration with <code>throttled_usec<\/code> staying at zero. A plan that removes core contention but keeps a cgroup CPU quota will show the same curve after a few hours, just with a different label.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary: Match Duty Cycle to Baseline<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Burstable plans are a financing mechanism for idle time. They work when your duty cycle is well under the baseline ratio and your peaks are short and replenishable, and they fail when demand is sustained or latency-sensitive. Measure the burst curve and the throttle counters directly, size the workload to baseline rather than burst, and treat a rising <code>throttled_usec<\/code> during business hours as a migration signal rather than something to tune around.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Burstable VPS plans decouple the CPU you can consume for short periods from the CPU you pay for continuously. A plan advertised as &#8220;4 vCPU burstable&#8221; may guarantee only 20%&#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-1635","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>CPU Credits and Burstable VPS Plans: Burst vs Sustained Load - Virtual Servers VPS Blog<\/title>\n<meta name=\"description\" content=\"Burstable VPS plans decouple the CPU you can consume for short periods from the CPU you pay for continuously. A plan advertised as &quot;4 vCPU burstable&quot; may\" \/>\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\/vps-cpu-credit-burst-vs-sustained\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load\" \/>\n<meta property=\"og:description\" content=\"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-07T22:38:57+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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/\",\"name\":\"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-11-07T22:38:57+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"description\":\"Burstable VPS plans decouple the CPU you can consume for short periods from the CPU you pay for continuously. A plan advertised as \\\"4 vCPU burstable\\\" may\",\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load\"}]},{\"@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":"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load - Virtual Servers VPS Blog","description":"Burstable VPS plans decouple the CPU you can consume for short periods from the CPU you pay for continuously. A plan advertised as \"4 vCPU burstable\" may","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\/vps-cpu-credit-burst-vs-sustained\/","og_locale":"en_US","og_type":"article","og_title":"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load","og_description":"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load","og_url":"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-11-07T22:38:57+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/","url":"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/","name":"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-11-07T22:38:57+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"description":"Burstable VPS plans decouple the CPU you can consume for short periods from the CPU you pay for continuously. A plan advertised as \"4 vCPU burstable\" may","breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/vps-cpu-credit-burst-vs-sustained\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CPU Credits and Burstable VPS Plans: Burst vs Sustained Load"}]},{"@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\/1635","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=1635"}],"version-history":[{"count":1,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1635\/revisions"}],"predecessor-version":[{"id":1636,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1635\/revisions\/1636"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=1635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=1635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=1635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}