ior_easy_write
多个客户端、多个任务、并发地、顺序地、独立地向存储集群中写数据,这一项主要测试存储集群的写入能力。默认每个任务写入9.9TB,200个任务会写入PB级的数据,这个测试模拟了传统HPC写入密集型应用场景。
mdtest_easy_write
多个客户端、多个任务、并发地、独立地向存储集群中创建大量空文件,每个任务独占一个目录,这一项主要测试存储集群元数据的处理能力。默认每个任务写90万文件,200个任务共写入1.8亿文件。这个测试模拟了新兴的人工智能场景中写入海量文件的场景,侧重于元数据性能的测试。
ior_hard_write
多个客户端、并发地、共享地写同一个文件,每个任务每次写的数据量是47008 Bytes,这一项主要测试协同写单个文件。默认每个任务要写190万次,每次写47008 Bytes。这一测试模拟的是传统HPC场景,多个计算任务同时更新同一个文件时,文件系统锁以及并发写入的能力。
mdtest_hard_write
多个客户端、并发地创建大量文件,创建文件后,会写3901Bytes数据,所有任务的文件都写到同一个目录下。默认每个任务写95万文件,200个任务共写入1.9亿文件。这个测试也是模拟新兴的人工智能场景中写入海量文件的场景,与mdtest_easy_write侧重元数据性能测试不同的是,mdtest_hard_write会同时考察文件系统数据写入的能力。
find
对前面创建的大量文件去做find查询,考察海量文件下,基于标准POSIX语义的文件系统查询性能。
ior_easy_read
多个客户端、多个任务、并发地、顺序地读取自己在ior_easy_write阶段写入的数据。该测试模拟传统HPC场景中,多客户端并发读取数据的过程。
mdtest_easy_stat
多个客户端、多个任务、并发地去stat自己在mdtest_easy_write阶段创建的空文件,这个测试模拟人工智能等应用,在海量文件场景下对文件系统最常用的stat操作性能(文件系统的大量操作会调用到stat接口)。
ior_hard_read
多个客户端、多个任务、并发地去读取自己在ior_hard_write阶段写入的文件,每次读取数据量47008 Bytes。该测试模拟传统HPC业务,多个计算任务并发加载数据的过程。
mdtest_hard_stat
多个客户端、多个任务、并发地去stat自己在mdtest_hard_write阶段写入的文件,stat之后再读取3901 Bytes数据。该测试模拟人工智能业务检索、open、随后读取文件的过程,并评估这一过程的性能。
mdtest_easy_delete
多个客户端、多个任务、并发地去delete自己在mdtest_easy_write阶段创建的文件。该测试模拟元数据集群对海量空文件并发删除的支持和性能。
mdtest_hard_read
多个客户端、多个任务、并发地去读取自己在mdtest_hard_write阶段写入的文件,读取3901 Bytes数据。该测试模拟人工智能业务对元数据集群open,并读取指定小文件内容的性能。
mdtest_hard_delete
多个客户端、多个任务、并发地去delete自己在mdtest_hard_write阶段创建的文件。该测试模拟文件系统对海量小文件元数据以及数据删除的性能。
从这些测试项可以看出,IO500主要测试了四大类场景:
- 存储集群的吞吐能力,验证多个任务顺序写,相互之间有无数据冲突,看集群能提供的写入、读取吞吐的上限。ior_easy_write、ior_easy_read主要用于测试这个场景。
- 存储集群对于共享读写的处理能力,多个任务共享、协同地读写同一个文件,需要做一定的并发控制,否则测试将因数据错乱而报错。ior_hard_write、ior_hard_read主要用于测试这个场景,这部分测试针对的是HPC的典型IO类型。
- 存储集群对于小文件IO的处理能力,比如mdtest_hard_read、mdtest_hard_write的读写3901 Bytes,如果数据布局不当,这项测试的性能值会很低。
- 存储集群元数据的处理能力,重点考察集群创建、查询、删除文件的性能。其中md*hard**还会去测试单个目录下大量文件(单目录下1.9亿文件)这个场景的性能。