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-uvatpcctest@linux:>mkdir $HOME/tpcc-uva/pgsqltpcctest@linux:>mkdir $HOME/tpcc-uva/bin2. 安裝PostgreSQL1)執行下列命令安裝PostgreSQL資料庫tpcctest@linux:> ./configure --prefix=$HOME/tpcc-uva/pgsqltpcctest@linux:>gmaketpcctest@linux:>gmake install2)修改PATH和LD_LIBRARY_PATH環境變數。3)編輯~/.bash_profile檔案,添加以下內容PATH=/usr/local/pgsql/bin:$PATHLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/libexport PATH LD_LIBRARY_PATH4)執行下面的命令,使修改的環境變數生效。tpcctest@linux :> source ~/.bash_profile5)輸入以下命令,檢驗環境變數的修改是否生效tpcctest@linux:> which initdb如果修改正確,則會輸出以下資訊$HOME/tpcc-uva/bin/initdb6) 啟動PostgreSQLtpcctest@linux:>initdb -D $HOME/tpcc-uva/pgsql/datatpcctest@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-xtpcctest@linux:> maketpcctest@linux:> make install 4. 安裝tpcc-uva.將tpcc-uva的安裝包放在$HOME/tpcc-uva目錄下解壓,進入解壓後的目錄,執行下列命令安裝tpcctest@linux:> maketpcctest@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命令