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次請求/秒,就是一個問題,資料可能是不安全的。