Please enable JS

”杉岩两语“在分布式存储测试中,IOMeter的Align如何指定

/2017-3-18 14:15:07

IOMeterintel发布的一款测试I/O操作性能的开源软件。它除了可以在本机运行测试本机的IO(磁盘)性能之外,还提供了模拟网络应用的能力。可以运行在Windows或者linux操作系统上,主要是用于在windows进行测试,在linux上存在并发I/O不充分的问题(实测)。IOMETER因其界面友好,且能输出excel的报告受到很多客户的喜欢。Align则是指每次测试时跳过的扇区大小。

今天我们将和您一起聊聊在分布式存储测试中,IOMETER的Align如何指定。

IOMeter测试传统SAN(这里指阵列),不需要配置任何参数即可进行测试,因为传统SAN是以物理内存作为缓存的,可以缓存512B这种块大小的I/O,IOMeter的配置与传统存储默认就是一致的,不需要进行设置。

云计算的普及下,分布式存储越来越多的应用的生产系统中,分布式存储主要是以SSD做缓存,SSD的管理是以4K为一个扇区来进行管理的,所以分布式存储厂商主要以4K为单位来缓存系统下发的I/O,这时如果用IOMeter的默认配置就会存在问题,如下图是IOMeter的测试项的配置,Align是指每次测试时跳过的扇区大小:

Align如何指定?

测试随机4K块写性能时,如果使用默认的Align,测试分布式存储系统性能时,会先跳过512B去下发4K给分布式存储系统,此时会出现大量的不对齐I/O导致再次命中同样cache块时产生大量的读改写操作,产生的现象是I/O性能波动很大,查看分布式存储系统的节点上SSD的IOSTAT,会看到大量的读I/O操作。

如果设置Align避免波动,且能正常测试分布式存储系统的性能,就需要了解到分布式存储系统的缓存原理,当前主要的分布式存储系统使用的基本上是以4K为单位进行缓存,所以设置如下图:

知识点:为了便于阅读,我们将Align I/O On的定义以及注意事项在此进行说明,以下内容来自surilige的博客:

Align I/O On——指定每一个磁盘I/O的对齐,默认是“扇区边界”。如果该字段的值是n字节,则每一个I/O会在磁盘的n倍字节处开始执行。取值范围从1到1023MB+1023KB+1023Bytes,但指定的值必须是磁盘扇区大小的倍数。指定0值或选择“扇区边界“单选按钮会使得I/O在扇区边界对齐。网络worker忽略该值。

注意:如果Alignment字段不是”扇区边界“且Size字段并非Alignment字段值的倍数,那么连续I/O将不会是真正的连续。例如,如果Size = 3KB,Alignment= 2KB,那么每个3KB I/O在其下一个I/O之前会有一个1KB的”洞“。例如,假设扇区是1KB大小,那么I/O落到磁盘上的视图就是DDDXDDDXDDDX….(D代表1KB数据,X代表为了对其而浪费的1KB空间)。