本篇文章描述了通過sp_sysmon對Adaptive Server系統運行情況有一個全面系統了解,有利於更好地熟悉系統性能,更為有效地進行系統管理,合理地利用和配置系統資源,達到系統性能調優的目的。
sp_sysmon可以從18個方面了解在用系統性能狀況,並在適當的時候利用環境參數進行性能調優:
1、內核管理(kernal) 2、應用管理(appmgmt) 3、數據緩存管理(dcache)
4、ESP管理(esp) 5、索引管理(indexmgmt) 6、鎖管理(locks)
7、內存管理(memory) 8、元數據高速緩存管理(mdcache)9、任務管理(taskmgmt)
10、監視器訪問SQL的執行(monaccess) 11、網絡I/O管理(netio)
12、並行查詢管理(parallel)13、過程緩存管理(pcache)14、恢復管理(recovery)
15、事務管理(xactmgmt)16、事務概要(xactsum) 17、磁盤I/O管理(diskio)
18、工作進程管理(wpm)
括號後英文短詞是該模塊參數。
環境: 1、用戶數據庫中有練習所用數據表auths和article
2、數據表各有10萬行數據
3、用戶具有查詢、修改、刪除等基本的數據庫表操作權限
步驟:執行sp_sysmon “00:10:00”(server級系統存貯過程,不需要打開某個數據庫),或者執行如下格式的過程,查看具體操作批命令對應系統性能情況:
sp_sysmon begin_sample
SQL語句或者存貯過程
sp_sysmon commit_sample
本實驗采用 sp_sysmon “hh:mm:ss”,性能模塊名。
通過sp_sysmon,可了解當前系統在各方面的系統運行狀況,性能出現什麼問題和不平衡不協調之處,學會使用相應的參數和措施進行解決和調優,不斷比較對照調整前後的性能狀況,最終改善系統性能。
說明:1、該命令執行結果集的開頭相同如下,各分塊實驗不再一一列示:
======================================================================
Sybase Adaptive Server Enterprise System Performance Report
======================================================================
Server Version: Adaptive Server Enterprise/11.9.2/1031/P/NT (IX86)/OS 3.
Server Name: Server is Unnamed
Run Date: May 28, 2001
Statistics Cleared at: 15:57:27
Statistics Sampled at: 16:07:28
Sample Interval: 00:10:00
2、執行結果集的每列信息提示:
per sec : 采樣期間每秒的平均值
per xact: 采樣期間每提交一個事務的平均值
count : 采樣期間每秒的總計值
% of total: 占總數的百分比,根據不同情況各有不同
3、結果集對應給出性能情況描述、分析以及可調性說明
4、本練習只給出部分模塊的監視結果(可能有刪節),用sp_sysmon “hh:mm:ss”可看全部詳細情況。
單元一:監視內核利用情況
命令行:sp_sysmon “00:10:00”,kernal
結果:
Kernel Utilization (內核利用)
------------------
Engine Busy Utilization
Engine 0 1.8 %
引擎繁忙程度應在80%-90%之間,如果長期在90%以上,應考慮增加引擎數來改善性能。因為此時內部管理進程無法向磁盤寫入,則檢查點需要將許多頁寫回磁盤,而檢查點進程很可能將CPU的利用率提高到100%,導致響應時間明顯增加。
CPU Yields by Engine per sec per xact count % of total
------------------------- ------------ ------------ ---------- ----------
Engine 0 6.6 0.6 3949 100.0 %
引擎放棄CPU次數:% of total=1個引擎放棄次數/所有引擎放棄次數,如果顯示引擎利用率較低,可通過放棄數判斷是否真實反映引擎的停止情況。增加“runnable process search count”(引擎放棄CPU給OS之前一個引擎循環查找可執行任務的次數)參數可增加CPU的駐留時間,而如果想減少引擎在空閒時檢查I/O的時間,可減少該參數的值。
Network Checks
Total Network I/O Checks 0.0 0.0 0 n/a
引擎發送或接收網絡包的次數。引擎空閒時頻繁檢查網絡包,如果該值很低而“CPU Yields by Engine”的值高,表明引擎可能被頻繁放棄。
可能包括阻塞和非阻塞兩種檢查方式。非阻塞方式不管有無I/O等待都對網絡進行I/O檢查。如果引擎已被放棄並正執行阻塞網絡檢查,則在網絡包到達以後仍保持一段睡眠時間(潛伏期)。此時增加“runnable process search count”(缺省2000)參數可減少潛伏期,保持引擎有較長的循環檢查時間,而不是過早被放棄。
Disk I/O Checks磁盤I/O檢查情況:
Total Disk I/O Checks 693.2 58.8 415939 n/a
Checks Returning I/O 469.9 39.9 281921 67.8 %
引擎對I/O情況的有效檢查(I/O完成次數),如過高或過低,用“i/o polling process count”(Server的調度程序在檢查磁盤I/O或網絡I/O之前可執行的最大進程數)參數增加或減少檢查頻率。通常說增加該值可增加有大量磁盤或網絡I/O的應用的吞吐量,反之,減少該值有可改善其響應時間。
Avg Disk I/Os Returned n/a n/a 0.03020 n/a
增加引擎在檢查期間的等待時間可改善吞吐量,因為減少引擎檢查I/O時間相應增加執行進程的時間。