5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
Disk I/O performance is one of the most critical — and most frequently overlooked — factors in VPS performance. A VPS with fast CPU and plenty of RAM can still feel sluggish if the storage subsystem is slow. In this guide, you’ll learn how to benchmark disk performance on your VPS, what the results mean, and how to optimize read/write speeds for your specific workload.
Why Disk I/O Matters
Every operation on your VPS that touches the filesystem — loading a web page, querying a database, writing logs, serving media files — depends on disk I/O. Slow disk translates directly to:
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.
- Higher page load times (TTFB increases)
- Slower database queries (especially for unoptimized queries)
- Longer deployment and build times
- Poor user experience under concurrent load
In VPS hosting comparisons, disk I/O is often the differentiator between providers charging similar prices but delivering very different real-world performance.
Key Disk I/O Metrics
When measuring disk performance, focus on three primary metrics:
- Sequential Read/Write (MB/s): Measures throughput for large, contiguous file operations. Important for file transfers, backups, media streaming.
- Random Read/Write IOPS: Measures operations per second for small, random access patterns. Critical for databases, web servers, and application workloads.
- Latency (ms): The time it takes for a single I/O operation to complete. Low latency is essential for real-time applications.
How to Measure Disk Performance on Your VPS
Here’s a practical benchmarking workflow using standard Linux tools:
1. Sequential I/O with dd
The classic quick test:
# Sequential write test (1 GB file)
dd if=/dev/zero of=./test bs=1M count=1024 conv=fdatasync
# Sequential read test
dd if=./test of=/dev/null bs=1M count=1024
While dd gives a rough estimate, it doesn’t account for caching or queue depth. Use it only as a quick sanity check.
2. Comprehensive Benchmarking with fio
fio is the industry standard for disk benchmarking. Install it with your package manager, then run these tests:
# Install fio
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # CentOS/RHEL
# Sequential read test
fio --name=seqread --rw=read --bs=1M --size=1G --numjobs=1 --iodepth=1 --runtime=30
# Random 4K read (IOPS test)
fio --name=randread --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
# Random 4K write (IOPS test)
fio --name=randwrite --rw=randwrite --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=60
Interpreting results: For NVMe-backed VPS, expect 2,000+ MB/s sequential and 200K+ random IOPS. SATA SSDs typically deliver 400–500 MB/s sequential and 50K–80K IOPS.
3. Database-Specific Testing with sysbench
For database workloads, use sysbench’s fileio mode:
sysbench fileio --file-total-size=2G prepare
sysbench fileio --file-total-size=2G --file-test-mode=rndrw --time=60 run
sysbench fileio --file-total-size=2G cleanup
How to Improve Disk I/O Performance
Once you’ve measured your baseline, here are proven optimization techniques:
1. Choose the Right Filesystem
ext4 is the safe default, but for database workloads, XFS often performs better with parallel I/O. For SSDs specifically, consider f2fs (Flash-Friendly File System), which is designed for flash storage characteristics.
2. Tune Linux I/O Scheduler
For NVMe SSDs, the none scheduler delivers the lowest latency. For SATA SSDs, mq-deadline or kyber can provide better QoS under mixed workloads.
# Check current scheduler
cat /sys/block/nvme0n1/queue/scheduler
# Set to 'none' for NVMe
echo 'none' | sudo tee /sys/block/nvme0n1/queue/scheduler
3. Enable TRIM/Discard for SSDs
TRIM maintains SSD performance over time by informing the drive which blocks are unused. Enable periodic TRIM with a weekly cron job or the discard mount option.
# Enable periodic fstrim
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
4. Optimize Database Configuration
Databases are often the biggest I/O consumers. Key tuning parameters:
- InnoDB buffer pool size: Set to 70–80% of available RAM
- InnoDB flush method: Use O_DIRECT to bypass filesystem cache
- Query cache: Disable in MySQL 8.0+ (deprecated)
5. Consider a VPS with Better Storage
Sometimes, no amount of tuning can fix hardware limitations. If your VPS is on SATA SSDs and you need NVMe performance, the most cost-effective solution may be upgrading to a provider that uses enterprise NVMe storage. Compare VPS storage options at virtualserversvps.com.
Conclusion
Disk I/O performance can make or break your VPS experience. By benchmarking with tools like fio and sysbench, and applying the optimizations above, you can often achieve 2–5x improvements without changing providers. For persistent performance issues, however, the best fix is choosing a VPS plan with enterprise NVMe storage from the start.
Disclosure: Some links on this page are affiliate links. We may earn a commission at no extra cost to you if you purchase through them. Our reviews and recommendations remain independent.


Leave a Reply
You must be logged in to post a comment.