sysbench文檔

sysbench

針對數據庫系統的多線程基準測試工具(benchmark tool)

命令格式

sysbench [common-options] --test=name [test-options] <command>
Command有: prepare run cleanup help version

詳解

  • sysbench是一個模塊化、跨平臺以及多線程的基準測試工具
  • 用來評估操作系統參數,這些參數對於正在運行一個高負載的數據庫的系統非常重要
  • 這個benchmark組件的核心思想是快速獲取系統性能的印象,而不需要安裝複雜的數據庫benchmark或者甚至根本不需要安裝數據庫。
  • 設計非常簡單。Sysbench運行指定數量的線程,這些線程併發地執行請求。
  • 請求產生的實際工作負載取決於特定的測試模式
  • 你可以限制要麼是請求的總數,或者是benchmark的總運行時間,或者兩者都行

內置數據庫驅動

  • mysql MySQL驅動
  • pgsql PostgreSQL驅動

內置測試

  • fileio 文件IO測試
  • cpu CPU性能測試
  • memory 內存功能速度測試
  • threads 線程子系統性能測試
  • mutex 互斥鎖性能測試
  • 注意:
    • 可用的測試模式是通過內置模塊實現的。並且Sysbench被設計成非常容易去添加新的測試模式。
    • 每個測試模式都有額外的其他選項的

通用選項

  • –num-threads=N 使用的線程數[1]
  • –max-requests=N 請求總數的限制[10000]
  • –max-time=N 以秒爲單位的總的執行時間 [0]
  • –forced-shutdown=STRING 在等了--max-time的時間之後,才強制關閉[off]
  • –thread-stack-size=SIZE 每個線程的線程棧大小64K]
  • –tx-rate=N 目標事務處理速率就是tps(tps)[0]
  • –report-interval=N 定期以指定的時間間隔(以秒爲單位)報告中間統計信息。 0禁用中間報告[0]
  • –report-checkpoints=轉儲完整的統計信息並在指定的時間點重置所有計數器。 該參數是逗號分隔值的列表,表示當必須執行checkpoint(s)時,從開始測試到此刻所經過的秒數。 默認情況下,報告檢查點處於關閉狀態。[]
  • –test=STRING 要運行的測試
  • –debug=[on|off] 打印更多的調試信息[off]
  • –validate=[on|off] 當可能的時候執行有效性檢查[off]
  • –help=[on|off] 答應help菜單並退出
  • –version=[on|off] 打印版本信息並退出[off]
  • –rand-type=STRING 隨機數分佈{uniform,gaussian,special,pareto} [special]
  • –rand-spec-iter=N 用於數字生成器的迭代數[12]
  • –rand-spec-pct=N 被視爲“特殊”(特殊分配)的值的百分比[1]
  • –rand-spec-res=N 要使用的“特殊”值的百分比(用於特殊分配)[75]
  • –rand-seed=N 隨機數生成器的種子,當0 [0]時忽略
  • –rand-pareto-h=N 參數h用於pareto分佈[0.2]
  • –config-file=FILENAME 包含命令行選項的文件名

日誌選項

  • –verbosity=N 囉嗦級別{5 - debug, 0 - only critical messages} [3]
  • –percentile=N 查詢響應時間的百分數排名,使用0可以關掉百分位統計。[95] percentile rank of query response times to count. Use the special value of 0 to disable percentile statistics. [95]

通用數據庫選項

  • –db-driver=STRING 指定要用的數據庫驅動
  • –db-ps-mode=STRING 使用prepared語句模式(防sql注入攻擊的那種東西) {auto, disable} [auto]
  • –db-debug=[on|off] 打印數據庫特定的調試信息 [off]

mysql選項

  • –mysql-host=[LIST,…] 服務端主機[localhost]
  • –mysql-port=[LIST,…] 服務端端口[3306]
  • –mysql-socket=[LIST,…] MySQL套接字
  • –mysql-user=STRING MySQL用戶[sbtest]
  • –mysql-password=STRING MySQL密碼[]
  • –mysql-db=STRING MySQL數據庫名[sbtest]
  • –mysql-table-engine=STRING 測試表使用的存儲引擎{myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]
  • –mysql-engine-trx=STRING 使用的存儲引擎是否是事務性的{yes,no,auto} [auto]
  • –mysql-ssl=[on|off] 如果客戶端庫支持SSL連接的話,使用SSL連接[off]
  • –mysql-compression=[on|off] 如果客戶端庫支持的話,使用壓縮[off]
  • –myisam-max-rows=N MyISAM表的最大行參數 [1000000]
  • –mysql-debug=[on|off] dump所有的客戶端庫的調用[off]
  • –mysql-ignore-errors=[LIST,…] 要忽略的錯誤的列表,或者寫成all [1213,1020,1205]
  • –mysql-dry-run=[on|off] 空運行,裝作所有的MySQL客戶端API調用都是成功的,而不執行他們[off]

文件IO選項

  • –file-num=N 創建的文件數[128]
  • –file-block-size=N 在所有的IO操作中使用的塊大小[16384]
  • –file-total-size=SIZE 要創建的文件大小的總數[2G]
  • –file-test-mode=STRING 測試模式{seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}
  • –file-io-mode=STRING 文件操作模式{sync,async,mmap} [sync]
  • –file-async-backlog=N 每線程排隊的異步操作數[128]
  • –file-extra-flags=STRING 文件打開時使用的額外的標誌{sync,dsync,direct} []
  • –file-fsync-freq=N 在多少個請求之後做fsync() (0 - don’t use fsync()) [100]
  • –file-fsync-all=[on|off] 在每個寫操作之後做fsync() [off]
  • –file-fsync-end=[on|off] 在測試結束的時候做fsync[on]
  • –file-fsync-mode=STRING 使用哪種方式進行同步{fsync, fdatasync} [fsync]
  • –file-merged-requests=N 如果可能的話,合併最多N次IO請求 (0 - don’t merge) [0]
  • –file-rw-ratio=N 讀/寫的比率[1.5]

CPU選項

  • –cpu-max-prime=N 素數發生器的上限[10000]

內存選項

  • –memory-block-size=SIZE 測試用的內存塊大小[1K]
  • –memory-total-size=SIZE 總的要變換的數據大小[100G]
  • –memory-scope=STRING 內存訪問作用域{global,local} [global]
  • –memory-hugetlb=[on|off] 從HugeTLB池中分配內存[off]
  • –memory-oper=STRING 內存操作的類型{read,write,none} [write]
  • –memory-access-mode=STRING 內存訪問模式{seq,rnd} [seq]

線程選項

  • –thread-yields=N 每個請求做的yields數量[1000]
  • –thread-locks=N 每個線程的鎖的數量[8]

互斥鎖選項

  • –mutex-num=N mutex數組的大小[4096]
  • –mutex-locks=N 每個線程做的互斥鎖加鎖操作[50000]
  • –mutex-loops=N 在互斥鎖加鎖內做的空的循環次數[10000]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章