一种提高Unixbench测试分数的方法

Unixbench性能测试,在直接执行Run脚本后,将会进行12个子测试题的测试,它们分别是"dhry2reg", "whetstone-double","execl", "fstime", "fsbuffer", "fsdisk", "pipe", "context1", "spawn","syscall","shell1", "shell8"。对于这12个子测试题,这里就不一一介绍了。

我们今天主要关注的是"fstime", "fsbuffer", "fsdisk"这三项测试,这三项测试主要是测试系统采用不同的缓存大小将文件数据从一个文件被传输到另外一个文件的性能,通过提高这三项的分数来达到提高Unixbench总分的目的。

Run脚本中指定的参数分析

下面让我们来看一下Run脚本中,这三项测试的参数吧:

一种提高Unixbench测试分数的方法

一种提高Unixbench测试分数的方法

一种提高Unixbench测试分数的方法

从图中我们可以看到三项测试都是采用了fstime这个测试命令执行的,fstime命令使用说明如下:

fstime [-c|-r|-w] [-b <bufsize>] [-m <max_blocks>] [-t <seconds>] [-d <tmpdir>]

fstime.c源码分析

从main函数入口,首先是参数解析,如下图:

一种提高Unixbench测试分数的方法

由上图和Run脚本中的参数可知,测试时指定了测试类型为c,测试时间为30s,测试目录为Run脚本中TMPDIR所指定的目录,并且还指定了缓存大小和块的数量。在测试执行之前先会在-d所指定的目录下创建dummy0和dummy1两个文件,代码中的定义如下:

一种提高Unixbench测试分数的方法

当测试类型指定为c时,将执行以下代码:

一种提高Unixbench测试分数的方法

  • w_test(2):在2s的时间内以指定的缓存大小往dummy0中写
  • r_test(2):在2s的时间内以指定的缓存大小从dummy0中写读
  • c_test(30):在30s的时间内以指定的缓存大小从dummy0中读,往dummy1中写。

提高分数的方法

这三项测试主要是在磁盘文件中进行读写操作,文件位置由Run脚本中的TMPDIR决定,而TMPDIR又可根据系统中UB_TMPDIR环境设置。如下图所示:

一种提高Unixbench测试分数的方法

因此,可在系统环境变量中设置UB_TMPDIR为/dev/shm。

/dev/shm这个目录是linux下一个利用内存虚拟出来的一个目录,这个目录中的文件都是保存在内存中,而不是磁盘上。其大小是非固定的,即不是预先分配好的内存来存储的。

这样这三项测试将跑在内存上,分数自然就提高啦,大家赶快动手试试吧。

上一篇:elastic search


下一篇:自建 ElasticSearch 迁移阿里云