Analyzing I/O (iostat)
HolyCloud VPS performance often depends on disk I/O (local storage or NVMe). The iostat tool (sysstat package) shows throughput, utilization, and latency per device.
Prerequisites
- Linux VPS with sudo access
- Representative load (backup, SQL import, compile) to see peaks
- Storage type identification (HolyCloud panel /
lsblk)
Installation
sudo apt install -y sysstat
sudo systemctl enable --now sysstat
iostat -V
On RHEL:
sudo dnf install -y sysstat
Real-time reading
Every 2 seconds, 5 samples:
iostat -xz 2 5
Important columns (extended mode -x):
| --------- | ------------- |
|---|---|
%util |
Time the disk was busy (100% = saturation) |
r/s, w/s |
Reads / writes per second |
rkB/s, wkB/s |
Read / write throughput |
await |
Average I/O latency (ms) — critical |
avgqu-sz |
Queue depth |
If
%utilis near 100% andawaitrises (e.g. > 20 ms on NVMe), the disk is the bottleneck.
Per partition
iostat -xz 2 5 /dev/vda
df -hT
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE
On a VPS, the disk often appears as vda, sda, or nvme0n1.
History with sar
sysstat stores archives:
sar -d -f /var/log/sysstat/sa$(date +%d) | tail -30
Overnight backup activity is visible the next day.
Typical scenarios
Slow MySQL import
iostat -xz 1
# in another terminal
mysql < gros_dump.sql
If w/s and wkB/s are high with high await, prefer off-peak imports or an appropriate innodb_buffer_pool_size.
rsync backup
watch -n2 'iostat -xz 1 1 | grep -E "Device|vda|nvme"'
Active swap
vmstat 1
free -h
If si/so (swap in/out) > 0 continuously, RAM is insufficient — iostat will also show disk reads.
Compare with fio (optional)
One-off test (warning: intensive load):
sudo apt install -y fio
fio --name=randread --ioengine=libaio --rw=randread --bs=4k \
--numjobs=4 --size=256M --runtime=30 --filename=/tmp/fiotest
rm -f /tmp/fiotest
Compare results between two VPS Performance plans.
Best practices
- Measure during an incident, not only at idle.
- Note the timezone and parallel cron job (
grep CRON /var/log/sysstat). - Do not confuse high CPU and I/O: use
top,mpstatas well.
apt install -y sysstat
mpstat -P ALL 1 3
Indicative thresholds (NVMe VPS)
| ---------- | ------------------ | -------- |
|---|---|---|
await |
< 2 ms | > 10 ms sustained |
%util |
< 70% average | 100% prolonged |
avgqu-sz |
< 2 | > 10 |
Thresholds vary by workload; an OLTP database server tolerates less latency than a static site.
Troubleshooting
| ------------- | ------- |
|---|---|
| Low %util but slow app | Network, CPU, application locks |
| Huge w/s, little CPU | Logs, tmp, antivirus scan |
| Constant reads | Cold cache, missing SQL indexes |
Need help?
Provide HolyCloud support: iostat -xz 2 10 output during slowness, df -h, VPS plan, and exact incident time.