天天看點

一種提高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下一個利用記憶體虛拟出來的一個目錄,這個目錄中的檔案都是儲存在記憶體中,而不是磁盤上。其大小是非固定的,即不是預先配置設定好的記憶體來存儲的。

這樣這三項測試将跑在記憶體上,分數自然就提高啦,大家趕快動手試試吧。

繼續閱讀