Bir geridöngü aygıtında yazma işlemleri ile biraz kıyaslama yaptım. Sonuç:
- Her yazma işleminden sonra senkronize ederseniz, geri döngü cihazı önemli ölçüde daha kötü performans gösterir (neredeyse iki kat daha yavaş).
- Diskin bir GÇ zamanlayıcısının işini yapmasına izin verirseniz, geri döngü aygıtı kullanma ile doğrudan disk erişimi arasında neredeyse hiç fark yoktur.
Deney sonuçları
İlk olarak, 8 GB'lık tmpfs'de bir geri döngü cihazında ve bu geri döngü cihazında ( her yazma işleminden sonra senkronizasyon ile) bir geri döngü cihazı üzerinde bir kıyaslama çalıştırdım :
tmpfs içinde ext4:
Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s (min 554 max 560)
tmpfs içinde extf in ext4:
Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s (min 294 max 299)
Açıkçası, yazma sırasında senkronize olan geri döngü cihazları kullanılırken performansta bazı farklar vardır.
Sonra aynı testi HDD'imde tekrarladım.
ext4 (HDD, 1000 MB, 3 kez):
Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s (min 23.0 max 24.1)
ext4 girişi ext4 (HDD, 945MB):
Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s (min 12.7 max 13.0)
HDD'de aynı kriter, şimdi her yazma işleminden sonra senkronize edilmiyor ( / time (dd if=/dev/zero bs=1M count=1000 of=file; sync)
olarak ölçülüyor ).
ext4 (HDD, 1000 MB):<size>
<time in seconds>
Measured speed: 84.3, 86.1, 83.9, 86.1, 87.7
Average speed : 85.6 MB/s (min 84.3 max 87.7)
ext4 girişi ext4 (HDD, 945MB):
Measured speed: 89.9, 97.2, 82.9, 84.0, 82.7
Average speed : 87.3 MB/s (min 82.7 max 97.2)
(şaşırtıcı bir şekilde, geri döngü karşılaştırması, muhtemelen geri döngü aygıtının daha küçük boyutu nedeniyle ham disk karşılaştırmasından daha iyi görünür, bu nedenle gerçek senkron-diske daha az zaman harcanır)
Karşılaştırma kurulumu
İlk olarak, / tmp (tmpfs) içinde 8G'lik bir geri döngü dosya sistemi oluşturdum:
truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/
Sonra monte loopback dosyasını veri ile doldurarak bir temel oluşturdu:
$ dd if=/dev/zero bs=1M of=/mnt/bigfile oflag=sync
dd: error writing '/mnt/bigfile': No space left on device
7492+0 records in
7491+0 records out
7855763456 bytes (7.9 GB) copied, 14.0959 s, 557 MB/s
Bunu yaptıktan sonra, önceki geridönüş aygıtında başka bir geridöngü aygıtı oluşturdum:
mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint
Benchmark'ı on kez tekrar çalıştırdık:
$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s
ve sonra test dosyasını çıkardım ve kaldırdım:
sudo umount /tmp/mountpoint
sudo umount /mnt
(benzer şekilde HDD'deki test için, testin count=1000
tüm diskimi doldurmasını önlemek için de eklediğim hariç )
(ve senkronize olmayan yazma testi için zamanlamayı dd
ve sync
işlemi çalıştırdım)