PostRank

顯示具有 AIX 標籤的文章。 顯示所有文章
顯示具有 AIX 標籤的文章。 顯示所有文章

2009/09/02

[轉載]AIX資源監控與調制工具

AIX資源監控與調制工具

摘自:http://www.ccw.com.cn 作者: 陸成新 (2002-04-15 06:02:01)

性能優化以及確定系統中的性能瓶頸是系統管理員的主要任務之一。在一個計算機系統中,CPU、內存、硬盤和網絡是影響系統性能的主要因素,因此系統性能調整也主要在如何在這些資源中獲得某種平衡,以滿足人們對系統性能的期望。性能調制需要很多技巧,知識以及經驗,不能僅靠分析統計數字,圖表就可取得,性能調制有時是一件復雜甚至是非常困難的任務。

如同其它UNIX系統一樣,AIX也給系統管理員剪裁系統提供了非常豐富的手段。這裡我們簡單介紹RS/6000 AIX系統中幾個用監控和調制多項系統資源的工具,每個工具的功能都很強,如想更透徹地了解這些命令的用法,請參考有關技術資料或手冊。這裡講述的命令將不僅僅局限CPU、硬盤、內存或網絡資源的某個方面,它們可用其中的一項或多項資源。

AIX監控工具

1.iostat
iostat命令主要通過觀察物理磁盤的活躍時間以及他們的平均傳輸速度,監控系統輸入/輸出設備負載。根據iostat命令產生的報告,用戶可確定一個系統配置是否平衡,並據此在物理磁盤與適配器之間更好地平衡輸入/輸出負載。

iostat工具的主要目的是通過監控磁盤的利用率(tm_act字段),而探測到系統中的I/O瓶頸。iostat還可用確定CPU問題,輔助容量規劃,並可以為最終解決I/O問題提供相關材料。vmstat和iostat聯合使用,可捕獲到確定與CPU,內存和I/O子系統有關的性能問題的必需數據。

iostat命令可產生下面四種類型的報告:

  • ﹒ tty和CPU利用情況 
  • ﹒ 磁盤的利用情況 
  • ﹒ 系統吞吐率 
  • ﹒ 適配器吞吐率 
2、netpmon
netpmon命令可以監控關網絡行為的系統事件和性能以及網絡行為對CPU的消耗。netpmon命令在指定的監控周期報告網絡行為。

netpmon啟動直至發布trcstop命令終止它之前,一直在台運行。如果使用缺省設置,trace命令將會在netpmon命令之立即自動啟動。另外,netpmon中還可用trcon命令選擇在面的某個時間跟蹤。當這種跟蹤用trcstop命令終止,netpmon命令就會輸出它的報告並退出。缺省時報告會輸出到標準輸出,需要時也可以重定向到某個文件。

netpmon命令還可以在一次先前產生的跟蹤中以脫機模式使用。在這樣的情況下,需要用gennames命令產生一個文件。該文件必須在trace終止立即產生。

所產生的報告中包括CPU使用情況、網絡設備驅動器I/O情況、互聯網絡套接字調用,以及網絡文件系統(NFS)I/O信息:

﹒ CPU use:netpmon命令報告線程和中斷處理器對CPU的使用情況。該命令將網絡相關行為的CPU使用情況與其它行為的CPU使用情況區分開。
﹒ Network Device Driver I/O:netpmon命令監控網絡適配器上所通過的I/O統計。
﹒ Internet Socket Calls:netpmon命令在互聯網絡套接字上監控read,recv,recvfrom,write,send以及sendto子程序。ICMP,TCP,UDP這幾個協議的每個進程都會予以報告。
﹒ NFS I/O:netpmon命令監控客戶NFS文件上的read和write子程序,NFS客戶上的RPC請求以及NFS服務器的read和write請求。

3、PDT(性能診斷工具)
PDT通過收集和集中各種性能、配置和可用數據自動找出性能問題。PDT評估系統的當前狀態並跟蹤系統在工作量和性能上的變化。PDT數據收集和報告很容易起用,不需要更多的管理行為。

雖然許多常見的系統性能問題都有特定性,但PDT還試圖用一些被認為性能好的系統中的通用概念來幫助它查找問題。這些概念包括:
﹒ 資源的平衡使用
﹒ 在限定范圍操作
﹒ 確定的工作量趨勢
﹒ 無錯誤操作
﹒ 系統參數得到適當設置。

4、ps
ps命令是UNIX系統中最常見的命令,它主要顯示系統中關進程的統計和狀態信息,如進程ID,I/O行為以及CPU利用率等。利用ps命令提供的信息,可決定一個進程運行了多長時間,進程使用了多少CPU時間,以及進程是否受系統的懲罰。還可用ps命令確定進程使用了多少內存,完成多少I/O,進程的優先級以及是誰創建了進程。

下面這幾個命令組合對管理RS/6000 AIX系統有幫助:
(1)顯示10個消耗CPU最多的進程:
# ps aux |head -1 ;ps aux |sort -rn +2 |head 10

(2)顯示10個消耗存儲空間最多的進程:
# ps aux |head -1 ;ps aux |sort -rn +3 |head -10

(3)按順序顯示系統中受罰的進程:
#ps -eakl |head -1 ;ps -eakl |sort -rn +5

(4)按優先級順序顯示系統中的進程:
#ps -eakl |sort -n +6 |head

(5)按處理時間為順序顯示系統中的前十個進程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +3 |head 10

(6)按實際內存使用的多少順序顯示系統中的前十個進程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +6 |head 10

(7)按換入頁面的多少順序顯示系統中的前10個進程:
#ps vx |head -1 ;ps vx |grep -v PID |sort -rn +4 |head -10

5、vmstat
vmstat命令報告關核心線程,虛擬內存,自陷(trap),磁盤以及CPU行為的統計。而且每種行為報告都被更細致地用百分比分別表示用戶態、核態、空閑以及等待磁盤I/O等情況。

內核維持了對核心線程,換頁以及中斷行為的統計數據,而vmstat命令則通過使用knlist子程序和/dev/kmen偽設備驅動器訪問這些數據。磁盤的輸入/輸出統計是通過設備驅動器維持的。對磁盤,平均傳輸速度是通過使用活躍時間核傳輸信息數目決定的。而活躍時間百分比則是從報告期間驅動器忙的時間量計算出來的。

vmstat命令產生五種類型的報告:
﹒ 虛存行為報告
﹒ fork子進程情況報告
﹒ 每個設備產生的中斷情況報告
﹒ 匯總報告
﹒ 輸入/輸出行為報告

6、sar
sar命令報告CPU的使用情況,I/O以及其它系統行為。sar命令可以收集,報告以及保存系統行為信息。如果沒有指定輸入文件,則sar調用sarc命令訪問系統數據。

用戶可用讓cron命令運行兩個shell腳本(/usr/lib/sa/sa1和/usr/lib/sa2)以提供日統計和報表。在crontab文件 /var/spool/cron/crontabs/adm中包括了一些樣本節,用示范cron要在何時運行這些shell腳本。以這種方式收集到的數據對確定系統的時間周期特征和決定峰值使用時間是有用的。

但要注意的是,sar命令自己運行時會產生相當數量的讀寫。因此最好在沒有工作量的情況下運行sar統計,看看sar對總的統計數字有多大的影響。

7、topas
topas命令用監控各種系統資源,如CPU的使用情況,CPU事件和隊列,內存和換頁空間的使用,磁盤性能,網絡性能以及NFS統計等。它還會報告指派給不同WLM類的進程對系統資源的消耗情況。它還能報告系統中最熱門的進程和工作量管理器(WLM)的熱門類。有關WLM類信息只有在WLM激活時才會顯示。topas命令將熱門進程定義為那些使用大量CPU時間的進程。topas命令沒有作日志的選項,所有信息都是實時的。

topas命令利用System Performance Measurement Interface(SPMI)API獲得有關信息。正是因為通過SPMI API,使系統開銷保持在最小程度。topas命令使用perfstat庫調用訪問perfstat內核擴展。

8、truss
truss命令跟蹤一個進程的系統調用、所接收的信號以及招致的機器錯。要檢查的應用程序可在truss命令的命令行中指定,也可將truss命令掛在一個或多個已經在運行的進程上。

AIX調制工具

1、fdpr
fdpr命令改進用戶級程序和庫的執行時間和對實際內存的使用。fdr命令可以通過不同的操作,如刪除不必要的指令和重組代碼和數據,而實現這樣的目標。fdr命令安裝在目錄/usr/bin下。

fdpr命令在三個不同階段上,對原有的執行代碼應用先進的優化技術從而為其構築一個優化的可執行代碼。這三個階段分別是:
﹒ 在階段1,fdpr創建一個增加了某些裝置(instrumented)的可執行程序。原有的可執行程序被保存為__ProgramFile.save,而新版本被命名為__ProgramFile.instr。
﹒ 在階段2,fdpr運行該增加了某些裝置的可執行程序,並收集摘要(profiling)數據。該摘要數據被保存在一個叫__ProgramFile.prof的文件中。運行執行程序時需要為它提供典型的輸入數據,以使fdpr命令能夠找出代碼中可優化的部分。
﹒ 在階段3,fdpr命令使用階段2中收集到的重要信息對可執行代碼重新排序。這些重新排序涉及到這樣一些任務:

(1)將那些高頻度執行代碼序列包裝在一起。
(2)對條件分之重新排序,以改進硬件對分之條件的預測。
(3)將較少使用的代碼部分移出來。
(4)內嵌一些熱門函數。
(5)從重排序的代碼中刪除掉NOP(空操作)指令。

另外,編譯器中還提供了一個-qfdpr標志,用它可使編譯器在執行代碼中增加一些額外的信息,以輔助fdpr對該執行代碼重新排序。但是,如果使用這個-qfdpr標志,則fdpr也只對那些用-qfdpr標志編譯的模塊重新排序。

2、schedtune
schedtune命令可以給抖動、進程掛起、時間片以及線程在鎖上所能輪詢的時間長度等設置準則。

用schedtune,可調整AIX中所設立的一組影響其內存負載控制機制的參數。Schedtune命令用顯示和修改那些用檢測系統內存是否在過度使用以致造成抖動的參數。Schedtune命令還能用修改運行在系統上的進程的懲罰和衰減因子。在root用戶下,用schedtune命令可做下面的事情:
﹒ 決定用確定抖動的準則。
﹒ 決定哪個準則用掛起進程。
﹒ 決定在抖動終止要等待多長時間才重新激活那些先前被掛起的進程。
﹒ 決定被掛起的進程的最小數目。
﹒ 調制調度優先級公式。
﹒ 更改時間片數值。
﹒ 決定在一把鎖上輪詢多長時間。
﹒ 將schedtune值復位到它的缺省值。

需要注意的是,所有用schedtune作的修改在系統重啟都將丟失。為了確保所需的schedtune值在引導時能夠置上,可在/etc /inittab文件中插入適當的schedtune命令。如:schedt:2:once:/usr/samples/kernel /schedtune -s 65536

3、vmtune
vmtune命令負責顯示和調整虛存管理器(VMM)和其它AIX部件使用的參數。系統中的根用戶可動態修改包括下面這些參數:
﹒ VMM頁替換
﹒ 永久文件讀寫
﹒ 文件系統緩沖區結構(bufstructs)
﹒ LVM緩沖區
﹒ 裸輸入/輸出
﹒ 換頁空間參數
﹒ 頁刪除
﹒ 內存固定參數

如何使用Topas查詢AIX效能

如何使用Topas查詢AIX效能

topas 命令用監控各種系統資源,如CPU的使用情況,CPU事件和隊列,內存和換頁空間的使用,磁盤性能,網絡性能以及NFS統計等。它還會報告指派給不同 WLM類的進程對系統資源的消耗情況。它還能報告系統中最熱門的進程和工作量管理器(WLM)的熱門類。有關WLM類資訊只有在WLM啟動時才會顯示。 topas命令將熱門進程定義為那些使用大量CPU時間的進程。topas命令沒有作日誌的選項,所有資訊都是實時的。topas命令利用System Performance Measurement Interface(SPMI)API獲得有關資訊。正是因為通過SPMI API,使系統開銷保持在最小程度。topas命令使用perfstat庫調用訪問perfstat內核擴展。

topas命令提供了即時的對系統處理器的狀態監視。它將顯示系統中CPU最"敏感"的任務列表。該命令可以按CPU使用。記憶體使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人定制檔中進行設定。


下面是該命令的語法格式:

topas [-d number-of-monitored-hot-disks][-h]

[-i monitoring-interval_in_seconds]

[-n number-of-monitored-hot-network-interfaces]

[-p number-of-monitored-hot-processes]

[-w number-of-monitored-hot-WLM classes]

[-c number-of-monitored-hot-CPUs]

[-P|-W]

-d 指定要受監視的磁片數目。缺省2個磁片,在螢幕顯示空間足夠的情況下,全部顯示。

-i 以秒為單位設置監視的時間間隔。缺省2秒。



topas 顯示的變數部分可有一、二、三、四或五個分部。如果有多個分部顯示,則總是按照下列順序顯示:

1. CPU

2. Network網路介面

3. Disk物理磁片

4. Process進程

5. Job工作量管理


CPU 使用情況

這個分部顯示一個條形圖表來表示累積的 CPU 使用情況。如果有多個 CPU,按 c 鍵兩次就可顯示 CPU 列表。僅按 c 鍵一次會關閉這個分部。下列欄位通過兩種格式顯示:

User% 這顯示以用戶方式執行的程式所使用的 CPU 的百分數。(缺省按用戶% 排序)
Kern% 這顯示以內核方式執行的程式所使用的 CPU 的百分數。
Wait% 這顯示用於等待 IO 的時間的百分數。
Idle% 這表示 CPU 空閒時間的百分數。
當這個分部首先顯示熱門 CPU 列表時,就按 User% 欄位來對列表排序。但是,可以按其他欄位來對列表排序,只要把遊標移到想要的那一欄頂部就可以了。

NETWORK網路介面

此分部顯示了熱門網路介面的列表。所顯示介面的最大數目是正被監視的熱門介面數目,正如 -n 標誌指定的那樣。如果其他分部也被顯 示,則將顯示介面的一個較小數目。按 n 鍵可關閉此分部。再按一次 n 鍵就會顯示一行所有網路介面活動的報告摘要。兩個報告都顯示下列欄位:

Interface 網路介面的名稱。
KBPS 在監視時間間隔內每秒鐘以 MB 為單位的總吞吐量。這個欄位是每秒接收到的千位元組和發送的千位元組的總和。
I-Pack 在監視時間間隔內每秒鐘接收到的資料包的數目。
O-Pack 在監視時間間隔內每秒鐘發送的資料包的數目。
KB-In 在監視時間間隔內每秒鐘接收到的千位元組的數目。
KB-Out 在監視時間間隔內每秒鐘發送的千位元組的數目。
當此分部首先顯示熱門網路介面列表時,按 KBPS 欄位對列表排序。但是,可以按其他欄位對列表排序,只要把遊標移到想要的那一欄頂部就可以了。排序僅對最多 16 個網路適配器有效。

Disk物理磁片

此分部顯示了熱門物理磁片的列表。所顯示物理磁片的最大數目是正被監視的熱門物理磁片數目,正如 -d 標誌指定的那樣。如果其他分部 也被顯示,則將顯示物理磁片的一個較小數目。按 d 鍵可關閉這個分部。再按一次 d 鍵就會顯示一行所有物理磁片活動的報告摘要。兩個報告都顯示下列字 段:
Disk 物理磁片的名稱。
Busy% 表示物理磁片活動時間的百分比(驅動器帶寬使用)。
KBPS 在監視時間間隔內每秒鐘讀和寫的千位元組的數目。此欄位是 KB-Read 和 KB-Writ 的總和。
TPS 每秒鐘發送到物理磁片的傳輸的數目。傳輸是對物理磁片的 I/O 請求。多個邏輯請求可組合成對磁片的單個 I/O 請求。傳輸大小不確定。
KB-Read 每秒鐘從物理磁片讀取的千位元組的數目。
KB-Writ 每秒鐘寫到物理磁片的千位元元組的數目。
當此分部首先顯示熱門物理磁片列表時,按 KBPS 欄位對列表排序。但是,可以按其他欄位對列表排序,只要把遊標移到想要的那一欄頂部就可以了。排序僅對最多 128 個物理磁片有效。


Process進程

此分部顯示了熱門進程的列表。所顯示進程的最大數目是正被監視的熱門過程數目,正如 -p 標誌指定的那樣。如果其他分部也被顯示,則將顯 示進程的一個較小數目。按 p 鍵可關閉此分部。按監視時間間隔內進程的 CPU 使用情況來對進程排序。對於每一進程會顯示下列欄位:
Name 在進程中執行的可執行程式的名稱。名稱已被除去任何路徑名和參數資訊並被截斷到 9 個字元的長度。
PID 進程的進程標識。
CPU% 在監視時間間隔內進程的平均 CPU 使用情況。第一次顯示進程時,這個值表示整個進程階段平均 CPU 使用情況。
PgSp 分配給此進程的調頁空間的大小。這可被認為是進程覆蓋區的一種運算式,但並不包括用來保持可執行程式和它依賴的任何共用庫的記憶體

Owner 擁有此進程的用戶的用戶名


Job工作量管理

EVENTS/QUEUES 顯示所選系統全局事件的每秒頻率、線程運行和等待佇列的平均大小:
Cswitch 在監視時間間隔內每秒上下文切換的數量。
Syscalls 在監視時間間隔內每秒執行的系統調用的數量。
Reads 在監視時間間隔內每秒執行的 read 系統調用的數量。
Write 在監視時間間隔內每秒執行的 write 系統調用的數量。
Forks 在監視時間間隔內每秒執行的 fork 系統調用的數量。
Execs 在監視時間間隔內每秒執行的 exec 系統調用的數量。
Runqueue 準備運行但需要等待處理器可用的平均線程數目。
Waitqueue正在等待頁面調度完成的平均線程數目。
FILE/TTY 顯示所選檔與 tty 統計資訊的每秒頻率。
Readch 在監視時間間隔內 read 系統調用每秒讀的位元組數。
Writech 在監視時間間隔內 write 系統調用每秒寫的位元組數。
Rawin 在監視時間間隔內從 TTY 中每秒讀取的原始位元組數。
Ttyout 在監視時間間隔內每秒寫入 TTY 中的位元組數。
Igets 在監視時間間隔內每秒調用資訊節點查找常式的數量。
Namei 在監視時間間隔內每秒調用路徑名查找常式的數量。
Dirblk 在監視時間間隔內被目錄搜索常式每秒掃描的目錄塊數目。
PAGING 顯示頁面調度統計資訊的每秒頻率。
Faults 在監視時間間隔內每秒頁面出錯的數量。這包括不能啟動頁面調度的頁面故障。
Steals 在監視時間間隔內每秒鐘有實體記憶體 4K 幀被虛擬記憶體管理器佔用。
PgspIn 在監視時間間隔內每秒鐘從調頁空間讀取 4K 頁面的數量。
PgspOut 在監視時間間隔內每秒鐘把 4K 頁面寫入調頁空間的數量。
PageIn 在監視時間間隔內每秒鐘讀取 4K 頁面的數量。這包括與從檔系統讀取有關的頁面調度活動。從這個值中減去 PgspIn 就可得到在監視時間間隔內每秒鐘從檔系統讀取的 4K 頁面的數量。
PageOut 在監視時間間隔內每秒鐘寫 4K 頁面的數量。這包括與寫入檔系統有關的頁面調度活動。從這個值中減去 PgspOut 就可得到在監視時間間隔內每秒鐘寫入檔系統的 4K 頁面的數量。
Sios 在監視時間間隔內虛擬記憶體管理器每秒鐘發出的 I/O 請求的數目。
MEMORY 顯示實際記憶體大小與記憶體使用的分佈情況。
Real,MB 以 MB 為單位的實際記憶體大小。
% Comp 當前分配給計算頁面幀的實際記憶體的百分數。計算頁面幀通常是那些被調頁空間支援的幀。
% Noncomp 當前分配給非計算頁面幀的實際記憶體的百分數。非計算頁面幀通常是那些被檔空間(可以是資料檔案、可執行檔或共用庫檔)支援的幀。
% Client 當前被分配用來快取記憶體遠端安裝的檔的實際記憶體的百分數。
PAGING SPACE 顯示調頁空間的大小及利用情況。
Size,MB 系統上所有調頁空間的總和,以 MB 為單位。
% Used 當前在使用的調頁空間占所有的百分數。
% Free 當前未使用的調頁空間占所有的百分數。
NFS (calls/sec) 顯示每秒調用的 NFS 狀態
ServerV2 calls/sec
Client V2 calls/sec
ServerV3 calls/sec
Client V3 calls/sec