Linux’ta Disk IO Performansını Ölçme ve Optimizasyon Teknikleri
Linux’ta Disk IO Performansını Ölçme ve Optimizasyon Teknikleri
Linux tabanlı sunucularda sistem performansını belirleyen en kritik metriklerden biri Disk IO (Input/Output) hızıdır. Disk IO gecikmeleri, yüksek CPU kullanımına ve yavaş uygulama yanıt sürelerine neden olabilir. Bu makalede, Linux ortamlarında disk IO performansını doğru şekilde ölçmek, darboğazları tespit etmek ve sistem düzeyinde optimizasyon yapmak için profesyonel yöntemleri inceleyeceğiz.
- Disk IO Nedir?
- IO Performansını Ölçmek İçin Yaygın Araçlar
- 1) iostat (sysstat paketi)
- 2) dd Komutu
- 3) fio (Flexible IO Tester)
- Darboğaz Belirleme: iotop ve vmstat
- Disk IO Optimizasyonu İçin Temel Teknikler
- 1) Dosya Sistemi Seçimi
- 2) IO Scheduler Ayarları
- 3) Swap Kullanımını Optimize Etmek
- 4) Noatime Bayrağını Aktifleştirmek
- SSD ve NVMe İçin Ek Ayarlar
- Önbellekleme ve Katmanlı Çözümler
- Gerçek Zamanlı İzleme: ioping ve dstat
- Performans Testi Sonuçlarını Yorumlamak
- Kurumsal Ölçekli IO Yönetimi
- Sonuç
Disk IO Nedir?
Disk IO, depolama birimlerinin (SSD/HDD/NVMe) veri okuma ve yazma hızlarını tanımlar. IO performansı, milisaniye düzeyindeki gecikmelerin bile önemli olduğu veritabanı veya web sunucusu gibi sistemlerde kritik öneme sahiptir. IO yavaşsa, uygulama yanıt süreleri ve işlemci verimliliği doğrudan etkilenir.
IO Performansını Ölçmek İçin Yaygın Araçlar
1) iostat (sysstat paketi)
iostat, disk ve CPU istatistiklerini anlık olarak izler. Kullanım örneği:
sudo apt install sysstat -y iostat -x 2 5
Çıktıda await ve util% değerleri yüksekse, disk gecikmeleri veya aşırı yük olabilir.
2) dd Komutu
Basit okuma/yazma testi için idealdir:
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=dsync
Bu test, disk yazma hızını MB/s cinsinden gösterir. Ancak önbellek etkilerini hesaba katmadığından sadece kaba bir ölçümdür.
3) fio (Flexible IO Tester)
fio, profesyonel düzeyde IO test aracıdır:
sudo apt install fio -y fio --name=seqwrite --rw=write --bs=1M --size=1G --numjobs=4 --runtime=60s --group_reporting
Rastgele ve sıralı IO testleriyle SSD veya NVMe performansını doğru şekilde ölçebilirsiniz.
Darboğaz Belirleme: iotop ve vmstat
iotop ile hangi işlemlerin diski yoğun kullandığını izleyebilirsiniz:
sudo iotop -ao
vmstat ise genel sistem IO yükünü, swap kullanımını ve bekleyen işlemleri gösterir:
vmstat 2 10
Yüksek wa (I/O wait) değeri, CPU’nun disk beklediğini gösterir.
Disk IO Optimizasyonu İçin Temel Teknikler
1) Dosya Sistemi Seçimi
Yüksek performanslı sistemlerde ext4 yerine XFS veya btrfs tercih edilebilir. Büyük dosya transferlerinde XFS, küçük dosya operasyonlarında ise ext4 daha dengelidir.
2) IO Scheduler Ayarları
Modern çekirdeklerde mq-deadline veya none scheduler en iyi sonucu verir:
cat /sys/block/sda/queue/scheduler echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
SSD ve NVMe disklerde none genellikle önerilir.
3) Swap Kullanımını Optimize Etmek
Disk IO’yu azaltmak için swappiness değerini düşürün:
sudo sysctl vm.swappiness=10
Kalıcı hale getirmek için /etc/sysctl.conf dosyasına ekleyin.
4) Noatime Bayrağını Aktifleştirmek
Dosya erişim zaman damgası yazımını devre dışı bırakmak için:
sudo nano /etc/fstab # Örnek satır: UUID=xxxx-xxxx / ext4 defaults,noatime 0 1
Bu ayar disk yazma yükünü azaltır.
SSD ve NVMe İçin Ek Ayarlar
- TRIM desteğini kontrol edin:
sudo fstrim -v / - Disk hizalamasını doğrulayın:
sudo fdisk -l - Yazma birleştirme (write-combining) aktif olmalı.
Önbellekleme ve Katmanlı Çözümler
- bcache veya dm-cache kullanarak SSD’yi HDD önbelleği olarak yapılandırabilirsiniz.
- RAM disk (tmpfs) geçici dosyalar için performansı ciddi şekilde artırır.
- Redis veya Memcached uygulama düzeyinde IO’yu azaltır.
Gerçek Zamanlı İzleme: ioping ve dstat
ioping, ping benzeri disk gecikme ölçümü yapar:
ioping -c 10 /var/www
dstat ise IO, CPU, RAM ve network istatistiklerini tek ekranda sunar.
Performans Testi Sonuçlarını Yorumlamak
await süresi 5 ms’nin altında, util% %80’den düşük olmalıdır. NVMe disklerde 1 ms altı gecikme normaldir. Bekleme süreleri yükseliyorsa, sistem IO sınırlamasına ulaşmıştır.
Kurumsal Ölçekli IO Yönetimi
Büyük sistemlerde IO darboğazlarını gidermek için RAID 10 yapısı veya NVMe tabanlı Premium VDS seçenekleri idealdir. Ayrıca, Sunucu Barındırma hizmetleri, IO optimizasyonu için donanımsal RAID kontrolcüleri ve yüksek IOPS disklerle daha kararlı bir performans sağlar.
Sonuç
Linux Disk IO optimizasyonu, sadece hız değil, sistem kararlılığı açısından da önemlidir. Ölçüm araçlarını düzenli kullanmak, scheduler ve filesystem ayarlarını sistem türüne göre optimize etmek, uzun vadede veri erişim sürelerini ciddi biçimde azaltır. Yüksek performanslı bir yapı için HostLigo altyapı çözümleri ile VDS, RAID ve NVMe temelli sistemler tercih edilebilir.