Bir sabit sürücünün performansını nasıl kontrol edebilirim (terminal veya GUI aracılığıyla). Yazma hızı. Okuma hızı. Önbellek boyutu ve hızı. Rastgele hız.
Terminal yöntemi
hdparm
başlamak için iyi bir yer.
sudo hdparm -Tt /dev/sda/dev/sda:Timing cached reads: 12540 MB in 2.00 seconds = 6277.67 MB/secTiming buffered disk reads: 234 MB in 3.00 seconds = 77.98 MB/sec
sudo hdparm -v /dev/sda
ayrıca bilgi verecektir.
dd
yazma hızı hakkında size bilgi verecektir.
Sürücüde dosya sistemi yoksa (ve ancak o zaman), kullanma of=/dev/sda
.
Aksi takdirde, / tmp üzerine monte edin ve yazın, ardından test çıktı dosyasını silin.
dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output10240+0 records in10240+0 records out83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s
Grafik yöntemi
- >>Sistem Yönetimi - Disk Yardımcı Programı'na gidin.
- Alternatif olarak, Gnome disk yardımcı programını çalıştırarak komut satırından başlatın
gnome-disks
- Alternatif olarak, Gnome disk yardımcı programını çalıştırarak komut satırından başlatın
- Sol bölmede sabit diskinizi seçin.
- Şimdi sağ bölmedeki “Benchmark – Sürücü Performansını Ölçün” düğmesini tıklayın.
- Grafikler içeren yeni bir pencere açılır.İki düğme bulacaksınız. Biri “Salt Okunur Ölçütü Başlat”, diğeri “Okuma / Yazma Ölçütünü Başlat” içindir. Herhangi bir düğmeye tıkladığınızda sabit diskin kıyaslamasını başlatır.
Disk G / Ç nasıl kıyaslanır
İstediğin başka bir şey mi var?
Suominen haklı, bir çeşit senkronizasyon kullanmalıyız; ancak daha basit bir yöntem var, conv = fdatasync işi yapacak:
dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output1024+0records in1024+0 records out402653184 bytes (403 MB) copied, 3.19232 s, 126 MB/s
Doğruluk istiyorsanız, kullanmalısınız fio
. Kılavuzun okunmasını gerektirir (man fio
ancak size doğru sonuçlar verecektir. Herhangi bir doğruluk için tam olarak ne ölçmek istediğinizi belirtmeniz gerektiğini unutmayın. Bazı örnekler:
Büyük bloklarla sıralı okuma hızı (bu, sürücünüzün teknik özelliklerinde gördüğünüz numaraya yakın olmalıdır):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Büyük bloklarla sıralı yazma hızı (bu, sürücünüzün teknik özelliklerinde gördüğünüz numaraya yakın olmalıdır):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Rastgele 4 K okuma QD1 (bu, daha iyi bilmediğiniz sürece gerçek dünya performansı için gerçekten önemli olan sayıdır):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Karışık rastgele 4 K okuma ve yazma QD1 ile sync (bu, sürücünüzden beklemeniz gereken en kötü durum numarasıdır, genellikle spesifikasyon sayfasında listelenen sayıların% 1'inden daha azdır):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
Artırmak --size
dosya boyutunu artırmak için bağımsız değişken. Daha büyük dosyalar kullanmak, sürücü teknolojisine ve bellenime bağlı olarak elde ettiğiniz sayıları azaltabilir. Küçük dosyalar, dönme ortamı için "çok iyi" sonuçlar verecektir çünkü okuma kafasının bu kadar fazla hareket etmesine gerek yoktur. Cihazınız neredeyse boşsa, sürücüyü neredeyse dolduracak kadar büyük bir dosya kullanmak, her test için en kötü durum davranışını elde etmenizi sağlar. SSD durumunda, dosya boyutu o kadar önemli değil.
Ancak, bazı depolama ortamları için aşağıdaki boyutun dosya kadar önemli değil kısa sürede yazılan toplam bayt sayısı. Örneğin, bazı SSD'ler önceden silinmiş bloklarla önemli ölçüde daha hızlı performansa sahiptir veya yazma önbelleği olarak kullanılan küçük SLC flaş alanına sahip olabilir ve SLC önbelleği dolduğunda performans değişir (örneğin, 20-50 GB SLC önbelleğine sahip Samsung EVO serisi). Başka bir örnek olarak Seagate SMR HDD'ler oldukça yüksek performansa sahip yaklaşık 20 GB PMR önbellek alanına sahiptir, ancak dolduğunda doğrudan SMR alanına yazmak performansı orijinalinden% 10'a düşürebilir. Ve bu performans degrasyonunu görmenin tek yolu, önce 20 + gb'yi olabildiğince hızlı yazmak ve hemen ardından gerçek teste devam etmektir. Elbette, bunların hepsi iş yükünüze bağlıdır: yazma erişiminiz, cihazın dahili önbelleği temizlemesini sağlayan uzun gecikmelerle doluysa, daha kısa test dizileri gerçek dünya performansınızı daha iyi yansıtacaktır. Çok fazla IO yapmanız gerekiyorsa, her ikisini de artırmanız gerekir --io_size
ve --runtime
parametreler. Bazı medya (örneğin en unutmayın ucuz flaş yongaları çok hızlı bir şekilde aşınacak kadar zayıf olduğu için bu tür testlerden muzdarip olacaktır. Benim düşünceme göre, herhangi bir cihaz bu tür testlerle başa çıkamayacak kadar zayıfsa, hiçbir durumda değerli verileri tutmak için kullanılmamalıdır. Bununla birlikte, büyük yazma testlerini 1000 kez tekrarlamayın, çünkü tüm flaş hücreleri yazma ile bir miktar aşınma seviyesine sahip olacaktır.
Ek olarak, bazı yüksek kaliteli SSD aygıtları, dahili SLC önbelleğinin, veriler hala SLC önbelleğindeyken yeniden yazılıyorsa, verileri yerinde değiştirmek için yeterli zekaya sahip olduğu daha akıllı aşınma tesviye algoritmalarına sahip olabilir. Bu tür aygıtlar için, sınama dosyası aygıtın toplam SLC önbelleğinden küçükse, tam sınama her zaman yalnızca SLC önbelleğine yazar ve aygıtın daha büyük yazmalar için destekleyebileceğinden daha yüksek performans numaraları elde edersiniz. Bu nedenle, bu tür cihazlar için dosya boyutu tekrar önemli olmaya başlar. Gerçek iş yükünüzü biliyorsanız, gerçek hayatta göreceğiniz dosya boyutlarıyla test etmek en iyisidir. Beklenen iş yükünü bilmiyorsanız, depolama aygıtının yaklaşık% 50'sini dolduran test dosyası boyutunu kullanmak, tüm depolama uygulamaları için iyi bir ortalama sonuçla sonuçlanmalıdır. Tabii ki, 50 TB RAID kurulumu için, 25 TB test dosyasıyla yazma testi yapmak oldukça zaman alacaktır!
Şunu unutmayın fio
ilk çalıştırmada gerekli geçici dosyayı oluşturur. Verileri kalıcı depolamaya yazmadan önce sıkıştırarak kıyaslamalarda hile yapmaya çalışan cihazlardan çok iyi numaralar almamak için sahte veri ile doldurulacaktır. Geçici dosya çağrılacak fio-tempfile.dat
yukarıdaki örneklerde ve geçerli çalışma dizininde saklanır. Bu nedenle, önce test etmek istediğiniz cihaza takılı dizine geçmelisiniz. Bu fio
ayrıca, doğrudan medyayı test hedefi olarak kullanmayı da destekler, ancak denemeden önce kılavuz sayfasını okumanızı kesinlikle öneririm, çünkü bir yazım hatası, doğrudan depolama ortamı erişimi kullandığında tüm işletim sisteminizin üzerine yazabilir (örn. Yanlışlıkla test cihazı yerine işletim sistemi cihazına yazma).
İyi bir ssd'niz varsa ve daha da yüksek sayılar görmek istiyorsanız, artırın --numjobs
yukarıda. Bu, okuma ve yazma için eşzamanlılığı tanımlar. Yukarıdaki örneklerin hepsi var numjobs
başlamak 1
bu nedenle test, tek iş parçacıklı işlem okuma ve yazma ile ilgilidir (muhtemelen kuyruk derinliği veya QD ile ayarlanmış iodepth
). Yüksek kaliteli SSD'ler (örneğin Intel Optane 905p) artmadan bile yüksek rakamlar almalıdır numjobs
çok fazla (örn. 4
en yüksek spec numaralarını elde etmek için yeterli olmalıdır) ancak bazı "Kurumsal" SSD'ler menzile gitmeyi gerektirir 32
-128
spec numaralarını elde etmek için, çünkü bu cihazların dahili gecikmesi daha yüksektir, ancak genel verim delidir. Arttığına dikkat edin numbjobs
yüksek değerlere genellikle sonuç artar kıyaslama performansı sayılar ancak nadiren gerçek dünya performansını herhangi bir şekilde yansıtır.
Kullanmanızı tavsiye etmem /dev/urandom
çünkü yazılım tabanlı ve domuz kadar yavaş. Ramdisk'te rastgele verilerin bir kısmını almak daha iyidir. Sabit diskte rastgele test önemli değildir, çünkü her bayt olduğu gibi yazılır (dd ile ssd'de de). Ancak, tekilleştirilmiş zfs havuzunu saf sıfır veya rasgele verilerle test edersek, büyük performans farkı vardır.
Başka bir bakış açısı senkronizasyon süresinin dahil edilmesi olmalıdır; tüm modern dosya sistemleri dosya işlemlerinde önbelleğe almayı kullanır.
Bellekten ziyade disk hızını gerçekten ölçmek için, önbelleğe alma etkisinden kurtulmak için dosya sistemini senkronize etmeliyiz. Bu kolayca yapılabilir:
time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"
bu yöntemle çıktı elde edersiniz:
sync ; time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync" ; rm testfile 1024+0 records in1024+0 records out104857600 bytes (105 MB) copied, 0.270684 s, 387 MB/sreal 0m0.441suser 0m0.004ssys 0m0.124s
>yani disk veri tarihi sadece 104857600 / 0.441 = 237772335 B / s - 237MB / s
Bu, önbelleğe alma işleminden 100 MB / sn'nin altındadır.
Mutlu kıyaslama,
Disk okuma ve yazma hızını gerçek zamanlı olarak izlemek istiyorsanız aşağıdakileri kullanabilirsiniz: ıotopname alet.
Bu, bir diskin belirli bir uygulama veya iş yükü için nasıl performans gösterdiği hakkında bilgi almak için kullanışlıdır. Çıktı, işlem başına okuma / yazma hızını ve sunucu için toplam okuma / yazma hızını gösterir. top
.
Yüklemek iotop
:
sudo apt-get install iotop
Çalıştır:
sudo iotop
Bu araç, bir diskin daha genel ve teorik testlere kıyasla belirli bir iş yükü için nasıl performans gösterdiğini anlamanıza yardımcı olur.
Yazma hızı
$ dd if=/dev/zero of=./largefile bs=1M count=10241024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s
Blok boyutu aslında oldukça büyük. 64k veya hatta 4k gibi daha küçük boyutlarla deneyebilirsiniz.
Okuma hızı
Bellek önbelleğini temizlemek için aşağıdaki komutu çalıştırın
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
Şimdi yazma testinde oluşturulan dosyayı okuyun:
$ dd if=./largefile of=/dev/null bs=4k165118+0 records in165118+0 records out676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
bonnie ++, linux için bildiğim en iyi kıyaslama yardımcı programıdır.
(Şu anda windows tabanlı makinemizi onunla test etmek için bonnie ++ ile çalışan bir linux livecd hazırlıyorum!)
Önbelleğe alma, senkronizasyon, rastgele veriler, diskteki rastgele konum, küçük boyutlu güncellemeler, büyük güncellemeler, okumalar, yazmalar vb. İle ilgilenir. Bir usb anahtarını, bir sabit diski (döner), bir katı hal sürücüsünü ve ram tabanlı bir dosya sistemini karşılaştırmak yeni başlayanlar için çok bilgilendirici olabilir.
Ubuntu'ya dahil olup olmadığı hakkında hiçbir fikrim yok, ancak kaynaktan kolayca derleyebilirsiniz.
bonnie'nin nasıl kullanılacağına dair bazı ipuçları ++
bonnie++ -d [TEST_LOCATION] -s [TEST_SIZE] -n 0 -m [TEST_NAME] -f -b -u [TEST_USER] bonnie++ -d /tmp -s 4G -n 0 -m TEST -f -b -u james
Biraz daha fazla: BASİT BONNİE ++ ÖRNEĞİ.
Similar question has been asked over on linux - How can I benchmark my HDD? - Unix & Linux Stack Exchange , file io - Testing IO performance in Linux - Stack Overflow and io - I/O Performance Benchmarking Linux - Server Fault .