關于主機的性能問題,眾說紛紜。尤其IBM出了POWER 5 芯片之后,跟HP和SUN等主機之間更是你來我往爭得不亦樂乎。
作為我們使用者而言,到底是聽誰的?每個銷售或者售前都可以給你一堆對自己有利的資料,甚至說剪切了競爭對手的資料的一部分,這對于客戶極具有蠱惑力。對于TPCC等相關資料他們早已經研究得很透徹,客戶也難以從TPC官方站點獲得對自己有區分度的信息。在這樣的背景下,我們決定自己建立一個測試模型并實現,以作為挑選主機的標準。
[關鍵字]
主機 性能 選型 測試 標準 TPCC
測試系統設計
由于主機性能主要決定于 CPU 性能、內存訪問速度以及系統總線帶寬等。我們在主機測試中需要考慮回避因為存儲能力而引起的性能差異,也就是說測試系統將產生盡量少的IO。作為DBA主要和數據庫打交道,為此我選擇了數據庫應用來進行測試。本測試每一輪使用固定的測試數據,通過在client端循環抽取用戶名登陸做一系列操作,這些操作將避免向client回送大量數據以減少網絡的影響。最后我們將根據系統運行穩定后client統計得出的每秒完成任務數量來評估主機系統性能。
1:數據準備
從真實系統收取了一個非常典型、高壓力的應用在固定時間點數據,保存備份,每次測試前導入數據庫。同時我們將用戶ID信息倒出成文本文件,這將放置于各client端用戶隨機抽取用戶進行壓力測試。
2:應用的數據庫特征
所有對數據庫的訪問都通過包來進行,我們可以很清楚的知道到應用將執行什么操作,client也避免向數據庫服務器發送大量的sql語句,并且在一次數據庫請求中可能做出多次處理。在每個client任務中包含了大約20多條SQL(包括DML)。這些SQL的資源消耗有大有小,但DML產生的日志量相對比較。ㄎ覀優榱吮M可能的避免IO的影響)。
3:client 端設計
Client 端是用C編寫的一段訪問數據庫并發出數據庫請求的代碼,主要在linux環境下編譯運行。Client端程序倚賴于oracle client 使用OCI驅動訪問oracle數據庫,并有一個數據庫配置文件配置數據庫連接信息。Client程序可以配置啟動的進程數量以及每個進程所需要循環完成的任務數量。每個進程通過在準備好的文本文件中隨機抽取一個用戶id 并進行一系列的數據庫調用,每完成一千次任務就將本次完成時間輸出到屏幕或者文件。
4:測試的進行
為了確保數據庫服務器的性能發揮到極致,我們會采用多臺client進行測試,并且client 的響應速度良好。具體來說,就是一臺一臺的client往上加,client上的進程數量也是逐步往上加;旧衔覀儼l現client 機器平均一顆cpu只能支持2個進程,多余2個進程則client負載將升高響應速度反而下降。在確保client響應迅速的前提下我們逐步增加client機器數量。同時觀察主機負載和響應速度。當client 機器超過一定數量之后主機響應速度將開始下降。我們將作出一組曲線,最后選取一個主機性能發揮的最高點作為測試結果。
5:測試結果的檢查
我們可以搜集每臺client 端輸出信息進行統計計算,看單位時間內完成了多少任務。也可以通過在數據庫端啟動statspack任務搜集統計數據。當然我們傾向于后者,因為一個任務對于數據庫來講我們設定的就是一個大的事務,通過數據庫事務數量就可以得到結果。另外在oracle statspack report 中我們可以看到各sql的執行情況,以判定本次測試sql的執行計劃是不是有偏差,如果有偏差則需要進行調整而使得所有測試sql執行計劃和資源消耗保持一致。
延伸閱讀
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/