{"id":496,"date":"2026-06-23T06:51:42","date_gmt":"2026-06-23T06:51:42","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=496"},"modified":"2026-06-24T02:40:51","modified_gmt":"2026-06-24T02:40:51","slug":"vps-ssd-trim-maintenance-nvme-2","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/","title":{"rendered":"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Why Disk I\/O Performance Matters on a VPS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Storage I\/O is often the most contended resource on a virtual private server. While CPU and RAM are typically dedicated to your instance, disk I\/O is shared across the hypervisor&#8217;s storage subsystem. Poor I\/O performance leads to slow database queries, laggy web applications, and extended deployment times. This guide walks you through benchmarking your VPS disk I\/O with industry-standard tools, interpreting the results, and applying optimizations that make a measurable difference.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The first step in any optimization journey is understanding your baseline. The quality of underlying storage varies significantly between VPS providers \u2014 those using NVMe with low oversubscription deliver dramatically better I\/O than older SATA SSD or HDD setups. Compare providers with transparent storage specs at <a href=\"https:\/\/virtualserversvps.com\/#providers\">virtualserversvps.com<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Benchmarking Tools: fio, hdparm, and dd<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. fio \u2014 The Gold Standard<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>fio<\/code> (Flexible I\/O Tester) is the most comprehensive disk benchmarking tool available for Linux. It supports customizable I\/O patterns, queue depths, block sizes, and concurrency. Install it with <code>sudo apt install fio<\/code> and run these essential tests:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Random 4K reads (IOPS test):<\/strong><br><code>fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Random 4K writes (IOPS test):<\/strong><br><code>fio --name=randwrite --ioengine=libaio --iodepth=32 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sequential 1M reads (throughput test):<\/strong><br><code>fio --name=seqread --ioengine=libaio --iodepth=16 --rw=read --bs=1m --direct=1 --size=4G --numjobs=2 --runtime=60 --group_reporting<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sequential 1M writes (throughput test):<\/strong><br><code>fio --name=seqwrite --ioengine=libaio --iodepth=16 --rw=write --bs=1m --direct=1 --size=4G --numjobs=2 --runtime=60 --group_reporting<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Interpreting fio Results<\/h3>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Metric<\/th><th>Good (NVMe)<\/th><th>Fair (SATA SSD)<\/th><th>Poor (HDD)<\/th><\/tr><\/thead><tbody><tr><td>4K random read IOPS<\/td><td>&gt;50,000<\/td><td>10,000\u201350,000<\/td><td>&lt;500<\/td><\/tr><tr><td>4K random write IOPS<\/td><td>&gt;30,000<\/td><td>5,000\u201330,000<\/td><td>&lt;300<\/td><\/tr><tr><td>1M sequential read (MB\/s)<\/td><td>&gt;1,000<\/td><td>300\u20131,000<\/td><td>&lt;150<\/td><\/tr><tr><td>1M sequential write (MB\/s)<\/td><td>&gt;500<\/td><td>200\u2013500<\/td><td>&lt;100<\/td><\/tr><tr><td>Latency (4K random, \u00b5s)<\/td><td>&lt;200<\/td><td>200\u20131,000<\/td><td>&gt;5,000<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. hdparm \u2014 Quick Cache\/Transfer Tests<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>hdparm<\/code> provides a quick buffered and cached read speed test. It&#8217;s useful for a rapid sanity check but doesn&#8217;t measure random I\/O or write performance, so take results with a grain of salt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>sudo hdparm -Tt \/dev\/vda<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>-T<\/code> flag tests cached reads (RAM speed), and <code>-t<\/code> tests buffered disk reads. On NVMe VPS, expect <code>-t<\/code> results above 500 MB\/s. Values below 200 MB\/s suggest SATA SSD or significant hypervisor contention.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. dd \u2014 Simple Sequential Test<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The classic <code>dd<\/code> command can give a rough sequential throughput estimate. While not as precise as fio, it&#8217;s available on every Linux system:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Write test:<\/strong><br><code>dd if=\/dev\/zero of=.\/test bs=1M count=4096 conv=fdatasync status=progress<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Read test:<\/strong><br><code>dd if=.\/test of=\/dev\/null bs=1M status=progress<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note: <code>dd<\/code> only measures sequential access. A provider with fast sequential reads but terrible random IOPS (common on shared HDD arrays) will look good in dd benchmarks but perform poorly under real database workloads.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Optimizing Disk I\/O on Your VPS<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Choose the Right I\/O Scheduler<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The I\/O scheduler determines how the kernel orders and batches disk requests. For NVMe drives, the <code>none<\/code> scheduler (multi-queue block layer) offers the lowest latency. For SATA SSDs, <code>mq-deadline<\/code> provides a good balance. Check your current scheduler with <code>cat \/sys\/block\/vda\/queue\/scheduler<\/code> and change it temporarily with <code>echo none | sudo tee \/sys\/block\/vda\/queue\/scheduler<\/code>. Make it permanent via <code>GRUB_CMDLINE_LINUX=\"elevator=none\"<\/code> in <code>\/etc\/default\/grub<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Filesystem Selection and Mount Options<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ext4<\/strong> is the default choice for most Linux VPS images. It&#8217;s stable, widely supported, and offers good performance with <code>noatime<\/code> mount option to disable access time updates. Add <code>defaults,noatime<\/code> to your <code>\/etc\/fstab<\/code> mount options.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>XFS<\/strong> excels at large files and parallel I\/O. It&#8217;s the default on RHEL\/CentOS 8+ and offers better performance for workloads with many concurrent writers. Use mount options <code>defaults,noatime,allocsize=1m<\/code> for database workloads.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>btrfs<\/strong> with Zstd compression can improve effective throughput for compressible data (text files, logs, source code). Use <code>compress=zstd:3<\/code> mount option. However, btrfs has higher CPU overhead and is less battle-tested than ext4\/XFS on VPS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Tune the Block Layer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Several sysctl parameters affect I\/O performance. The most impactful are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>vm.dirty_ratio<\/code> \u2014 Set to 20 (default 30) to reduce writeback buffering<\/li>\n<li><code>vm.dirty_background_ratio<\/code> \u2014 Set to 5 (default 10) to start writeback earlier<\/li>\n<li><code>vm.dirty_expire_centisecs<\/code> \u2014 Set to 3000 (default 30000) to flush dirty pages faster<\/li>\n<li><code>vm.vfs_cache_pressure<\/code> \u2014 Set to 200 (default 100) to reclaim dentry\/inode caches more aggressively<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Database-Specific Optimizations<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If your VPS runs MySQL or PostgreSQL, these additional I\/O optimizations apply:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set <code>innodb_flush_method=O_DIRECT<\/code> (MySQL) to bypass the page cache<\/li>\n<li>Increase <code>innodb_io_capacity<\/code> to 2000+ for NVMe (default 200)<\/li>\n<li>Set <code>effective_io_concurrency=200<\/code> (PostgreSQL) for NVMe<\/li>\n<li>Place database WAL\/logs on a separate disk if possible<\/li>\n<li>Use <code>discard=async<\/code> mount option instead of periodic fstrim for TRIM<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5. Monitor I\/O Pressure<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use <code>iostat -x 1<\/code> to monitor <code>await<\/code> (average I\/O response time) and <code>%util<\/code> (percentage of time the device was busy). Values above 10ms await or 90% util indicate I\/O saturation. For deeper insight, use <code>\/proc\/pressure\/io<\/code> (Pressure Stall Information) which shows the percentage of time processes were stalled on I\/O:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>cat \/proc\/pressure\/io<\/code> \u2014 look at the <code>full<\/code> line. If avg60 exceeds 10%, your system is under significant I\/O pressure.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Benchmarking your VPS disk I\/O with fio gives you an objective baseline, while optimizations like the right I\/O scheduler, filesystem choices, and kernel parameters can improve real-world performance by 20-40%. Remember that the most impactful factor is the underlying hardware \u2014 a VPS on NVMe with dedicated resources will always outperform shared SATA storage regardless of software tuning. For providers that offer transparent storage specifications, compare options at <a href=\"https:\/\/virtualserversvps.com\/#providers\">virtualserversvps.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Why Disk I\/O Performance Matters on a VPS Storage I\/O is often the most contended resource on a virtual private server. While CPU and RAM are typically dedicated to your&#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":1,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-496","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 Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server - 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\/vps-ssd-trim-maintenance-nvme-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server\" \/>\n<meta property=\"og:description\" content=\"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-23T06:51:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-24T02:40:51+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\/vps-ssd-trim-maintenance-nvme-2\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/\",\"name\":\"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-06-23T06:51:42+00:00\",\"dateModified\":\"2026-06-24T02:40:51+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server\"}]},{\"@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 Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server - 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\/vps-ssd-trim-maintenance-nvme-2\/","og_locale":"en_US","og_type":"article","og_title":"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server","og_description":"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server","og_url":"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-06-23T06:51:42+00:00","article_modified_time":"2026-06-24T02:40:51+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\/vps-ssd-trim-maintenance-nvme-2\/","url":"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/","name":"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-06-23T06:51:42+00:00","dateModified":"2026-06-24T02:40:51+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/vps-ssd-trim-maintenance-nvme-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"VPS Storage Performance: How to Benchmark and Optimize Disk I\/O on Your Server"}]},{"@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\/496","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=496"}],"version-history":[{"count":2,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"predecessor-version":[{"id":502,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/496\/revisions\/502"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}