使用IOzone执行IOPS测试
执行IOPS(每秒执行的I/O操作数)测试时我也使用了IOzone,此外,IOzone也常常用来测试吞吐量,具体地说就是它能测试连续读/写IOPS和随机读/写IOPS。我们使用IOzone测试了四种IOPS测试:
- 读
- 写
- 随机读
- 随机写
和吞吐量测试一样,IOPS测试使用的文件大小也是系统主内存的两倍,我们的目标是让文件大小超过Linux可以缓存的容量大小,和前面一样,测试使用的文件大小为16GB,四个记录大小:4KB、8KB、32KB和64KB,选择这些大小是因为越小的记录大小运行时间越长,每种测试我们都分别执行了10次,因此基准测试时间很长(以周计算)。此外,4KB是IOPS测试的典型记录大小。执行测试的命令如下:
/iozone -Rb spreadsheet_output_4K.wks -O -i 0 -i 1 -i 2 -e -+n -r 4K -s 16G > output_4K.txt
The command line for the second record size (8KB) is,
./iozone -Rb spreadsheet_output_8K.wks -O -i 0 -i 1 -i 2 -e -+n -r 8K -s 16G > output_8K.txt
The command line for the third record size (32KB) is,
./iozone -Rb spreadsheet_output_32K.wks -O -i 0 -i 1 -i 2 -e -+n -r 32K -s 16G > output_32K.txt
The command line for the fourth record size (64KB) is,
./iozone -Rb spreadsheet_output_64K.wks -O -i 0 -i 1 -i 2 -e -+n -r 64K -s 16G > output
Metarates
HPC存储系统最常用的基准测试叫做Metarates,它由UCAR(University Corporation for Atmospheric Research)公司开发,实际上它是一个使用POSIX系统调用测试元数据性能的MPI应用程序。
- Create():打开或创建一个文件。
- Stat():获得文件状态。
- Unlink():删除引用的文件名。
- Fsync():同步文件的内核状态。
- Close():关闭文件描述符。
- Utime():修改文件最后访问和修改时间。
使用这些系统调用,Metarates的主要分析选项如下:
- 测试文件创建/关闭(每秒创建/关闭的文件)的速度。
- 测试utime调用的速度(每秒utime操作次数)。
- 测试stat调用的速度(每秒stat操作次数)。
Metarates可以设置每MPI进程写文件的数量,一个MPI应用程序可以有N个进程,N最小为1,还可以设置文件是写到单个目录还是多个目录,它也可以使用系统调用fsync()同步文件的内核状态。
记住Metarates是一个MPI应用程序,允许我们选择进程(核心)的数量,我们测试时选择了1、2和4个核心(三个独立的测试),这些测试被标记为NP=1(1核心),NP=2(2核心)和NP=4(4核心),NP表示进程的数量。执行这些测试的命令如下:
time mpirun -machinefile ./machinefile -np 4 ./metarates -d junk -n 1000000 -C -U -S –u
这里的“-np”表示进程数量(本例中是4),“-machinefile”指的是运行时使用的系统主机名列表(本例是一个./machinefile文件,包含了测试机器的主机名),结果输出到一个名为metarates_disk.np_4.1.out的文件中,请自行理解文件的命名规则。
我们执行了三种不同的性能测试:
- 文件create和close速度(每秒的次数)。
- 文件stat速度(每秒stat操作次数)。
- 文件utime速度(每秒utime操作次数)。