Unixbench性能测试,在直接执行Run脚本后,将会进行12个子测试题的测试,它们分别是"dhry2reg", "whetstone-double","execl", "fstime", "fsbuffer", "fsdisk", "pipe", "context1", "spawn","syscall","shell1", "shell8"。对于这12个子测试题,这里就不一一介绍了。
我们今天主要关注的是"fstime", "fsbuffer", "fsdisk"这三项测试,这三项测试主要是测试系统采用不同的缓存大小将文件数据从一个文件被传输到另外一个文件的性能,通过提高这三项的分数来达到提高Unixbench总分的目的。
Run脚本中指定的参数分析
下面让我们来看一下Run脚本中,这三项测试的参数吧:
从图中我们可以看到三项测试都是采用了fstime这个测试命令执行的,fstime命令使用说明如下:
fstime [-c|-r|-w] [-b <bufsize>] [-m <max_blocks>] [-t <seconds>] [-d <tmpdir>]
fstime.c源码分析
从main函数入口,首先是参数解析,如下图:
由上图和Run脚本中的参数可知,测试时指定了测试类型为c,测试时间为30s,测试目录为Run脚本中TMPDIR所指定的目录,并且还指定了缓存大小和块的数量。在测试执行之前先会在-d所指定的目录下创建dummy0和dummy1两个文件,代码中的定义如下:
当测试类型指定为c时,将执行以下代码:
- w_test(2):在2s的时间内以指定的缓存大小往dummy0中写
- r_test(2):在2s的时间内以指定的缓存大小从dummy0中写读
- c_test(30):在30s的时间内以指定的缓存大小从dummy0中读,往dummy1中写。
提高分数的方法
这三项测试主要是在磁盘文件中进行读写操作,文件位置由Run脚本中的TMPDIR决定,而TMPDIR又可根据系统中UB_TMPDIR环境设置。如下图所示:
因此,可在系统环境变量中设置UB_TMPDIR为/dev/shm。
/dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。
这样这三项测试将跑在内存上,分数自然就提高啦,大家赶快动手试试吧。