開發與維運

一種提高Unixbench測試分數的方法

Unixbench性能測試,在直接執行Run腳本後,將會進行12個子測試題的測試,它們分別是"dhry2reg", "whetstone-double","execl", "fstime", "fsbuffer", "fsdisk", "pipe", "context1", "spawn","syscall","shell1", "shell8"。對於這12個子測試題,這裡就不一一介紹了。

我們今天主要關注的是"fstime", "fsbuffer", "fsdisk"這三項測試,這三項測試主要是測試系統採用不同的緩存大小將文件數據從一個文件被傳輸到另外一個文件的性能,通過提高這三項的分數來達到提高Unixbench總分的目的。

Run腳本中指定的參數分析

下面讓我們來看一下Run腳本中,這三項測試的參數吧:

fstime.PNG

fsbuffer.PNG

fsdisk.PNG

從圖中我們可以看到三項測試都是採用了fstime這個測試命令執行的,fstime命令使用說明如下:

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

fstime.c源碼分析

從main函數入口,首先是參數解析,如下圖:

args.PNG

由上圖和Run腳本中的參數可知,測試時指定了測試類型為c,測試時間為30s,測試目錄為Run腳本中TMPDIR所指定的目錄,並且還指定了緩存大小和塊的數量。在測試執行之前先會在-d所指定的目錄下創建dummy0和dummy1兩個文件,代碼中的定義如下:

dummy.PNG

當測試類型指定為c時,將執行以下代碼:

ctest.PNG

  • w_test(2):在2s的時間內以指定的緩存大小往dummy0中寫
  • r_test(2):在2s的時間內以指定的緩存大小從dummy0中寫讀
  • c_test(30):在30s的時間內以指定的緩存大小從dummy0中讀,往dummy1中寫。

提高分數的方法

這三項測試主要是在磁盤文件中進行讀寫操作,文件位置由Run腳本中的TMPDIR決定,而TMPDIR又可根據系統中UB_TMPDIR環境設置。如下圖所示:

ub_tmp.PNG

因此,可在系統環境變量中設置UB_TMPDIR為/dev/shm。

/dev/shm這個目錄是linux下一個利用內存虛擬出來的一個目錄,這個目錄中的文件都是保存在內存中,而不是磁盤上。其大小是非固定的,即不是預先分配好的內存來存儲的。

這樣這三項測試將跑在內存上,分數自然就提高啦,大家趕快動手試試吧。

Leave a Reply

Your email address will not be published. Required fields are marked *