topas命令詳解


topas命令詳解
Topas命令可以監控系統活動――memory,I/O,paging space,cpu,process。
此命令包含在perfagent.tools文件集裏面。
命令使用方法:
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_WLMclasses ]
[ -c number_of_monitored_hot_CPUs ]
[ -P | -W ]

參數:
-d:指定要監控的磁盤數。如果屏幕顯示的區域足夠大的話,這也是磁盤可顯示的最大數。當這個數值超出實際安裝的磁盤數,僅僅監控並顯示安裝磁盤的信息。這個參數缺省值爲2,如果這個值設爲0,將沒有磁盤被監控。
-h:顯示幫助信息。
-i:設置監控時間的間隔(秒),默認爲2秒。
-n:設置被監控的網絡接口數。這也是在屏幕上顯示的最大網絡接口數,當這個值超出了實際安裝的網絡接口數,僅僅監控並顯示安裝的網絡接口信息。參數缺省值爲2,如果這個值設爲0,將沒有網絡信息被監控。
-p:指定被監控的進程數。這也是在屏幕上顯示的最大進程數。缺省值爲20,如果這個值爲0,沒見進程信息被監控。得到的這些進程信息是topas的主要開銷。如果進程信息不需要,通常使用這個參數指定那些不想要的進程信息。
-w:指明被監控的WLM類的值。這也是在屏幕上顯示的最大WLM值,當這個值超出了實際安裝的WLM數,僅僅顯示那些安裝的WLM類的信息,缺省值爲2,如果這個值爲0,將沒有信息顯示。
-c:指明被監控的CPU數。這也是在屏幕上顯示的最大CPU值,當這個值超出了實際安裝的CPU數,僅僅顯示那些安裝的CPU的信息,缺省值爲2,如果這個值爲0,將沒有信息顯示。
-P:顯示整個全屏進程顯示。顯示一系列最繁忙的進程,類似於默認顯示的一部分,每個進程僅僅顯示幾列,可以通過任何列排序。
-W:顯示全屏WLM(負載管理器)類。頂部顯示一系列WLM類,類似於WLM類的一部分顯示。

一些子命令:
a 這個鍵顯示所有被監控的(CPU,network,disk,WLM,process)不同部分。
c 這個鍵在累積報告和最忙的CPU之間進行切換。
d 這個鍵在最忙的磁盤和系統總的磁盤活動之間進行切換。
h 顯示幫助信息。
n 這個鍵在最忙的接口和系統總的網絡活動之間進行切換。
w 這個鍵在WLM類的開關之間切換。
p 這個鍵進程的開關之間切換。
P 這個鍵用全屏進程顯示替換默認的顯示。
W 這個鍵用全屏WLM類顯示替換默認顯示。
f 移動光標到一個WLM類上,這個鍵可以在WLM屏幕底端顯示一系列進程情況。
q 退出程序。
r 更新顯示。


以下是各個部分表示的含義:
Cswitch:在監控期間每秒鐘內容轉換的次數;
Syscall:在監控期間每秒鐘運行系統呼叫的總次數;
Reads:在監控期間每秒鐘運行讀系統呼叫的次數;
Writes:在監控期間每秒鐘運行寫系統呼叫的次數;
Forks:在監控期間每秒鐘運行派生系統呼叫的次數;
Execs:在監控期間每秒鐘運行執行系統呼叫的次數;
Runqueue:等待處理器空閒以便運行的線程平均數;
Waitqueue:等待分頁完成的線程平均數;
Readch:在監控期間通過讀系統呼叫每秒鐘讀出的字節數;
Writech:在監控期間通過寫系統呼叫每秒鐘寫入的字節數;
Rawin:在監控期間通過TTYs每秒鐘讀入的裸字節數;
Ttyout:在監控期間每秒鐘寫入TTYs的字節數;
Igets:在監控期間每秒鐘到節點查找例行程序的呼叫數;
Namei:在監控期間每秒鐘路徑查找例行程序的呼叫數;
Dirblk:在監控期間通過目錄搜索例行程序每秒鐘掃描到的目錄塊數;

PAGING部分顯示的是分頁每秒鐘次數的統計:
Faults:在監控期間每秒鐘發生的分頁錯誤總數;
Steals:在監控期間被虛擬內存管理器每秒鐘偷走的物理內存4k的幀;
PgspIn:在監控期間每秒鐘從分頁空間中讀取的4k分頁數;
PgspOut:在監控期間每秒鐘寫入分頁空間的4k分頁數;
PageIn:在監控期間每秒鐘讀取的4k分頁數,這包括從文件系統讀操作相關的分頁活動,從這個值減去PgspIn的值就是每秒鐘從文件系統讀操作相關的分頁活動數;
PageOut:在監控期間每秒鐘寫入的4k分頁數,這包括向文件系統寫操作相關的分頁活動,從這個值減去PgspOut的值就是每秒鐘向文件系統寫操作相關的分頁活動數;
Sios:在監控期間通過虛擬內存管理器得到的I/O請求數;

Momory部分顯示的是實際內存和在使用中的內存:
Real,MB:以M爲單位的實際內存;
%Comp:當前分配給計算分頁片斷的內存佔實際內存的百分比。計算分頁片斷由分頁空間產生。
%Nocomp:當前分配非計算分頁片斷的內存佔實際內存的百分比。非計算分頁片斷包括那些文件空間,數據文件、可執行文件、或者共享庫文件。
%Client:當前分配給用來緩衝遠程掛載文件的內存佔實際內存的百分比。

PAING SPACE顯示分頁空間的大小和使用率:
Size,MB:系統裏所有分頁空間的大小,以M爲單位;
%Used:當前使用的分頁空間佔總空間的百分比;
%Free:當前空閒的分頁空間佔總空間的百分比。

CPU工具:
User%:顯示運行的用戶程序所佔用的CPU百分比;
Kern%:顯示運行的內核程序所佔用的CPU百分比;
Wait%:顯示等待IO操作所佔用的CPU百分比;
Idel%:顯示CPU空閒的百分比。

網絡接口:
Interf:網絡接口的名稱;
KBPS:在監控期間每秒鐘通過的以M爲單位的總流量,這部分包括每秒鐘接收和發送的總和。
I-Pack:在監控期間每秒鐘接收到的數據包數;
O-Pack:在監控期間每秒鐘發送的數據包數;
KB-In:在監控期間每秒鐘接收到的字節數(以K爲單位);
KB-Out:在監控期間每秒鐘發送的字節數(以K爲單位)。

物理磁盤:
Disk:物理磁盤的名稱;
Busy%:指明物理磁盤在活動狀態的時間百分比;
KBPS:在監控期間每秒鐘讀寫的字節數(以K爲單位);
TPS:每秒鐘物理磁盤的數據傳輸量。一次傳輸指的是一次I/O請求;
KB-Read:每秒鐘從物理磁盤讀出的K字節數;
KB-Write:每秒鐘向物理磁盤寫入的K字節數。

WLM(負載管理)類:
%CPU Utilization:CPU的平均利用率;
%Mem Utilization:內存的平均利用率;
%Blk I/O:塊I/O的平均利用率;

進程:
NAME:可執行程序的名稱;
Process ID:進程的ID號;
%CPU Utilization:進程的CPU平均使用率,這個值指的是進程在生命週期中的平均使用率;
Paging Space Used:分配給進程的分頁空間大小;
Process Owner:擁有這個進程的用戶名;
Workload Management(WLM)Class:進程屬於哪個WLM class。
 
topas命令詳解


區域1:反映CPU使用率和工作狀況。

Kernel:

說明:操作系統的內核佔用的CPU時間比率。操作系統作爲基礎軟件,爲應用程序支持和服務的同時,本身的運行也需要一定的CPU和內存資源(順便提到內存資源,後面不再闡述這個內容了),特別是內存資源,系統負載越重,相應的內核佔用的CPU和內存資源也會越多。

一般來說,內核佔用的CPU時間不會太多的。一般小於應用的CPU使用率。

User:

        說明:用戶進程佔用的CPU時間比率。這個爲CPU使用率的關鍵數值。該使用率反映了用戶在操作系統基礎上運行的各種軟件佔用的CPU時間比率的總和。一般來說,如果User+Kernel連續大於70%,即可以認爲系統可能存在CPU上的嚴重性能問題。而我們的實際維護工作中,如果發現某一個CCCC主機(bjdb0261,bjdb0271除外,這兩個主機的負載一直比較高)的User+Kernel大於30%,就要看看下面的第四區域,看看是不是有進程持續佔用了大量的CPU資源,例如,某一個交易處理程序的CPU使用率持續在20%左右(曾經發生過)。

Wait

        說明:CPU處於等待狀態佔CPU時間的比率。CPU的等待一般都爲等待IO的響應,衆所周知,目前計算機的主要瓶頸都在IO。應用程序執行的時候,需要讀寫磁盤等外部存儲的數據,進程就會發起IO請求後等待IO完成。這個等待的過程佔用CPU時間就是wait。當這個值很高的時候,就說明IO來不及響應很多的IO請求,這個時候,就只能從IO層面想辦法優化了。

Idle:     

說明:CPU空閒時間比率,這個就不用說了吧。就是CPU多少時間比率在閒着。

 CPU佔用率出問題的主要可能原因:

數據庫服務器執行某一個SQL或者存儲過程(存儲過程就是封裝起來的sql程序包而已)需要大量的運算(一般爲軟件設計不合理)。或者應用程序中存在異常的地方,比如死循環,或者其他寫程序時的邏輯錯誤導致。一般程序出錯會導致一個CPU被全部佔用,比如上述的20%佔用的原因就是一個交易程序長期佔用一個CPU全部時間片(系統共計5個CPU)。

區域2:反映網絡使用率的狀況。

Netwok;列出了網卡接口,KBPS即每秒鐘多少KB(千字節) I-Pack每秒鐘輸入的數據包個數, O-Pack 每秒鐘輸出的數據包個數  KB-In每秒鐘輸入的字節數 KB-Out每秒鐘輸出的字節數。

當我們發現網絡擁堵時(出現網卡傳輸失效的報錯,即網卡發送數據包失敗。或者網絡響應明顯變慢的時候,如果CPU沒有問題,那麼請檢查網絡流量)發現某一個網卡的KBPS持續大於四位數,甚至五位數時(這個值要是網卡千兆還是百兆而定)。就要看看這個網卡是什麼網卡,在處理什麼業務了。在命令行執行netstat –in 查看對應en*接口的ip地址,通過ip地址看看是帶官網卡還是生產服務網卡流量高。然後通過netstat –v en* 看看網卡的詳細工作狀態,出現了多少錯包,衝突包,crc校驗錯或者網絡重置過等信息。上述信息請詳細看netstat –v en*的輸出.如果出現大量crc,錯包的話,可能網線有問題或者接觸不良。

如果上述均正常,而網絡反應慢,則有可能是交換機擁堵。

網絡出現問題的可能原因:通過百兆的帶管網加載大量數據(以前出現過),大量隊列的長時間的ftp傳輸,或者網線,交換機問題等。

 

 

區域3:反映磁盤使用率的狀況。

Disk  Busy%磁盤繁忙的百分比,即磁盤能滿足的最大IOPS(每秒IO操作數)和當前IO數量的比率。其他的參數不再解釋。望文生義即可。一般主要看磁盤的Busy%,當磁盤的Busy%持續大於85%時,即認爲磁盤相當繁忙,已經可能要出問題了。當然,自己知道已經確定要產生大量IO操作的內容則不必在意,等其完成即可。

出現問題的原因:CCCC的應用服務器上面寫日誌進程或者查詢日誌的進程大量讀寫日誌,導致磁盤繁忙率高,或者其他程序頻繁讀寫磁盤導致。系統中hdisk0,hdisk1一般爲系統盤,內置SCSI磁盤的相對IOPS是較低的。很容易滿負荷運行。

 

區域4:反映進程信息的狀況。

Name:進程的名稱,即進程被執行時啓動的二進制文件的名稱。PID,進程的ID,進程的ID在系統中唯一,是我們瞭解跟蹤進程信息重要數值。跟蹤進程的CPU使用,磁盤IO讀寫,進程的內存和pagingspace佔用等等均需要使用。CPU%進程佔用CPU時間的比率,PgSp,進程佔用的pagingspace的空間大小。Owner進程的屬主,即由哪個操作用戶用戶啓動了這個進程。

在topas中,默認是列出佔用cpu最高的前幾個的進程信息供參考,如果前面第一區域的的CPU使用率持續高,就要看看這裏是那個進程佔用了大量的CPU資源,看看是哪個用戶的進程,如果自己執行的,則殺掉或者找項目組解決即可。

 

 

區域5:反映內存頁面和換頁空間信息的狀況。

換頁空間即磁盤上的空間,在AIX操作系統中用來做內存空間使用。具體的理論就不再闡述了,詳細信息請參閱操作系統內容。磁盤空間的速度當然相比內存,慢了不止10倍。所以,只是內存頁面的一個暫時存放地,存放的還是那些長期不怎麼用到的內存頁面而已。如果paging大量出現,這時候就有麻煩了,說明:內存不夠用了!

該區域主要關注PageIn,PageOut如果這兩個數值均大於三位數,並且長期大於這個數值,在技術上叫做內存顛簸,即不停的把內存頁面換到磁盤空間上,又從磁盤空間把內存頁面讀進來,系統的內存使用效率變的極差,系統響應性能也變慢了。

這個信息也可以用vmstat來看,pi和po列即與這裏相對應。

當然,如果只是有頁面出,或者只有頁面入,或者短時間的一些頁面換入換出,則沒有什麼問題,關注一下即可。

區域7就在這裏一起說了,區域7反映的是換頁空間的使用率,如果換頁空間的使用率長期增長,就說明系統內存不足,已經開始使用磁盤空間來緩衝內存了,如果PG使用率持續增長,或者大於50%,需要警惕(到50%在監控平臺已經是主要告警啦!),並馬上提交系統管理員分析內存增長原因。如果該數值持續增長,系統一定會掛掉的!

 http://blog.sina.com.cn/s/blog_558090d20100sr5n.html

區域6:反映內存使用的信息。

Real,MB操作系統實際擁有的內存的總量,單位是MB。%Comp,計算型內存佔用比率,%Noncomp非計算型內存佔用的比率。%Client也爲非計算型內存,Noncomp包涵Client型內存,jfs文件系統使用的內存爲noncomp,爲了區分,jfs2和nfs使用的內存爲Client。

計算型內存就是進程實際使用的內存,例如我們寫程序的時候malloc內存,或者在排序中使用了堆棧,進程中變量數值都需要在內存中保存,這部分內存爲計算型內存(闡述不全面,僅供參考)。而操作系統在進行文件讀寫,需要的io緩衝區,或者我們在寫程序的時候,打開文件,讀寫文件,均在文件緩衝區進行。(裸設備例外,CCCC的數據庫採用RAC,數據的存儲全部使用裸設備,在數據庫服務器上,數據文件的緩衝在oracle的sga區的data buffer中(這個區域系統認爲是計算型內存),是不會佔用非計算內存的。)

我們日常監控在看這一部分的內存使用的,一般要看計算型內存是不是在增長,或者計算型內存大於了某一個臨界值,一般來說,按照CCCC目前的VMO配置,如果計算型內存大於80%是很危險的,有可能就導致大量pg的使用而性能急劇惡化。

導致內存出問題的可能原因很多。主要有:進程使用了更多的內存,例如,CCCC數據庫服務器大量的oracle連接使用了很多內存,或者數據庫中執行的某一個sql腳本或者存儲過程的執行需要大量的內存來完成其操作(特例庫中出現過這個情形,一個存儲過程的執行導致操作系統內存被耗盡,pg也隨之耗盡,操作系統自動執行PGSP_KILL,把該進程給幹掉了,我也是第一次知道aix系統還有這個功能,呵呵)。第二個主要的問題就是內存泄漏,內存泄漏最簡單的來說,就是申請了內存空間,使用後不再使用了,但是也沒有釋放。我們寫程序的時候malloc,卻沒有free。這就導致了嚴重的問題,隨着程序的執行,可用物理內存越來越少,最後就掛了,只好定期重啓應用來解決。

操作系統的內存換頁機制導致了程序中不用的內存頁面最後都跑到pg上面去了,換頁空間會持續增長的。因應用導致系統問題就是這麼產生的。

CCCC項目中不涉及NFS操作,不再闡述。

請大家平時沒事的時候幫忙看看系統性能問題,如有異常,諸位好心裏有數,不慌。我們也好及時響應處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章