TPCC-UVA測試環境搭建與結果分析
一、 准備
操作系統 :Linux, 內核版本2.6
需要軟件:tpccuva-1.2.3, postgresql-8.1.15, gnuplot-4.2.5。
tccuva是實現標准TPC-C。
Postgresql是最穩定的開源sql數據庫。
gunplot是一個數學軟件,可以根據數據畫出相應的函數圖形。
二、 安裝
1. 創建用戶
[root@RedHat /]# useradd -m tpcctest
[root@RedHat /]# passwd tpcctest(密碼自行創建)
以tpcctest身份登錄到系統
[root@RedHat /]# su tpcctest
[tpcctest@RedHat /]$
創建相關目錄
tpcctest@linux:>mkdir $HOME/tpcc-uva
tpcctest@linux:>mkdir $HOME/tpcc-uva/pgsql
tpcctest@linux:>mkdir $HOME/tpcc-uva/bin
2. 安裝PostgreSQL
1)執行下列命令安裝PostgreSQL數據庫
tpcctest@linux:> ./configure --prefix=$HOME/tpcc-uva/pgsql
tpcctest@linux:>gmake
tpcctest@linux:>gmake install
2)修改PATH和LD_LIBRARY_PATH環境變量。
3)編輯~/.bash_profile文件,添加以下內容
PATH=/usr/local/pgsql/bin:$PATH
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
export PATH LD_LIBRARY_PATH
4)執行下面的命令,使修改的環境變量生效。
tpcctest@linux :> source ~/.bash_profile
5)輸入以下命令,檢驗環境變量的修改是否生效
tpcctest@linux:> which initdb
如果修改正確,則會輸出以下信息
$HOME/tpcc-uva/bin/initdb
6) 啟動PostgreSQL
tpcctest@linux:>initdb -D $HOME/tpcc-uva/pgsql/data
tpcctest@linux:> postmaster -D $HOME/tpcc-uva/pgsql/data >log.out 2>log.err&
每次重啟系統後都要執行上面的命令來啟動PostgreSQL。
7)修改PostgreSQL的參數
修改$HOME/tpcc-uva/pgsql/data/postgresql.conf
將#checkpoint_segments = 3 # in logfile segments (16MB each), min 1
替換為checkpoint_segments = 10 # in logfile segments (16MB each), min 1
將#checkpoint_timeout = 300 # in seconds, range 30-3600
替換為checkpoint_timeout = 3600 # in seconds, range 30-3600
8)強制PostgreSQL重新讀取配置文件
tpcctest@linux:>killall -HUP postmaster
3. 安裝gnuplot
解壓gnuplot後,進入gnuplot的源代碼的目錄,執行下列命令安裝
tpcctest@linux:> ./configure --prefix=$HOME/tpcc-uva/bin --without-x
tpcctest@linux:> make
tpcctest@linux:> make install
4. 安裝tpcc-uva.
將tpcc-uva的安裝包放在$HOME/tpcc-uva目錄下
解壓,進入解壓後的目錄,執行下列命令安裝
tpcctest@linux:> make
tpcctest@linux:> make install
三、 使用tpcc-uva測試
執行$HOME/tpcc-uva/bin/bench命令,開始執行tpcc-uva測試工具。測試工具啟動後最多會出現8個選項讓用戶選擇。
1. 選項1Create a New Test Database(創建新的測試數據庫)
這個選項允許用戶創建一個新的數據庫供tpcc-uva測試用,新創建的數據庫惠子tpc-uva測試的工程中根據需要來填充。如果這個選項沒有出現,說明數據庫已經被創建了,新數據庫被放在$HOME/tpcc-uva/pgsql/data目錄下。
選了這個選項後,程序會問數據庫需要包含幾個數據倉庫。數據倉庫的數目在1~100之間。數據倉庫越多,測試壓力越大。
注意:數據倉庫的個數太多可能會造成測試失效。對於pc來說數據倉庫的個數一般是1,處理能力強的機器數目可以相應增加。每個數據倉庫占用137M的空間。
2. 選項2 Restore Existing Database (恢復存在的數據庫)
這個選項撤銷在測試過程中測試軟件對數據庫的修改,只有創建數據庫之後這個選項才會出現。
如果使用恢復的數據庫做測試,測試的結果可能會比用新創建的數據庫做測試的結果差。另一方面恢復一個數據庫的時間會比創建一個新數據庫的時間少很多。一般推薦使用恢復的數據庫做初步的測試
3. 選項3Run The Test(開始測試)
這個選項開始性能測試。只有當有數據庫被創建或者被恢復時這個選項才會出現。
程序會詢問用戶用於測試的參數。這些參數包括:
Number of warehouses (數據倉庫的個數):這個數字應該少於或等於存在數據庫中的數據倉庫的個數。
Number of terminals per warehouse (每個數據倉庫的終端數):TPC-C官方規范規定這個數字應該是10,如果用於初級測試我們推薦這個數字應該小於10。
Ramp-up period(啟動時間):終端進程會在啟動時間內開啟。這段時間過後性能會趨於穩定,這是再開始測試會比較准確。典型的啟動時間應該設置為20分鐘。
Measurement period (測試時間):這段時間測試工具測量系統的性能。TPC-C規定這個周期應該持續2小時~8小時。
所有的參數設置正確後,程序會提醒用戶測試過程中是否要執行清理。清理可以減少數據庫產生的殘留信息,殘留信息過多會影響測試的性能。對於8個小時的測試,最好每60分鐘執行一次清理,清理的次數要小於6次。
4. 選項4:Check Database Consistency(檢查數據庫一致性)
在經過確認之後,測試要在檢查完數據庫的一致性後開始。如果對某個表的檢查失敗,程序會要求用戶確認後繼續處理。雖然出錯後仍然可以繼續處理,但是仍然強力要求在出錯時恢復或重構數據庫。
5. 選項5Delete Database(刪除數據庫)
刪除存在的數據庫
6. 選項6Perform Data Analysis(執行數據分析)
這個選項讓程序分析測試的結果數據。所有的信息包括檢查點文件和清理的信息都在屏幕上顯示。在屏幕上顯示的信息還有用於生成性能分析圖形的文件都會在當前路徑下保存。在顯示完後在屏幕上打印一條信息來通知用戶測試是否通過了。
7. 選項7 Check Database State(檢查數據庫狀態)
這個選項檢查數據庫的行數,並把得到的信息告訴用戶。這個信息用來指導數據庫是否在前一次測試中被使用過了。如果被使用過了,用戶可以選擇刪除這個數據庫並建立一個新數據庫,或者恢復這個數據庫並繼續使用它。
8. 選項8 Quit(退出)
這個選項退出測試程序。創建的數據庫會保留下次使用。
四、查看測試結果
1. 保存結果
測試完成進入主菜單後,輸入選項6可以查看測試結果。測試結果在屏幕上輸出完畢後測試程序會提示是否需要保存結果,輸入文件名後結果會保存到文件中(如gresult)。
greult中保存了測試的大體情況,對每種事務類型分別記錄統計信息。在gresult文件中可以看到類似”NEW-ORDER TRANSACTIONS:”的標題,這就是對每種事物類型進行總結的開始。
在測試過程注意使用抓取系統信息:
iostat –xkd 1 20(表示1秒抓取一次,連續20次)
vmstat 1 20 (表示1秒抓取一次,連續20次)
測試結果如果是failed,具有參考意義;
注意:在當前目錄下回生成很多文件,其數據具有參考意義,比如g4.dat文件可以用來畫圖,可以觀察到數據的波動與走向。
2. 使用gnuplot畫圖
使用gnuplot畫圖需要先有一個畫圖腳本,tpcc-uva准備了一些腳本模板存在tpcc-uva源代碼中的scripts目錄下。腳本名561,562,563,564的含義是tpcc官方說明的第5.6.1節,5.6.2節…561畫的是響應時間的圖,562畫的是響應時間與吞吐率對比的圖,563畫的是思考時間(think time)的圖,564畫的是吞吐率的圖。
使用561.gnp時,要把這個腳本拷貝到保存tpcc結果的目錄下,然後用gresult中統計響應時間的90th的值乘以4得到的記過替換561.gnp中的<4x90thPERCENTILE>。
Gnuplot生成的圖片是以.eps結尾的,可以用photoshop打開.
五、附錄
linux修改用戶主目錄方法:
第一:修改/etc/passwd文件
這個找到要修改的用戶那幾行,修改掉就可以了。
第二:usermod命令