{"id":637,"date":"2026-07-17T21:45:09","date_gmt":"2026-07-17T21:45:09","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=637"},"modified":"2026-08-01T22:13:35","modified_gmt":"2026-08-01T22:13:35","slug":"how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/","title":{"rendered":"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Most VPS monitoring guides hand you a list of every metric that exists and call it a day. The result is dashboards full of green lines that tell you nothing until the site is already down. This guide takes the opposite approach: here are the specific CPU, RAM, and disk metrics that <em>predict<\/em> problems on a small virtual server, the exact commands to read them, and the thresholds that should make you act. Start with a <a href=\"https:\/\/virtualserversvps.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">VPS plan that gives you room to monitor<\/a> \u2014 resource ceilings on tiny instances make every threshold tighter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CPU: Ignore Load Average, Watch Steal and iowait<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On a VPS, plain CPU utilization is the least useful number. Two metrics matter far more:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>%steal<\/strong> \u2014 time your vCPU waits while the hypervisor runs other tenants. Consistently above 5\u201310% means noisy neighbors; above 20% means your &#8220;guaranteed&#8221; CPU is fiction.<\/li><li><strong>%iowait<\/strong> \u2014 time the CPU waits on disk. Above 10\u201315% sustained, your bottleneck is storage, not compute.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># One-shot view (top line: us, sy, wa, st)\ntop -bn1 | head -5\n\n# Continuous view, 5-second samples\nmpstat -P ALL 5\n\n# Or vmstat: 'wa' = iowait, 'st' = steal (last two columns)\nvmstat 5<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Load average deserves a special warning: on a 2 vCPU instance, a load of 4.0 sounds alarming but is often just a few threads in a brief syscall storm. Always cross-check load against <code>%steal<\/code> and runnable thread count (<code>procs r<\/code> in vmstat) before panicking.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">RAM: The available Column Is the Only Truth<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As covered in memory tuning, <code>free<\/code> will mislead you \u2014 Linux fills unused RAM with page cache by design. The metric that matters is <code>available<\/code>, and the metric that predicts OOM kills is <code>si<\/code>\/<code>so<\/code> (swap in\/out) in vmstat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>free -h\n# available should stay above ~10-15% of total for comfort\n\nvmstat 5\n# si\/so columns: sustained nonzero swap-in (si) = thrashing<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Set your alert at: <code>available &lt; 10%<\/code> of total RAM for 5+ minutes, or any sustained swap-in activity. That combo is the classic precursor to an OOM kill on a 1\u20132 GB instance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Disk: Latency Beats Utilization<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Disk <code>%util<\/code> on a cloud VPS is frequently 100% even when nothing is wrong \u2014 many providers&#8217; virtual disks report the host queue as saturated. The numbers that reflect your actual experience are <code>await<\/code> and <code>svctm<\/code>-style latency from iostat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>iostat -x 5\n\n# Read: %util, await (ms), and w_await\n# Healthy SSD-backed VPS: await under ~10-20 ms under load\n# NVMe-backed: under ~2-5 ms\n# Sustained await above 50 ms = real storage bottleneck<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Also watch <code>iostat<\/code> for the ratio of reads to writes. A database box with 90% reads should be tuned differently (more cache, read-ahead) than one with 90% writes (bigger journal, different scheduler).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Put It on a Dashboard with Netdata<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Manual commands are fine for diagnosis, but you need history to spot trends. Netdata is the fastest way to get a real-time dashboard on a small VPS \u2014 it installs in one command, uses ~100 MB RAM, and surfaces exactly the metrics above with sane defaults:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -Ss https:\/\/get.netdata.cloud | sh\nsudo systemctl enable --now netdata\n# Dashboard: http:\/\/YOUR_VPS_IP:19999\n# Metrics: cpu.steal, cpu.iowait, mem.available, disk.await<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For alerting without another daemon, a cron job plus curl to a webhook is enough to start \u2014 the goal is a page when <code>%steal<\/code> or <code>await<\/code> breaches your threshold, not a prettier graph.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Thresholds Cheat Sheet<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Command<\/th><th>Act when<\/th><\/tr><\/thead><tbody><tr><td>CPU steal<\/td><td><code>mpstat -P ALL 5<\/code><\/td><td>&gt; 10% sustained<\/td><\/tr><tr><td>CPU iowait<\/td><td><code>vmstat 5<\/code><\/td><td>&gt; 15% sustained<\/td><\/tr><tr><td>Memory available<\/td><td><code>free -h<\/code><\/td><td>&lt; 10% of total<\/td><\/tr><tr><td>Swap-in activity<\/td><td><code>vmstat 5<\/code> (si)<\/td><td>any sustained value<\/td><\/tr><tr><td>Disk await<\/td><td><code>iostat -x 5<\/code><\/td><td>&gt; 20 ms (SSD), &gt; 50 ms (any)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What the Metrics Tell You About Your Plan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s the part most monitoring guides skip: your metrics are also a report card for your provider. Chronic <code>%steal<\/code> means the host is oversubscribed \u2014 no guest tuning fixes it, and the fix is a provider with dedicated cores or better overcommit ratios. Persistent <code>await<\/code> over 20 ms on an &#8220;SSD&#8221; plan means the storage tier isn&#8217;t what you paid for. When your dashboard says the plan is the problem, <a href=\"https:\/\/virtualserversvps.com\/#providers\" target=\"_blank\" rel=\"noreferrer noopener\">compare VPS providers on our comparison table<\/a> to see real CPU models and storage types side by side before spending another month on a contended host.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If monitoring keeps flagging the same bottleneck and you want infrastructure where those thresholds are rarely hit, <a href=\"https:\/\/interserver.net\/vps?id=1067805&amp;sid=virtualserversvps\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">InterServer&#8217;s VPS plans<\/a> include dedicated-core options that eliminate steal entirely. Prefer managed so the platform handles this monitoring for you? <a href=\"https:\/\/cloudways.com\/en\/?id=2010927&amp;data1=virtualserversvps\" target=\"_blank\" rel=\"noreferrer noopener sponsored\">Cloudways plans<\/a> ship with built-in server monitoring and alerts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stop watching every graph. Track steal, iowait, available memory, swap-in, and disk await; alert on the thresholds above; and let the data tell you whether the fix is a config change or a provider change. That&#8217;s the difference between monitoring that fills dashboards and monitoring that prevents outages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Minimal Alert Script to Start With<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before you stand up a full alerting stack, a 10-line cron job catches the emergencies. This one checks CPU steal and available RAM and fires a webhook when thresholds are breached \u2014 adapt the URL to Slack, Telegram, or a simple mail command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# \/usr\/local\/bin\/vps-health-check.sh \u2014 run every 5 min via cron\nSTEAL=$(mpstat 1 1 | awk '\/Average\/ {print $NF}')\nAVAIL=$(free -m | awk '\/^Mem:\/ {print $7}')\nif (( $(echo \"$STEAL > 10\" | bc -l) )) || (( AVAIL < 200 )); then\n  curl -fsS -X POST -H 'Content-Type: application\/json' \\\n    -d \"{\\\"text\\\":\\\"VPS alert: steal=${STEAL}% avail=${AVAIL}MB\\\"}\" \\\n    https:\/\/hooks.example.com\/YOUR_WEBHOOK\nfi<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add it to cron with <code>*\/5 * * * * \/usr\/local\/bin\/vps-health-check.sh<\/code> and you have actionable alerting in five minutes \u2014 no agent, no dashboards, no monthly fee. Upgrade to Netdata or Prometheus when the single-host script stops being enough.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Most VPS monitoring guides hand you a list of every metric that exists and call it a day. The result is dashboards full of green lines that tell you nothing&#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":2,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-637","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>VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages - 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\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages\" \/>\n<meta property=\"og:description\" content=\"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-17T21:45:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-01T22:13: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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/\",\"name\":\"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-07-17T21:45:09+00:00\",\"dateModified\":\"2026-08-01T22:13:35+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages\"}]},{\"@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":"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages - 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\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/","og_locale":"en_US","og_type":"article","og_title":"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages","og_description":"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages","og_url":"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-07-17T21:45:09+00:00","article_modified_time":"2026-08-01T22:13:35+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\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/","url":"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/","name":"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-07-17T21:45:09+00:00","dateModified":"2026-08-01T22:13:35+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/how-to-monitor-vps-performance-cpu-ram-and-disk-io-explained\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"VPS Monitoring: The 5 CPU, RAM, and Disk Metrics That Predict Outages"}]},{"@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\/637","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=637"}],"version-history":[{"count":3,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/637\/revisions"}],"predecessor-version":[{"id":774,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/637\/revisions\/774"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=637"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=637"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}