Docs / Performance Optimization / Linux Disk I/O Performance Tuning Guide

Linux Disk I/O Performance Tuning Guide

By Admin · Mar 1, 2026 · Updated Apr 23, 2026 · 25 views · 2 min read

Linux Disk I/O Performance Tuning Guide

Disk I/O is often the biggest bottleneck on a Breeze server. Tuning the I/O scheduler, filesystem settings, and kernel parameters can dramatically improve throughput and latency.

Checking Current I/O Performance

# Monitor disk I/O in real time
iostat -xz 2

# Check per-process I/O
iotop -oP

# Benchmark disk speed
fio --name=randread --ioengine=libaio --rw=randread \
    --bs=4k --numjobs=4 --size=1G --runtime=30 --time_based

I/O Scheduler Selection

Choose the right scheduler for your workload:

# Check current scheduler
cat /sys/block/sda/queue/scheduler

# For SSDs/NVMe (recommended on Breeze)
echo "none" > /sys/block/sda/queue/scheduler

# For HDDs with mixed workloads
echo "mq-deadline" > /sys/block/sda/queue/scheduler

Make persistent via /etc/udev/rules.d/60-scheduler.rules:

ACTION=="add|change", KERNEL=="sd*", ATTR{queue/scheduler}="mq-deadline"
ACTION=="add|change", KERNEL=="nvme*", ATTR{queue/scheduler}="none"

Filesystem Mount Options

Optimize your ext4 or XFS mount options in /etc/fstab:

# ext4 optimized for SSD
/dev/sda1 /data ext4 noatime,nodiratime,discard,commit=60 0 2

# XFS optimized
/dev/sdb1 /storage xfs noatime,logbufs=8,logbsize=256k 0 2

Kernel Tuning Parameters

# Reduce swappiness for database workloads
echo 10 > /proc/sys/vm/swappiness

# Increase readahead for sequential workloads
blockdev --setra 4096 /dev/sda

# Tune dirty page writeback
sysctl -w vm.dirty_ratio=15
sysctl -w vm.dirty_background_ratio=5

Key Takeaways

  • Use none scheduler for NVMe drives on Breeze instances
  • Mount with noatime to reduce unnecessary writes
  • Monitor with iostat and iotop before and after changes
  • Benchmark with fio to validate improvements

Was this article helpful?