2015-12-31 113 views
0

我已经使用fio来测试磁盘性能一段时间了。但就在最近,我发现了一个我不明白的棘手问题。如所描述的,如下 (fio man page)大小选项:为什么fio尺寸参数会影响性能结果

大小= INT

的这个工作的I/O总大小。 fio会一直运行,直到传输了很多字节为止,除非受到其他选项(例如运行时)的限制。除非给出nrfiles和文件大小选项,否则该数量将在作业的可用文件之间分配。如果未设置,fio将使用给定文件或设备的全尺寸。如果文件不存在,则必须给出大小。也可以将尺寸设置为1到100之间的百分比。如果size = 20%,则fio将使用给定文件或设备的全尺寸的20%。

只要我能理解,尺寸不能太小,以收集足够的还算可以,但我我的测试,我设置大小为128MB,2GB,800GB,结果不同:

size=128M, average iops = 165 
size=2GB, average iops = 145 
size=800GB, average iops = 78 

在我看来,对于4KB块,128MB大小足以获得足够数量的IO来做测试,性能不应该受到大小的影响。但为什么大小较大,性能较差。

回答

0

您在测试期间是否禁用了文件系统缓存?

direct=1 
invalidate=1 
randrepeat=0 
do_verify=0 
verify_fatal=0 
0

如果您正在测试一个旋转驱动器,检测能力的较大面积指头上有寻求更远的覆盖所有的数据: 几个参数,我在我的测试(http://linux.die.net/man/1/fio)时总是使用。这需要更长的时间,而更长的查找时间会导致更低的IOPS。

0

在到磁盘的路径中,可能有多个“最大”块大小,并且它不会超过它们。例如,您可能认为您提交了一个10MB的块,但幕后真正发生的是,10MB的块正在被分割成64个大小的块,因为这是驱动程序将接受的限制。这10MByte I/O不能被标记为已完成,直到它的每个单独的部分已被返回,因此您正在创建不必存在的阻塞,并且您还为分割的层创建了额外的工作。因此,如果您测试512个以上的区块大小,您通常会看到吞吐量的最初优势,然后在实际开始变慢之前回报递减。

不:,的Linux有时暴露了一个“最佳块大小”(见“/ SYS /块//队列/ optimal_io_size”在https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-block),其可以是或可以不是该磁盘的真实最佳块大小。

相关问题