Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Linux'ta Disk I/O Performansını Ölçmek için dd, iostat ve iotop Kullanım Kılavuzu

codrix

Üye
Katılım
14 Mart 2026
Mesajlar
47
Merhaba arkadaşlar, bugün sizlere sunucularınızın belki de en kritik bileşenlerinden biri olan disklerinizin performansını nasıl ölçebileceğinizi anlatacağım. Disk I/O (Giriş/Çıkış) yavaşlığı, web sitenizin yavaş açılmasından, veritabanı sorgularının takılmasına kadar birçok sorunun temel sebebi olabilir. Ben de kendi sunucularımda sık sık kullandığım, komut satırının bu güçlü araçlarını kullanarak disklerinizin gerçek hızını ve ne kadar yoğun çalıştığını nasıl göreceğinizi adım adım göstereceğim.

📊 Neden Disk I/O Performansı Önemli?
Sunucunuz ne kadar güçlü CPU ve ne kadar fazla RAM'e sahip olursa olsun, tüm verileriniz nihayetinde diskte saklanır. Yavaş bir disk, tüm sistemi darboğaz yapar. Örneğin, MySQL/MariaDB sunucunuz sürekli diske yazma yapıyorsa ve disk bunu kaldıramıyorsa, tüm sorgular kuyrukta beklemeye başlar. Bu rehberle, sorunun gerçekten diskten mi kaynaklandığını teşhis edebileceksiniz.

⚙️ Temel Performans Testi: dd Komutu
`dd` komutu, ham disk yazma ve okuma hızınızı ölçmek için kullanabileceğiniz basit ama etkili bir araçtır. Ancak dikkatli kullanın, yanlış parametrelerle veri kaybına neden olabilirsiniz!

Öncelikle, diskteki önbelleği (cache) devre dışı bırakarak gerçek yazma hızını ölçelim. Test için genelde geçici bir dosya oluştururuz.

Bash:
# 1 GB'lık bir dosya yazarak yazma hızını test etme (önbellek bypass edilir)
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync

# Daha küçük bloklarla daha gerçekçi bir yazma testi
dd if=/dev/zero of=/tmp/test2.img bs=128k count=1024 oflag=dsync

Şimdi de okuma hızını test edelim. Ancak önce oluşturduğumuz test dosyasını önbellekten temizlememiz gerekir, aksi takdirde önbellekten okuma yapıp yanıltıcı sonuç alırız.

Bash:
# Disk önbelleğini temizleme
sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'

# Şimdi okuma hızını test edelim
dd if=/tmp/test2.img of=/dev/null bs=128k

Bu testlerden sonra çıktıda saniyede kaç MB aktarıldığını (MB/s) göreceksiniz. Benim SSD'li sunucularımda genelde 400-500 MB/s okuma hızı görüyorum. Eğer değerler çok düşükse (örn: 50 MB/s altı), diskte bir sıkıntı olabilir.

📈 Gerçek Zamanlı İstatistik: iostat Komutu
`dd` anlık bir testti. `iostat` ise disklerinizin canlı olarak ne kadar yoğun çalıştığını, okuma/yazma oranlarını ve kullanım yüzdelerini gösterir. Çoğu sistemde `sysstat` paketi ile gelir. Kurulu değilse `sudo apt install sysstat` (Debian/Ubuntu) veya `sudo yum install sysstat` (RHEL/CentOS) ile kurabilirsiniz.

Bash:
# Tüm diskler için özet istatistik (ilk çalıştırmada sistem açılışından beri olan ortalamayı verir)
iostat

# Her 2 saniyede bir, tüm disklerin detaylı raporunu almak için:
iostat -dx 2

# Sadece belirli bir diski (örneğin sda) izlemek için:
iostat -dx sda 2

Bu komutun çıktısında özellikle şu sütunlara bakmalısınız:
%util: Diskin ne kadar meşgul olduğunu yüzde olarak gösterir. Sürekli %80-100 aralığında ise disk aşırı yüklenmiş demektir.
await: Okuma/yazma isteklerinin ortalama milisaniye cinsinden tamamlanma süresi. Yüksek değerler (örn: 20ms üzeri) diskte gecikme olduğunu gösterir.
r/s, w/s: Saniyedeki okuma ve yazma işlemi sayısı.

⚠️ Dikkat Edilmesi Gerekenler
`iostat` ile izlerken, yüksek `%util` değeri her zaman diskinizin yavaş olduğu anlamına gelmez. Örneğin SSD'lerde yüksek `%util` normal olabilir, çünkü çok hızlı işlem yaparlar. Asıl belirleyici olan await değeridir. Eğer `await` değeri düşük ama `%util` yüksekse, disk verimli çalışıyor demektir.

🔥 Süreç Bazlı Analiz: iotop Komutu
"Tamam, diskim yüksek kullanımda, peki hangi süreç bunu yapıyor?" sorusunun cevabı `iotop` komutunda. `top` komutunun disk I/O versiyonu gibi düşünebilirsiniz. Kurmak için `sudo apt install iotop` veya `sudo yum install iotop` diyebilirsiniz.

Bash:
# Süreçleri disk I/O kullanımına göre sıralayarak gerçek zamanlı göster
sudo iotop

# Sadece aktif olarak I/O yapan süreçleri göstermek için (en kullanışlı mod)
sudo iotop -o

# Okuma ve yazma hızlarını bayt/saniye cinsinden görmek için
sudo iotop -b -n 5

Bu ekranda hangi PID'li sürecin, hangi kullanıcıyla, saniyede ne kadar disk okuma/yazması yaptığını net bir şekilde görebilirsiniz. Anormal bir şekilde sürekli disk yazan bir süreç varsa (örneğin hatalı bir log yazma döngüsü), burada anında tespit edersiniz.

💎 Özet ve Pratik İpucu
Benim rutin kontrolüm genelde şu şekilde olur:
1. Sunucu genel olarak yavaşladığında önce `iostat -dx 2` ile diskin genel durumuna bakarım.
2. Eğer `%util` ve `await` yüksekse, hemen `sudo iotop -o` ile suçluyu ararım.
3. Yeni bir sunucu aldığımda veya disk değişikliği yaptığımda ise `dd` ile temel hız testini yaparım.

Bu araçlar, sistem yöneticisinin en temel teşhis araçlarındandır. Disk I/O sorunlarını çözmek, çoğu zaman sunucu performansında gözle görülür bir iyileşme sağlar.

Siz bu disk izleme işini kendi sunucularınızda nasıl yapıyorsunuz? `vmstat` veya `sar` gibi başka favori araçlarınız var mı? Ya da bu araçlarla ilgili takıldığınız bir nokta olursa, aşağıya yazmaktan çekinmeyin. Hep birlikte öğrenelim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri