歡迎您光臨本站 註冊首頁

DB2 自調優內存管理器日誌分析器

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  
從 IBM® DB2® for Linux®, UNIX®, and Windows® 9 開始,DB2 有了一個新的內存調優特性 —— 自調優內存管理器(Self-tuning Memory Manager,STMM),它會自動設置幾個重要的內存配置參數,從而簡化內存配置任務。本文介紹一個用來分析 STMM 日誌文件的簡單工具,從而幫助監視內存管理器做出的決策。本文已經更新以反映日誌分析器的重要改進。

要點:在閱讀本文之前,請先閱讀 免責聲明。

 

簡介

在啟用時,內存調優器會動態地把可用的內存資源分配給多個內存消耗者,包括排序堆、包緩存、鎖列表和緩衝區池。此特性會反覆地小幅修改內存配置,以改進系統的總體性能。

STMM 所做的所有修改會記錄在兩個位置:db2diag.log 和 STMM 日誌文件。下面討論這兩個日誌文件的內容,以及如何使用 db2diag 工具和 parseStmmLogFile.pl 工具監視 STMM 所做的修改。





STMM 的工作方式

STMM 在新的內部指標的幫助下做出決策,這些指標預測增加內存對給定的堆的影響。通過與 STMM 的高級調優演算法結合使用,在大多數情況下,這些指標可以在一小時內把系統從開箱即用配置調整到接近最優的內存使用狀態。但是,在系統調優過程中,STMM 可能做出數百個調優決策,每個決策都會導致修改配置參數或緩衝區池大小。配置文件只反映最近的修改,所以要想了解配置參數或緩衝區池的修改歷史,就需要查看 db2diag.log 和 STMM 日誌文件。





通過 db2diag.log 文件監視修改

db2diag.log 文件存儲內存管理器所做的每次配置修改的簡單信息。在此文件中,可以看到表示配置修改的記錄,見清單 1:


清單 1. 表示配置修改的記錄
				  2006-10-17-19.10.00.912218-240 I408210A457        LEVEL: Event  PID     : 946302               TID  : 1           PROC : db2stmm (MYDB1) 1  INSTANCE: ewhhr                NODE : 001         DB   : MYDB1  APPHDL  : 1-52                 APPID: *N1.cgarciaa.060809150048  AUTHID  : CGARCIAA  FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20  CHANGE  : STMM CFG DB DEWHR000: "Sheapthres_shr" From: "109306" <automatic>                                                   To: "105115" <automatic>  

注意,上面的記錄在配置修改前面加上了 “STMM CFG”,這表示這項修改是由 STMM 執行的,而不是用戶所做的配置更新。還可以看到表示緩衝區池修改的記錄,見清單 2:


清單 2. 表示緩衝區池修改的記錄
				  2006-10-17-19.03.58.672185-240 I395047A488        LEVEL: Event  PID     : 946302               TID  : 1           PROC : db2stmm (MYDB1) 1  INSTANCE: ewhhr                NODE : 001  APPHDL  : 1-52                 APPID: *N1.cgarciaa.060809150048  AUTHID  : CGARCIAA  FUNCTION: DB2 UDB, buffer pool services, sqlbAlterBufferPoolAct, probe:90  MESSAGE : Altering bufferpool “BUFFERPOOL_16K" From: “117268" <automatic>                                                 To: “109666" <automatic>   

可以使用 db2diag 工具過濾出 db2diag.log 中的這些記錄。例如,下面的命令查看對緩衝區池大小所做的所有修改:


清單 3. 查看緩衝區池修改的 db2diag 命令
				  db2diag -g "message:=Altering bufferpool" db2diag.log  

對於通過使用 DB2 的數據分區特性建立多個分區的資料庫,可以使用 -node 選項過濾出對每個分區所做的修改。例如,下面的命令過濾出對分區 1 的所有資料庫配置更新:


清單 4. 查看配置修改的 db2diag 命令
				  db2diag -node 1 -g "changeevent:=CFG DB" db2diag.log  





STMM 日誌

除了 db2diag.log 文件中的日誌項之外,還在 STMM 日誌中記錄更詳細的修改信息。STMM 日誌存儲在 db2diag.log 文件所在的目錄中的 stmmlog 子目錄中。STMM 日誌的主要用途是供 DB2 支持人員在判斷問題時使用。但是,STMM 日誌中的一些調優信息可以幫助 DBA 理解 STMM 所做的調優決策。STMM 日誌中的每個日誌項記錄在做出調優決策之前收集的統計數據,以及根據這些統計數據執行的操作。STMM 分割為最多五個文件,每個文件的最大大小為 10MB。按照一種循環方式維護這些日誌文件,在創建新文件之前會刪除最老的文件。

STMM 日誌文件分析器的目的是過濾出重要的調優信息並進行格式化,從而便於了解內存配置的修改過程。





分析 STMM 日誌文件

分析工具 parseStmmLogFile.pl 採用以下語法:


清單 5. parseStmmLogFile.pl 語法
				  parseStmmLogFile.pl <log file> <database name> <options>  

此工具生成的輸出採用表格形式。無論用戶選擇什麼選項,表格的前四列都是相同的。前四列是:

  • 調優號
  • 發生這次調優的時間
  • 從日誌文件中第一次調優以來的總秒數
  • 從前一次調優開始以來的秒數。這個值包含調整內存堆大小花費的時間和收集調優決策所需的統計數據花費的時間。

清單 6 給出前四列的一個示例,其中包含兩次調優。


清單 6. parseStmmLogFile.pl 示例輸出
				  [ MEMORY TUNER - LOG ENTRIES ]  [ Interv ] [        Date         ] [ totSec ] [ secDif ]  [        ] [                     ] [        ] [        ]  [      1 ] [ 02/01/2006 09:45:02 ] [     76 ] [     76 ]  [      2 ] [ 02/01/2006 09:46:03 ] [    137 ] [     61 ]  

根據選擇的選項不同,此工具會分析 STMM 日誌文件並收集相關的詳細信息。下面是可以選用的四個選項:

  • (s) — 顯示所有內存消耗者的新大小(默認選項)。
  • (m) — 顯示所有內存消耗者的最小大小。
  • (b) — 顯示所有內存消耗者的收益數據。收益數據表示增加內存給所有內存消耗者帶來了多大好處。
  • (o) — 顯示 DATABASE_MEMORY 調優信息。

另外,還有兩個用來調整輸出的可選標誌(必須與上面的選項之一一起使用):

  • (4) — 把所有內存消耗者轉換為以 4KB 頁面作為大小單位。
  • (d) — 生成以分號分隔的輸出。此選項有助於把分析器輸出導入到電子表格中。

示例 1. 調整堆大小的歷史

此示例顯示 STMM 執行的配置參數和緩衝區池修改。

在清單 7 中,parserStmmLogfile.pl 命令顯示兩次調優的信息。第一次調優開始於創建這個 STMM 日誌文件后 76 秒,調整的兩個參數是 SHEAPTHRES_SHR 和 PCKCACHESZ。第二行顯示的第二次調優開始於 61 秒之後,它把 1000 個頁面從 PCKCACHESZ 轉移到 SHEAPTHRES_SHR。


清單 7. 調優的示例輸出
				  $ parseStmmLogFile.pl stmm.0.log mydbname s                            [ MEMORY TUNER - LOG ENTRIES ]     [ Interv ] [        Date         ] [ totSec ] [ secDif ] [ newSz ]    [        ] [                     ] [        ] [        ] [ SHEAPTHRES_SHR  PCKCACHESZ ]     [      1 ] [ 02/01/2006 09:45:02 ] [     76 ] [     76 ] [ 31482 19438 ]           [      2 ] [ 02/01/2006 09:46:03 ] [    137 ] [     61 ] [ 32482 18438 ]  

示例 2. 調整資料庫內存大小的歷史

下面的命令輸出資料庫內存調優決策的基本信息。輸出的信息包括內存調優器判斷出的系統內存總量 (configMem)、DB2 可以使用的物理內存量 DB2 (memAvail) 以及由 DATABASE_MEMORY 配置參數指定的當前資料庫共享內存量 (setConfSz)。


清單 8. 資料庫內存調優的示例輸出
				  $ parseStmmLogFile.pl stmm.0.log mydbname o    [ MEMORY TUNER - DATABASE MEMORY AND OVERFLOW BUFFER TUNING - OG ENTRIES ]  [ Interv ][ Date                ][ totSec ][ secDif ][ configMem ][ memAvail ][ setCfgSz ]  [      1 ][ 02/01/2006 09:45:02 ][     76 ][     76 ][       N/A ][      N/A ][      N/A ]  [      2 ][ 02/01/2006 09:46:03 ][    137 ][     61 ][   4194304 ][  1559966 ][    62224 ]  

示例 3. 調整 SORTHEAP 大小的歷史

下面的命令輸出 SORTHEAP 配置參數值的調優信息。每行表示對 SORTHEAP 值的一次成功的自動更新。輸出的信息包括 SORTHEAP 配置參數以前的值 (OLD)、當前值 (NEW) 以及內存調優器計算出的最小值和最大值 (min 和 max)。


清單 9. SORTHEAP 調優的示例輸出
				  $ parseStmmLogFile.pl stmm.0.log mydbname v    [ SORTHEAP TUNING - SORTHEAP CHANGE VALIDATION RECORDS ]  [ Date                ][ totSec ][ secDif ][ SHEAPTHRES_SHR ][ OLD ][ NEW ][ min ][  max ]  [ 02/01/2006 14:51:01 ][    184 ][    184 ][          11212 ][ 373 ][ 560 ][ 224 ][ 2243 ]  





提示和技巧

  • 在運行此工具時指定的資料庫名必須在 STMM 日誌文件中存在。
  • 為了獲得最佳結果,在每次運行此工具時只指定一個選項(m、s 或 o),這可以確保結果便於理解。
  • 如果在運行時不指定選項,那麼默認顯示新的大小,相當於使用 s 選項。
  • 腳本中包含選項的詳細列表,包括上面給出的示例。
  • 在運行此工具的系統上,要求安裝 Perl 解釋器。如果系統上沒有 Perl 解釋器,可以從 http://www.perl.org 下載。在下載並安裝此軟體之前,一定要檢查您的單位對使用第三方軟體的管理策略,確保不會違反規定。
  • 此工具是用 Perl 腳本語言開發的,所以 DBA 可以根據自己的需要修改它。例如,可以改為使用另一種能夠導入其他工具的輸出格式,從而允許繪製歷史數據圖。 (責任編輯:A6)


[火星人 ] DB2 自調優內存管理器日誌分析器已經有574次圍觀

http://coctec.com/docs/linux/show-post-68976.html