Kinerja Sistem File Loopback

10

Adakah yang sudah melakukan pengujian kinerja / pembandingan pada sistem file loopback Linux? Apa pengalaman Anda sejauh ini. Apakah ada penurunan kinerja yang serius? Bagaimana dengan ketahanan?

http://freshmeat.net/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file

akun ps
sumber
Seharusnya cukup sederhana untuk menjalankan Bonnie ++ pada disk asli Anda dan pada disk loopback untuk membandingkan kinerja.
ceving

Jawaban:

11

Saya telah melakukan sedikit pembandingan dengan operasi penulisan di perangkat loopback. Inilah kesimpulannya:

  • Jika Anda menyinkronkan setiap selesai menulis, maka perangkat loopback berperforma lebih buruk (hampir dua kali lebih lambat).
  • Jika Anda mengizinkan cache disk scheduler IO untuk melakukan pekerjaan mereka, maka hampir tidak ada perbedaan antara menggunakan perangkat loopback dan akses disk langsung.

Hasil benchmark

Pertama, saya menjalankan patokan pada perangkat loopback dalam tmpfs 8GB, dan perangkat loopback dalam perangkat loopback itu ( dengan sinkronisasi setelah setiap operasi penulisan ):

ext4 dalam tmpfs:

Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s  (min 554  max 560)

ext4 dalam extf di tmpfs:

Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s  (min 294  max 299)

Jelas, ada beberapa perbedaan dalam kinerja saat menggunakan perangkat loopback dengan sync-on-write.
Kemudian saya mengulangi tes yang sama pada HDD saya.
ext4 (HDD, 1000 MB, 3 kali):

Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s  (min 23.0  max 24.1)

ext4 dalam ext4 (HDD, 945MB):

Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s  (min 12.7  max 13.0)

Benchmark yang sama pada HDD, sekarang tanpa sinkronisasi setelah setiap penulisan ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync), diukur sebagai <size>/ <time in seconds>).
ext4 (HDD, 1000 MB):

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 dalam 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)

(Secara mengejutkan, tolok ukur loopback terlihat lebih baik daripada tolok ukur disk mentah, mungkin karena ukuran yang lebih kecil dari perangkat loopback, sehingga lebih sedikit waktu yang dihabiskan untuk sinkronisasi-ke-disk yang sebenarnya)

Penyiapan patokan

Pertama, saya membuat sistem file loopback 8G di / tmp (tmpfs) saya:

truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/

Lalu saya membuat baseline dengan mengisi file loopback yang terpasang dengan data:

$ 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

Setelah melakukan itu, saya membuat perangkat loopback lain di perangkat loopback sebelumnya:

mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint

Dan jalankan patokan lagi, sepuluh kali:

$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s

dan kemudian saya unmount file tes dan menghapusnya:

sudo umount /tmp/mountpoint
sudo umount /mnt

(sama untuk tes pada HDD, kecuali saya juga menambahkan count=1000untuk mencegah tes dari mengisi seluruh disk saya)
(dan untuk tes tidak menulis-on-sinkronisasi, saya menjalankan pengaturan waktu dddan syncoperasi)

Rob W
sumber
0

Saya tidak punya masalah. Semua sudah sekeras batu. Cache sistem file dan IO scheduler di Linux cukup masuk akal sehingga tidak membuat perbedaan nyata antara meminta disk secara langsung dan meminta bagian file pada disk.

SystemParadox
sumber