1. 程式人生 > >sysbench的CPU,檔案I/O,OLTP三種基準測試

sysbench的CPU,檔案I/O,OLTP三種基準測試

sysbench是一款多執行緒系統壓測工具,可以執行多種型別的基準測試,它不僅設計用來測試資料的效能,也可以測試執行資料庫的服武器的效能

一,CPU基準測試

最典型的子系統測試

該測試使用64位整數,測試計算素數直到某個最大值所需要的時間

GNU/Linux伺服器:

檢視CPU配置:cat /proc/cpuinfo

分別在不同CPU配置的伺服器中執行測試

sysbench --test=cpu --cpu-max-prime=20000 run

檢視各自計算出素數的時間,進行比較

 

二,sysbench的檔案I/O基準測試

fileio基準測試可以測試系統在不同I/O負載下的效能。這對於比較不同的硬碟驅動器,不同的RAID卡,不同的RAID模式,都很有幫助。

可以根據測試結果來調整I/O子系統。檔案I/O基準測試模擬了很多InnoDB的I/O特性

測試的第一步是準備(prepare)階段,生成測試用到的資料檔案,生成的資料檔案至少要比記憶體大。如果檔案中的資料能完全放入記憶體中,則作業系統快取大部分的資料,導致測試結果無法體現I/O密集型的工作負載。

通過下面的命令建立一個數據集:

sysbench --test=fileio --file-total-size=150G prepare

這個命令會在當前的工作目錄下建立測試檔案,後續的執行(run)階段將通過讀寫這些檔案進行測試。

第二部就是執行(run)階段,針對不同的I/O型別有不同的測試選項:

seqwr 順序寫入

seqrewr 順序重寫

seqrd 順序讀取

rndrd 隨機讀取

rndwr 隨機寫入

rndrw 混合隨機讀/寫

下面的命令執行檔案I/O混合隨機讀/寫基準測試

sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

結果:。。。

輸出結果中包含了大量的資訊。和I/O子系統密切相關的包括每秒請求數和總吞吐量。

時間資訊也非常有用,尤其是大約95%的時間分佈。這些資料對於評估磁碟效能十分有用。

測試完成後,執行清楚(cleanup) 操作刪除第一步生成的測試檔案:

sysbench --test=fileio --file-total-size=150G cleanup

三,sysbench的OLTP基準測試

OLTP基準測試模擬了一個簡單的事務處理系統的工作負載

下面的例子使用的是一張超過百萬行記錄的表,第一步是先生成這張表:

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root prepare

生成測試資料只需要上面這條簡單的命令即可。接下來可以執行測試,這個例子採用了8個併發執行緒,只讀模式,測試時長60秒:

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-db=test --mysql-user=root --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run

結果:。。。

結果中包含了相當多的資訊。其中最有價值的資訊:

總的事務數

每秒事務數

時間統計資訊()

執行緒公平性統計資訊,用於表示模擬負載的公平性

----------------

sysbench還有一些其他的基準測試,但和資料庫效能沒有直接關係

記憶體(memory)

測試記憶體的連續讀寫效能

執行緒(thread)

測試執行緒排程器的效能。對於高負載情況下測試執行緒排程器的行為非常有用

互斥鎖(mutex)

測試互斥鎖的效能,方式是模擬所有執行緒在同一時刻併發執行,並都短暫請求互斥鎖(互斥鎖是一種資料結構,用來對某些資源進行排他性訪問控制,防止因併發訪問導致問題)

順序寫(seqwr)

測試順序寫的效能。這對於測試系統的實際效能瓶頸很重要。可以用來測試RAID控制器的告訴快取的效能狀況,如果測試結果異常則需要引起重視。例如,如果RAID控制器寫快取沒有電池保護,而磁碟的壓力達到了3000次請求/秒,就是一個問題,資料可能是不安全的。