HPC高性能计算项目IOZONE测试报告.docx
《HPC高性能计算项目IOZONE测试报告.docx》由会员分享,可在线阅读,更多相关《HPC高性能计算项目IOZONE测试报告.docx(12页珍藏版)》请在冰豆网上搜索。
HPC高性能计算项目IOZONE测试报告
HPC高性能计算项目
IOZONE测试报告
目录
1IOZONE简介1
1.1测试定义1
1.2测试模式3
2HPC集群测试环境6
2.1存储架构图7
2.2文件系统7
3测试方法及结果9
3.1测试方案9
3.2测试结果9
2.2.1单客户端单流性能测试9
2.2.2单客户端多流性能测试10
2.2.3多客户端多流性能测试11
3.3测试结论12
4附录13
IOZONE简介
IOZONE是文件系统的Benchmark工具。
可以测试不同的操作系统中文件系统的读写性能。
可以测试Read,write,re-read,re-write,readbackwards,readstrided,fread,fwrite,randomread,pread,mmap,aio_read,aio_write等等不同的模式下的存储的性能。
测试定义
Write:
测试向一个新文件写入的性能。
当一个新文件被写入时,不仅仅是那些文件中的数据需要被存储,还包括那些用于定位数据存储在存储介质的具体位置的额外信息。
这些额外信息被称作“元数据”。
它包括目录信息,所分配的空间和一些与该文件有关但又并非该文件所含数据的其他数据。
这些额外信息会导致Write的性能通常会比Re-write的性能低。
Re-write:
测试向一个已存在的文件写入的性能。
当一个已存在的文件被写入时,所需工作量较少,因为此时元数据已经存在。
Re-write的性能通常比Write的性能高。
Read:
测试读一个已存在的文件的性能。
Re-Read:
测试读一个最近读过的文件的性能。
Re-Read性能会高些,因为操作系统通常会缓存最近读过的文件数据。
这个缓存可以被用于读以提高性能。
RandomRead:
测试读一个文件中的随机偏移量的性能。
许多因素可能影响这种情况下的系统性能,例如:
操作系统缓存的大小,磁盘数量,寻道延迟和其他。
RandomWrite:
测试写一个文件中的随机偏移量的性能。
同样,许多因素可能影响这种情况下的系统性能,例如:
操作系统缓存的大小,磁盘数量,寻道延迟和其他。
RandomMix:
测试读写一个文件中的随机偏移量的性能。
同样,许多因素可能影响这种情况下的系统性能,例如:
操作系统缓存的大小,磁盘数量,寻道延迟和其他。
这个测试只有在吞吐量测试模式下才能进行。
每个线程/进程运行读或写测试。
这种分布式读/写测试是基于roundrobin模式的。
最好使用多于一个线程/进程执行此测试。
BackwardsRead:
测试使用倒序读一个文件的性能。
这种读文件方法可能看起来很可笑,事实上,有些应用确实这么干。
MSCNastran是一个使用倒序读文件的应用程序的一个例子。
它所读的文件都十分大(大小从G级别到T级别)。
尽管许多操作系统使用一些特殊实现来优化顺序读文件的速度,很少有操作系统注意到并增强倒序读文件的性能。
RecordRewrite:
测试写与覆盖写一个文件中的特定块的性能。
这个块可能会发生一些很有趣的事。
如果这个块足够小(比CPU数据缓存小),测出来的性能将会非常高。
如果比CPU数据缓存大而比TLB小,测出来的是另一个阶段的性能。
如果比此二者都大,但比操作系统缓存小,得到的性能又是一个阶段。
若大到超过操作系统缓存,又是另一番结果。
StridedRead:
测试跳跃读一个文件的性能。
举例如下:
在0偏移量处读4Kbytes,然后间隔200Kbytes,读4Kbytes,再间隔200Kbytes,如此反复。
此时的模式是读4Kbytes,间隔200Kbytes并重复这个模式。
这又是一个典型的应用行为,文件中使用了数据结构并且访问这个数据结构的特定区域的应用程序常常这样做。
许多操作系统并没注意到这种行为或者针对这种类型的访问做一些优化。
同样,这种访问行为也可能导致一些有趣的性能异常。
一个例子是在一个数据片化的文件系统里,应用程序的跳跃导致某一个特定的磁盘成为性能瓶颈。
Fwrite:
测试调用库函数fwrite()来写文件的性能。
这是一个执行缓存与阻塞写操作的库例程。
缓存在用户空间之内。
如果一个应用程序想要写很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能通过减少实际操作系统调用并在操作系统调用时增加传输块的大小来增强应用程序的性能。
Fread:
测试调用库函数fread()来读文件的性能。
这是一个执行缓存与阻塞读操作的库例程。
缓存在用户空间之内。
如果一个应用程序想要读很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能通过减少实际操作系统调用并在操作系统调用时增加传输块的大小来增强应用程序的性能。
Freread:
这个测试与上面的fread类似,除了在这个测试中被读文件是最近才刚被读过。
这将导致更高的性能,因为操作系统缓存了文件数据。
Mmap:
许多操作系统支持mmap()的使用来映射一个文件到用户地址空间。
映射之后,对内存的读写将同步到文件中去。
这对一些希望将文件当作内存块来使用的应用程序来说很方便。
一个例子是内存中的一块将同时作为一个文件保存在于文件系统中。
mmap文件的语义和普通文件略有不同。
如果发生了对内存的存储,并不是立即发生相应的文件I/O操作。
使用MS_SYNC和MS_ASYNC标志位的msyc()函数调用将控制内存和文件的一致性。
调用msync()时将MS_SYNC置位将强制把内存里的内容写到文件中去并等待直到此操作完成才返回。
而MS_ASYNC置位则告诉操作系统使用异步机制将内存刷新到磁盘,这样应用程序可以直接返回而不用等待此操作的完成。
AsyncI/O:
许多操作系统支持的另外一种I/O机制是POSIX标准的异步I/O。
本程序使用POSIX标准异步I/O接口来完成此测试功能。
例如:
aio_write(),aio_read(),aio_error()。
这个测试测量POSIX异步I/O机制的性能。
测试模式
IOZONE的测试过程中可以使用-i参数指定多个测试模式,例如-i0-i1-i2。
0=write/rewrite
1=read/re-read
2=randomread/randomwrite
3=backwardsread
4=re-write-record
5=stride-read
6=fwirte/re-fwrite
7=fread/re-fread
8=randommix
9=pwrite/re-pwrite
10=pread/re-pread
11=pwritev/re-pwritev
12=preadv/re-preadv
一些常见参数
-a自动模式(花费很长时间,注意),测试记录块大小从4k到16M,测试文件从64k到512M.文件大于32MB时停止使用低于64k以下记录块以节省时间
-y设置自动模式下的记录块最小值,-q设置自动模式下的记录块最大值
-n设置自动模式下的文件最小值,-g设置自动模式下的文件最大值
-B使用mmap()接口来创建并访问测试文件.即以读写内存的方式访问那个块来完成文件I/O
-i指定运行于哪种测试模式.可以使用-i0-i1-i2进行多个测试
-I对所有文件操作使用DIRECTI/O.通知文件系统所有操作跳过缓存直接在磁盘上操作
-R将结果导出到Excel文件
-b指定导出结果的Excel文件名
-f指定测试的文件名
-F进程throughput模式(多线程)测试时的文件名,请注意,有多少个线程,后面就应该跟多个个文件名
-c计算时间时包含close()参数,对于NFS3分区将非常有用
-G对mmap文件使用msync(MS_SYNC)。
告诉操作系统在mmap空间的所有数据需要被同步的写到磁盘上
-D对mmap文件使用MSYNC(MS_ASYNC)。
告诉操作系统在mmap空间的所有数据需要被异步的写到磁盘上
-o写操作都同步写入到磁盘中,即强制写入完成以后再返回benchmark
-r设置记录块大小
-s设置测试文件大小(建议是内存的2倍)
-I对所有文件操作使用DIRECTI/O,通知文件系统所有操作跳过缓存直接在磁盘上操作
-t使用throughput模式(多线程),并指定线程或进程数
-l设置最小进程数.在测试过程允许用户设置的最小进程或线程数.需要配合-u选项使用
-u设置最大进程或线程数,需要配合-l参数使用
HPC集群测试环境
某项目集群系统采用的存储系统(ParaStor200)包含2台索引控制器(两台双活冗余,负责元数据访问请求,同时负责存储系统的监控管理),6台数据控制器,系统管理、登陆、计算节点等客户端通过FDRInfiniBand网络访并行存储系统。
ParaStor200采用元数据和数据分离的非对称式结构,这也是国际主流的并行存储系统架构,元数据和数据分离有助于提升存储系统的性能和扩展性。
ParaStor200的多台索引控制(默认配置2台)采用多活冗余集群结构元数据存储采用RAID6保护的SSD高速磁盘以提高元数据访问性能。
Lustre等并行文件系统的元数据IO节点也支持冗余配置,但只支持一主一备的热备模式,正常工作时只有主节点响应并行文件系统元数据请求,另一台完全闲置,无论主节点负载多高备节点都无法帮助分担;当主节点故障时,元数据服务切换到备节点,切换时间通常达到5-10分钟,切换期间文件系统服务停止,会造成计算节点上正在运行的程序报错退出。
而ParaStor200采用更高级的元数据冗余策略。
ParaStor200的元数据控制器默认配置2台,同时支持更多的元数据控制器组成元数据集群,每台元数据控制器均为Active在线状态,正常工作时负载均衡并行文件系统客户端的元数据访问请求,一台元数据控制器出现故障时,其它元数据控制器分担其工作负载,接管时间非常短,且为在线切换,不中断正在进行的IO请求,不影响并行文件系统的业务运行。
除了元数据多活冗余,ParaStor200的数据传输网络也支持多活冗余,多套数据网络支持故障切换和负载均衡。
某项目集群系统的存储采用8+2:
1的保护策略,即8个数据对象匹配2个校验对象,这10个对象根据哈希算法分布在不同数据控制的不同硬盘上,这10块硬盘为一组,可以容忍2块硬盘同时失效而不至于数据丢失;整套存储系统可以容忍1台数据控制器失效而不至于数据丢失。
在这种配置下,存储系统空间利用率可达到80%
ParaStor200分布式存储系统具备简易的部署和运维管理功能,提供基于Web的统一监控管理平台,直观易懂的图形界面方便用户管理和监控系统的软硬件资源。
存储架构图
2.2文件系统
协议
存储设备
IO节点
挂载点
备注
parastor200
parastor200
索引节点
opara1(192.168.172.101)
opara2(192.168.172.102)
数据节点
ostor1(1192.168.172.103),ostor2(192.168.172.104),ostor3(192.168.172.105),ostor4(192.168.172.106),ostor5(192.168.172.107),ostor6(192.168.172.108)
/public
采用N+M:
B的方式,8+2:
1分配方式,有效利用率达80%
测试方法及结果
测试方案
并行存储系统聚合带宽测试用于测试存储系统的性能。
包括读写测试,其结果反映多用户并发读写作业时并行存储系统所能提供的读写速率,是并行存储系统的性能关键指标。
影响并行存储测试性能优劣的因素很多。
只有其中涉及的所有环节配置合理,才可以发挥出并行存储系统的最佳性能,否则任何一个环节都可能成为瓶颈。
磁盘类型(SATASAS...),RAID类型,业务接口配置,聚合网卡系能和兼容性,交换机,链路,网络设置,客户端主机性能,测试软件的设置,这些都是影响测试性能的重要因素。
本测试采用IOZONE对Parastor200并行存储系统进行聚合带宽测试。
测试用命令:
./iozone -Recb log.xls -t 200 -r 2048k -s1.8g -i 0 -i 1 -+m nodelist -C | tee iozone-20160424.log
IOZONE测试参数
数值
节点数
20
进程数/节点
10
块大小
1M/2M/4M/8M
文件大小
1.8G/4G
测试目录
/public/software/benchmark/iozone
测试结果
2.2.1单客户端单流性能测试
测试项目
测试单客户端单流IO性能
测试步骤
1.使用Linux客户端挂载文件系统;
2.在存储目录下执行以下命令:
iozone-s360g-t1-r1M-i0-i1-+n
3.记录测试结果(单位:
KB/sec)。
测试结果
写:
1233094KB/s
读:
330545KB/s
结果分析
测试结果与预期相符
备注
测试结果见截图
测试截图
2.2.2单客户端多流性能测试
测试项目
测试单客户端多流IO性能
测试步骤
1.Linux客户端挂载文件系统。
2.在存储目录下执行以下测试
iozone-s12g-t10-r1M-i0-i1-+n
3.记录测试结果(单位:
KB/sec)
测试结果
写:
1550958KB/s
读:
1519083KB/s
结果分析
测试结果与预期相符
备注
测试结果见截图
测试截图
2.2.3多客户端多流性能测试
测试随机抽取集群系统中的20个计算节点(一般抽取等同于IO节点数量即可)作为并行存储聚合带宽的测试节点,用于对并行存储系统进行读写操作。
文件大小为1.8G,测试结果(GB/s)如下:
文件块大小
1M
2M
4M
8M
读带宽
4.3
4.6
4.6
4.5
写带宽
7.5
7.3
7.1
7.1
文件大小为2G,测试结果(GB/s)如下:
文件块大小
1M
2M
4M
8M
读带宽
4.0
4.3
4.2
4.2
写带宽
6.4
6.7
6.6
6.6
文件大小为3G,测试结果(GB/s)如下:
文件块大小
1M
2M
4M
8M
读带宽
4.4
3.8
4.1
3.9
写带宽
6.5
6.0
6.4
6.3
文件大小为4G,测试结果(GB/s)如下:
文件块大小
1M
2M
4M
8M
读带宽
3.6
3.7
3.9
3.6
写带宽
5.5
5.9
6.0
5.4
测试结论
单客户端单流测试聚合带宽达到1.2GB/s,单个客户端多流测试读写聚合带宽达到1.5GB/s,说明并行文件系统具有良好的读写性能;
多客户端多流测试结果,显示聚合写带宽达到7.1GB/s,每个ostor有>1.1GB/s的写速率,读带宽达到4.6GB/s,重复读带宽达到12.0GB/s,说明P200并行文件系统的具有良好的并发读写性能,符合预期效果。
附录
由于输出信息量较大,此处仅列出20客户端10流测试结果,文件大小1.8G,文件块大小为4M:
Iozone:
PerformanceTestofFileI/O
Version$Revision:
3.420$
Compiledfor64bitmode.
Build:
linux-AMD64
Contributors:
WilliamNorcott,DonCapps,IsomCrawford,KirbyCollins
AlSlater,ScottRhine,MikeWisner,KenGoss
SteveLandherr,BradSmith,MarkKelly,Dr.AlainCYR,
RandyDunlap,MarkMontague,DanMillion,GavinBrebner,
Jean-MarcZucconi,JeffBlomberg,BennyHalevy,DaveBoone,
ErikHabbinga,KrisStrecker,WalterWong,JoshuaRoot,
FabriceBacchella,ZhenghuaXue,QinLi,DarrenSawyer,
VangelBojaxhi,BenEngland,VikentsiLapa.
Runbegan:
SunApr2411:
37:
042016
Excelchartgenerationenabled
Includefsyncinwritetiming
Includecloseinwritetiming
RecordSize4096KB
Filesizesetto1048576KB
Networkdistributionmodeenabled.
Commandlineused:
/public/software/benchmark/iozone/3.420/gnu/iozone-Recblog.xls-t200-r4096k-s1.8g-i0-i1-+miozone-list-20-C
OutputisinKbytes/sec
TimeResolution=0.000001seconds.
Processorcachesizesetto1024Kbytes.
Processorcachelinesizesetto32bytes.
Filestridesizesetto17*recordsize.
Throughputtestwith200processes
Eachprocesswritesa1048576Kbytefilein4096Kbyterecords
Testrunning:
Childrenseethroughputfor200initialwriters=7128661.41KB/sec
Minthroughputperprocess=19086.90KB/sec
Maxthroughputperprocess=65314.52KB/sec
Avgthroughputperprocess=35643.31KB/sec
Minxfer=389120.00KB
Child[0]xfercount=524288.00KB,Throughput=23943.72KB/sec
Child[1]xfercount=823296.00KB,Throughput=47514.71KB/sec
Child[2]xfercount=524288.00KB,Throughput=29145.42KB/sec
Child[3]xfercount=532480.00KB,Throughput=27224.55KB/sec
Child[4]xfercount=561152.00KB,Throughput=28227.82KB/sec
Child[5]xfercount=548864.00KB,Throughput=33249.22KB/sec
Child[6]xfercount=516096.00KB,Throughput=26801.29KB/sec
Child[7]xfercount=569344.00KB,Throughput=38230.96KB/sec
…
…
…
Child[198]xfercount=151552.00KB,Throughput=30376.84KB/sec
Child[199]xfercount=196608.00KB,Throughput=40128.27KB/sec
Testcleanup:
"ThroughputreportY-axisistypeoftestX-axisisnumberofprocesses"
"Recordsize=4096Kbytes"
"OutputisinKbytes/sec"
"Initialwrite"7128661.41
"Rewrite"8227938.96
"Read"4589625.12
"Re-read"12041317.51
iozonetestcomplete.
文档结束