Tôi đã thực hiện một chút điểm chuẩn với các thao tác ghi trong thiết bị loopback. Đây là kết luận:
- Nếu bạn đồng bộ hóa sau mỗi lần ghi, thì thiết bị loopback hoạt động kém hơn đáng kể (chậm gần gấp đôi).
- Nếu bạn cho phép bộ đệm đĩa bộ lập lịch IO thực hiện công việc của họ, thì hầu như không có sự khác biệt nào giữa việc sử dụng thiết bị loopback và truy cập đĩa trực tiếp.
Kết quả điểm chuẩn
Đầu tiên, tôi chạy điểm chuẩn trên thiết bị loopback ở tốc độ 8GB và thiết bị loopback trong thiết bị loopback đó ( có đồng bộ hóa sau mỗi thao tác ghi ):
ext4 trong tmpfs:
Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s (min 554 max 560)
ext4 trong extf trong tmpfs:
Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s (min 294 max 299)
Rõ ràng, có một số khác biệt về hiệu suất khi sử dụng các thiết bị loopback với tính năng đồng bộ hóa khi ghi.
Sau đó, tôi lặp lại thử nghiệm tương tự trên ổ cứng của mình.
ext4 (HDD, 1000 MB, 3 lần):
Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s (min 23.0 max 24.1)
ext4 trong ext4 (HDD, 945MB):
Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s (min 12.7 max 13.0)
Cùng một điểm chuẩn trên ổ cứng, bây giờ không đồng bộ hóa sau mỗi lần ghi ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync)
, được đo là <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 trong 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)
(đáng ngạc nhiên, điểm chuẩn loopback trông tốt hơn so với điểm chuẩn của đĩa thô, có lẽ là do kích thước nhỏ hơn của thiết bị loopback, do đó thời gian dành cho đồng bộ hóa trên đĩa thực tế ít hơn)
Thiết lập điểm chuẩn
Đầu tiên, tôi đã tạo một hệ thống tập tin loopback 8G trong my / tmp (tmpfs):
truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/
Sau đó, tôi đã thiết lập đường cơ sở bằng cách điền vào tệp loopback được gắn với dữ liệu:
$ 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
Sau khi làm điều đó, tôi đã tạo một thiết bị loopback khác trong thiết bị loopback trước đó:
mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint
Và chạy lại điểm chuẩn, mười lần:
$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s
và sau đó tôi ngắt kết nối tệp thử nghiệm và xóa nó:
sudo umount /tmp/mountpoint
sudo umount /mnt
(tương tự đối với thử nghiệm trên ổ cứng, ngoại trừ tôi cũng đã thêm count=1000
để ngăn kiểm tra lấp đầy toàn bộ đĩa của tôi)
(và đối với thử nghiệm không ghi đồng bộ, tôi đã chạy hẹn giờ dd
và sync
vận hành)