回送文件系统的性能


Answers:


11

我已经对回送设备中的写操作进行了一些基准测试。结论如下:

  • 如果您在每次写入后都进行同步,则回送设备的性能会明显变差(几乎慢一倍)。
  • 如果您允许IO调度程序在磁盘缓存中完成任务,那么使用环回设备和直接磁盘访问之间几乎没有什么区别。

基准结果

首先,我在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了防止测试填满整个磁盘的操作)
(对于非同步写入测试,我为ddand sync操作计时)


0

我没问题。一切都坚如磐石。Linux中的文件系统缓存和IO调度程序足够明智,因此在直接请求磁盘和请求磁盘上的文件部分之间不应有任何明显的区别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.