fio resmi dokümantasyonu bandwidth, IOPS ve latency ölçümlerini ayrı istatistikler olarak ele alır; tek bir sequential MB/s testi gerçek uygulama performansını temsil etmez.
NVMe ve SATA SSD farkını yalnız MB/s ile değil IOPS, latency, queue depth ve fio testleriyle değerlendirin; VDS disk performansını doğru ölçün.
fio resmi dokümantasyonu bandwidth, IOPS ve latency ölçümlerini ayrı istatistikler olarak ele alır; tek bir sequential MB/s testi gerçek uygulama performansını temsil etmez.
VPS/VDS üzerinde disk performansı yalnız fiziksel NVMe modeline değil storage backend, RAID, cache, network storage, host yoğunluğu ve I/O limitlerine de bağlıdır.
NVMe, PCIe tabanlı düşük gecikmeli bir storage protokolüdür. Ancak sanal makineniz fiziksel diske doğrudan bağlanmak zorunda değildir. Host üzerinde Ceph, ZFS, RAID, LVM, qcow2, network storage veya throttling katmanı bulunabilir.
Bu nedenle 'NVMe var = hızlıdır' yerine uygulamanın istediği I/O profilini ölçün. WordPress/MySQL küçük random read/write ve fsync davranışına; büyük backup işi sequential throughput'a; log/veritabanı ise tail latency'ye daha duyarlı olabilir.
MB/s saniyede taşınan veri hacmidir. IOPS saniyedeki I/O işlem sayısıdır. Latency tek bir I/O'nun tamamlanma süresidir. 1 MB blokla çok yüksek throughput veren disk, 4K random I/O'da düşük IOPS veya yüksek p99 latency gösterebilir.
Queue depth testi de sonucu dramatik değiştirir. QD32 ile görülen yüksek IOPS, tek request çalışan PHP/MySQL query gecikmesini temsil etmeyebilir. Bu yüzden düşük queue depth testi de yapılmalıdır.
Ham `/dev/vda` veya `/dev/nvme0n1` üzerinde write testi çalıştırmak veri kaybına yol açabilir. Bunun yerine boş alanı yeterli olan bir dizinde test dosyası oluşturmak daha güvenlidir. Test yine üretim I/O'sunu etkileyebileceği için yoğun saatlerde çalıştırmayın.
fio --name=randread --filename=/tmp/eka-fio.test --size=1G --bs=4k --rw=randread --iodepth=1 --ioengine=libaio --direct=1 --runtime=30 --time_based --group_reporting
fio --name=randrw --filename=/tmp/eka-fio.test --size=1G --bs=4k --rw=randrw --rwmixread=70 --iodepth=8 --ioengine=libaio --direct=1 --runtime=30 --time_based --group_reporting
fio --name=seqread --filename=/tmp/eka-fio.test --size=2G --bs=1M --rw=read --iodepth=4 --ioengine=libaio --direct=1 --runtime=30 --time_based --group_reporting
IOPS ve BW ilk bakışta görünür; fakat `clat` ve percentile satırları kullanıcı deneyimini daha iyi açıklayabilir. Özellikle p95/p99 gecikmenin ortalamadan çok yükselmesi host/storage üzerinde kuyruklanma veya değişken performans işareti olabilir.
Tek test yerine aynı testi günün farklı saatlerinde birkaç kez çalıştırın. Sanal sunucuda tutarlılık, tek seferlik rekor sonuçtan daha değerlidir.
WordPress/WooCommerce için 4K random mixed I/O ve düşük queue latency anlamlıdır. Büyük medya/backup için sequential read/write throughput daha önemlidir. PostgreSQL/MySQL için fsync ve tail latency kritik olabilir. Oyun sunucusunda disk çoğu zaman CPU kadar kritik değildir ama world save sırasında ani latency spike hissedilebilir.
| Metrik | Ne anlatır | Örnek hassas workload |
|---|---|---|
| Sequential MB/s | Büyük dosya throughput | Backup / medya |
| 4K Random IOPS | Küçük I/O kapasitesi | CMS / DB |
| p99 Latency | Kötü uç gecikme | DB / API |
Tek bir benchmark, port etiketi veya CPU marka adıyla satın alma kararı vermeyin. Aynı testleri farklı saatlerde tekrarlayın; destructive disk testlerini production verisi üzerinde çalıştırmayın ve sağlayıcının kaynak/fair-use politikasını yazılı doğrulayın.
Genellikle potansiyeli daha yüksektir ama sanal storage katmanı, limit ve yoğunluk sonucu değiştirebilir; test gerekir.
Raw disk üzerinde write testi tehlikelidir. Dosya tabanlı test daha güvenlidir fakat üretim I/O'sunu yine etkileyebilir.
Projenizin yazılımını, eşzamanlı kullanıcı sayısını, disk/veritabanı yükünü ve lokasyon hedefini iletin; yalnız RAM/Core sayısına değil gerçek darboğaza göre sunucu sınıfını belirleyin.