有人在Linux回送文件系统上进行过任何性能/基准测试吗?到目前为止,您的经验如何。性能会严重下降吗?健壮性如何?
http://freshmeat.net/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file
有人在Linux回送文件系统上进行过任何性能/基准测试吗?到目前为止,您的经验如何。性能会严重下降吗?健壮性如何?
http://freshmeat.net/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file
Answers:
我已经对回送设备中的写操作进行了一些基准测试。结论如下:
首先,我在8GB的tmpfs的回送设备上运行了一个基准测试,并在该回送设备中运行了一个回送设备(在每次写操作后均进行同步):
在tmpfs中的ext4:
Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s (min 554 max 560)
在tmpfs中的extf中使用ext4:
Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s (min 294 max 299)
显然,将环回设备与写时同步一起使用时,性能会有一些差异。
然后,我在硬盘上重复了相同的测试。
ext4(硬盘,1000 MB,3次):
Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s (min 23.0 max 24.1)
ext4中的ext4(HDD,945MB):
Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s (min 12.7 max 13.0)
在HDD上具有相同的基准,现在每次写入后都不会同步(time (dd if=/dev/zero bs=1M count=1000 of=file; sync)
,以<size>
/表示<time in seconds>
)。
ext4(硬盘,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中的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)
(令人惊讶的是,回送基准看起来比原始磁盘基准更好,这可能是因为回送设备的尺寸较小,因此在实际的磁盘同步上花费的时间更少)
首先,我在/ tmp(tmpfs)中创建了8G的回送文件系统:
truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/
然后,我通过用数据填充已挂载的回送文件来建立基准:
$ 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
之后,我在先前的回送设备中创建了另一个回送设备:
mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint
然后再次运行基准测试十次:
$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s
然后卸载测试文件并将其删除:
sudo umount /tmp/mountpoint
sudo umount /mnt
(与HDD上的测试类似,不同之处在于,我还添加count=1000
了防止测试填满整个磁盘的操作)
(对于非同步写入测试,我为dd
and sync
操作计时)
我没问题。一切都坚如磐石。Linux中的文件系统缓存和IO调度程序足够明智,因此在直接请求磁盘和请求磁盘上的文件部分之间不应有任何明显的区别。