{"id":1348,"date":"2026-10-09T22:35:15","date_gmt":"2026-10-09T22:35:15","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=1348"},"modified":"2026-10-09T22:35:15","modified_gmt":"2026-10-09T22:35:15","slug":"diagnosing-sustained-disk-write-amplification-vps","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/","title":{"rendered":"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A VPS that does nothing but still lights up its disk I\/O counter is a common and frustrating problem. The writes are real, but the process responsible usually is not the one you would guess. This article walks through a systematic method to trace sustained write amplification to its source, and discusses where a self-hosted monitoring and uptime stack helps versus where it simply adds its own write load.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">First: Quantify, Don&#8217;t Panic<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start with the per-device and per-process counters. The goal is to separate genuine application writes from filesystem-level amplification, where one logical write becomes several physical writes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># device-level: sectors written per second\niostat -x 2 5 | grep -E 'Device|vda|vdb|nvme'\n\n# per-process write throughput (needs sysstat \/ pidstat)\npidstat -d 2 5\n\n# per cgroup (systemd services)\nsystemd-cgtop -m\n\n# biggest writers in the last interval\npidstat -d 1 1 | sort -k5 -rn | head<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>iostat<\/code> shows what the device is doing; <code>pidstat -d<\/code> shows who is doing it. If device writes vastly exceed the sum of process writes, the amplification is below the process layer (filesystem, journal, or the hypervisor). If process writes match device writes, you are looking at an application problem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common Sources of Amplification<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Source<\/th><th>Symptom<\/th><th>Fix<\/th><\/tr><\/thead><tbody><tr><td>systemd journal without limits<\/td><td>journald writing MB\/min steadily<\/td><td>Set SystemMaxUse, Storage=volatile or rate-limit<\/td><\/tr><tr><td>fsync-heavy databases<\/td><td>Small logical writes, large physical<\/td><td>Tune commit interval, batch fsync<\/td><\/tr><tr><td>atime updates<\/td><td>Reads cause writes<\/td><td>Mount with noatime<\/td><\/tr><tr><td>Log rotation storms<\/td><td>Periodic write bursts at fixed times<\/td><td>Stagger cron, tune logrotate size<\/td><\/tr><tr><td>Snapshots \/ CoW<\/td><td>Write = old block + new block<\/td><td>Prune snapshots, reconsider CoW<\/td><\/tr><tr><td>Monitoring agents<\/td><td>Constant small writes to local TSDB<\/td><td>Reduce scrape frequency or store remotely<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Journal Is Usually Guilty<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On a quiet VPS, an unbounded journald is one of the most frequent culprits. A chatty unit logs tens of thousands of lines an hour, journald fsyncs them to disk, and the underlying filesystem may write a metadata block for each. Cap it and, if you have remote log shipping, store volatily:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/systemd\/journald.conf\nSystemMaxUse=200M\nSystemKeepFree=500M\nRateLimitIntervalSec=30s\nRateLimitBurst=1000\n\n# find the loudest units\njournalctl --since '1 hour ago' | awk '{print $5}' | sort | uniq -c | sort -rn | head<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Isolate With eBPF When pidstat Isn&#8217;t Enough<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If process-level accounting is inconclusive, trace the actual write syscalls. <code>biosnoop<\/code> and <code>biolatency<\/code> from bcc give per-I\/O latency and the owning process without modifying your application.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>biosnoop -d vda            # who issues each block write\nbiolatency -D               # I\/O latency distribution\next4slower 1                # slow ext4 operations with pid\n# btrfs variant\nbtrfsslower 1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Run these for 60 seconds under normal load. A file showing up repeatedly in <code>ext4slower<\/code> output with high latency and small size is your amplification hot spot; the process id in the output tells you which unit to tune.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where Monitoring Fits In<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Self-hosted monitoring stacks (Prometheus + node_exporter + Grafana, or a lighter pairing like Netdata) are excellent at showing you the shape of the problem over time: the write rate curve, its periodicity, and its correlation with deploys or cron windows. They are much worse on a tiny VPS if you let them store their time-series data locally on the same disk you are trying to protect.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical rules: keep retention short (7-15 days) on small instances, use the remote-write feature to push metrics off-box, and never let the monitoring agent&#8217;s own local storage become a top-three writer. Check <code>pidstat -d<\/code> after adding any agent; if it appears in the top writers, reduce its scrape or flush interval before you do anything else.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Repeatable Diagnostic Order<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Confirm the write rate and its periodicity with <code>iostat -x<\/code>.<\/li><li>Attribute it to processes with <code>pidstat -d<\/code> and <code>systemd-cgtop<\/code>.<\/li><li>If attribution fails, trace with <code>biosnoop<\/code>\/<code>ext4slower<\/code>.<\/li><li>Check filesystem-level factors: mount options, journald limits, snapshots.<\/li><li>Only then add or tune monitoring, and verify it is not itself a writer.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Getting the baseline right also influences plan sizing. Sustained writes that keep the disk busy more than a few percent of the time usually mean the workload or the volume is undersized, and the capacity tradeoffs are covered in the <a href=\"https:\/\/virtualserversvps.com\/cloud-vps-benefits\">cloud VPS benefits overview<\/a>. If you decided to run this stack yourself rather than have it managed, the operational split is spelled out in the <a href=\"https:\/\/virtualserversvps.com\/managed-vs-unmanaged\">managed versus unmanaged comparison<\/a>. Fixing the amplification source first is what makes any monitoring worth reading.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>A VPS that does nothing but still lights up its disk I\/O counter is a common and frustrating problem. The writes are real, but the process responsible usually is not&#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":[1],"tags":[],"class_list":["post-1348","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>Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring) - Virtual Servers VPS Blog<\/title>\n<meta name=\"description\" content=\"A VPS that does nothing but still lights up its disk I\/O counter is a common and frustrating problem. The writes are real, but the process responsible\" \/>\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\/diagnosing-sustained-disk-write-amplification-vps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)\" \/>\n<meta property=\"og:description\" content=\"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-09T22:35:15+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=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/\",\"name\":\"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring) - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-10-09T22:35:15+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"description\":\"A VPS that does nothing but still lights up its disk I\/O counter is a common and frustrating problem. The writes are real, but the process responsible\",\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)\"}]},{\"@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":"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring) - Virtual Servers VPS Blog","description":"A VPS that does nothing but still lights up its disk I\/O counter is a common and frustrating problem. The writes are real, but the process responsible","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\/diagnosing-sustained-disk-write-amplification-vps\/","og_locale":"en_US","og_type":"article","og_title":"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)","og_description":"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)","og_url":"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-10-09T22:35:15+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/","url":"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/","name":"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring) - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-10-09T22:35:15+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"description":"A VPS that does nothing but still lights up its disk I\/O counter is a common and frustrating problem. The writes are real, but the process responsible","breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/diagnosing-sustained-disk-write-amplification-vps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Diagnosing Sustained Disk-Write Amplification on a VPS (and When to Add Monitoring)"}]},{"@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\/1348","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=1348"}],"version-history":[{"count":1,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1348\/revisions"}],"predecessor-version":[{"id":1349,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1348\/revisions\/1349"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=1348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=1348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=1348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}