在 EBS 卷上,dd 和 iostat、ext4 和 xfs 的结果相互矛盾

在 EBS 卷上,dd 和 iostat、ext4 和 xfs 的结果相互矛盾

当我在两台主机(带有 EBS 驱动器的 EC2 实例)上使用 dd 和 iostat 查看磁盘性能时,我看到了似乎相互矛盾的结果。主机完全相同,只是一台使用 EXT4 格式的 ebs,另一台使用 XFS 格式的 ebs。

如果我查看 iostat,EXT4 主机似乎比 XFS 主机表现更好。两者在大约 100% 的利用率下实现大致相同的写入吞吐量(约 25MB/s),但 EXT4 主机的平均等待时间更短(磁盘延迟更低)。正是这种较小的等待时间让我说 EXT4 的表现优于 XFS:

外部4:

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
xvdf              0.00    11.00    0.00 6331.00     0.00    26.96     8.72    71.00   11.32   0.16  99.60

XFS:

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
xvdf              0.00     2.00    0.00 6211.00     0.00    27.38     9.03   144.95   23.24   0.16 100.40

但是,如果用来dd衡量性能,XFS 显然是赢家,因为它完成完全同步写入所需的时间要少得多。命令是dd bs=1M count=256 if=/dev/zero of=./test conv=fdatasync

外部4:

2.8 MB/s

XFS:

24.0 MB/s

为什么 EXT4 用 看起来好很多iostat,用 看起来却差很多dd

更新于 2018 年 5 月 25 日:运行主机几天后,dd现在sync显示 ext4 和 xfs 的响应时间相同。我怀疑这与它们处理稀疏文件等的方式不同(如果有的话)有关。主机启动的第一天,它们都忙于在文件系统上放置一堆新文件(这是一个 graphite carbon-cache 应用程序)。这已经稳定下来,这些文件正在写入小更新,但不再创建新文件,并且使用的磁盘空间总量不再增加。

因此,XFS 分配新磁盘块的方式与 EXT4 肯定存在根本性差异。如果对此有任何见解,我们将不胜感激。

答案1

如果我错了,请纠正我,但我相信您使用了 EBS 卷。


尝试ext4在不使用的情况下格式化分区lazy initialization,因为它会影响测试性能。

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/xvdf

EBS 卷

有几个因素将决定 EBS 卷的性能。它们并不完全直观。

  1. Type of the volume. 预配置 IOPS io1、通用gp2、吞吐量优化 HDD st1、冷 HDD sc1. 特性。

  2. Size of the volume。一般来说,卷越大,性能越好。除 EBS Provisioned IOPS (io1) 外,卷使用突发模型1并且如果 ,I/O 可能会大幅波动或下降all I/O credits are used。简而言之,每个卷的基本最低 IOPS 为 100,每增加 1 GB(~33GB 后),性能将增加 3 IOPS。此外,如果有足够的 I/O 信用,卷可以突增至 3000 IOPS。

大小与 IOPS
(来源:亚马逊

  1. EC2 Instance type。实例越大,网络性能越快。是否为 EBS 优化实例也很重要。

  2. 如果您从快照恢复卷,则必须预热卷才能获得最佳性能。
    请参阅https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html

更多细节:

更新 1

很难说为什么你会看到这些结果,因为你的帖子中没有足够的信息供我推断。

此 CloudFormation 模板是我尝试重新创建您的结果。
https://gist.github.com/an2io/c68b2119f18192d83a685651905623e9

EXT4

wrqm/s  w/s     wMB/s   avgrq-sz    avgqu-sz    await   svctm    %util  
0.00    528.62  66.08   255.84      127.07      217.16  1.61     85.39    
2.69    287.21  35.86   255.71      142.20      504.73  3.52    101.01    
0.00    285.28  35.59   255.49      134.93      462.90  3.52    100.33    
3.02    277.52  34.54   254.89      115.54      460.62  3.51     97.32    
0.00      0.00   0.00     0.00        0.00        0.00  0.00      0.00    
512+0 records in  
512+0 records out  
536870912 bytes (537 MB) copied, 11.9003 s, 45.1 MB/s  

西弗斯

wrqm/s  w/s     wMB/s   avgrq-sz    avgqu-sz    await   svctm    %util
1.68    542.28  67.44   254.07      176.84      301.59  1.66     90.47
0.00    284.95  35.62   256.00      143.74      508.38  3.52    100.33
0.00    285.28  35.58   255.46      184.36      609.81  3.52    100.33
0.00    265.10  32.95   253.27      162.34      692.59  3.48     92.75
0.00      0.00   0.00     0.00        0.00        0.00  0.00      0.00

512+0 records in  
512+0 records out  
536870912 bytes (537 MB) copied, 11.7641 s, 45.6 MB/s  

自由度

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G   72K  1.9G   1% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
/dev/xvda1      9.8G  1.2G  8.5G  12% /
/dev/xvdb       3.9G  8.1M  3.7G   1% /media/ephemeral0
/dev/xvdf1      3.7G  520M  3.0G  15% /mnt/ext4
/dev/xvdf2      3.9G  545M  3.3G  14% /mnt/xfs

/dev/xvdf1 on /mnt/ext4 type ext4 (rw,relatime,data=ordered)
/dev/xvdf2 on /mnt/xfs type xfs (rw,relatime,attr2,inode64,noquota)

相关内容