- 論壇徽章:
- 0
|
svmon介紹(一)
![]()
Document #: 2311083I17000
Body:
[標(biāo)題]svmon介紹
內(nèi)容提要:介紹svmon使用及其理論
說明:AIX 5L
參考資料:
svmon命令是虛存的的監(jiān)視命令,svmon可用于確定某個(gè)程序、用戶、內(nèi)存段使用實(shí)存或虛存的情況。它事實(shí)上調(diào)用的是svmon_back命令,在使用svmon命令之前,必須確定svmon_back命令可用,該命令位置為 /usr/lib/perf/svmon_back 。
svmon運(yùn)行于前臺(tái),就象一個(gè)普通的用戶進(jìn)程一樣,因?yàn)樗谶\(yùn)行過程中可被中斷,所以,它無法完全真正地成為內(nèi)存使用情況的快照。所以,在非常繁忙的系統(tǒng)中,svmon收集的數(shù)據(jù)和真實(shí)的數(shù)據(jù)有所差距,在svmon進(jìn)程搜集的過程中,VMM(虛存管理器)可能已經(jīng)發(fā)生改動(dòng)了。
因?yàn)閟vmon使用的全是VMM中的數(shù)據(jù),而VMM對(duì)內(nèi)存的視圖是基于內(nèi)存段的,所以,理解svmon的輸出,必須先理解段的概念。
段(segment)是一組頁(yè)的合集,每個(gè)段為256M,而每頁(yè)為4KB字節(jié)的虛存,每幀為4KB字節(jié)的實(shí)存,每個(gè)段可同時(shí)被多個(gè)進(jìn)程使用,每個(gè)段屬于以下五種類型其中的一種:
persistent:存放JFS文件或目錄
working:進(jìn)程數(shù)據(jù)區(qū)域和共享內(nèi)存段
client:用于實(shí)現(xiàn)虛擬文件系統(tǒng)如NFS,CD-ROM文件系統(tǒng)和JFS2
mapping:用于實(shí)現(xiàn)文件和內(nèi)存之間的映射關(guān)系
real memory mapping:用于對(duì)I/O空間的訪問
注意,在段的描述中,如果paging space使用的節(jié)中如果有一橫(-),表明該段未使用交換區(qū),work段可能使用交換區(qū),但persistent段和client段不會(huì)使用交換區(qū)。
下面舉例說明使用命令可做的一些工作:
1、# svmon -uP -t 3|grep -p Pid|grep '^.*[0-9] '
可將使用實(shí)存最多的三個(gè)進(jìn)程標(biāo)出
5428 X 4681 1584 2656 9156 N N
16274 bin 4594 1588 2273 8824 N Y
6458 dtgreet 4660 1580 2144 8712 N N
輸出的格式順序?yàn)?Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd
可以計(jì)算出X程序所使用的實(shí)存為4681×4096=18763776,約為18MB
2、# svmon -gP -t 3|grep -p Pid|grep '^.*[0-9] '
可將使用交換區(qū)最多的三個(gè)進(jìn)程標(biāo)出,
5428 X 4681 1584 2656 9156 N N
16274 bin 4594 1588 2273 8824 N Y
6458 dtgreet 4660 1580 2144 8712 N N
第一個(gè)程序X所使用的交換區(qū)大小約為 2566×4096 =10510336 字節(jié),大約為10MB空間
3、# svmon -S -t 3 -i 3
每隔三秒顯示使用最多的段
Vsid Esid Type Description Inuse Pin Pgsp Virtual
4f08 - clnt 37505 0 - -
11e1 - clnt 33623 0 - -
8811 - work kernel pinned heap 12637 6547 8091 19397
可見,Vsid為4f08的段使用最多
4、svmon -pP 22674
看PID為22674的進(jìn)程所使用的為那些文件
Pid Command nuse Pin Pgsp Virtual 64-bit Mthrd
22674 java 29333 1611 2756 32404 N Y
Vsid Esid Type Description Inuse Pin Pgsp Virtual
0 0 work kernel seg 2979 1593 1659 4561
a056 - work 43 16 3 46
1e03 2 work process private 77 2 17 93
1080 - pers /dev/hd2:69742 1 0 - -
f8bd f work shared library data 84 0 11 99
60ee 8 work shmat/mmap 0 0 0 0
70ec - pers /dev/hd2:69836 1 0 - -
再利用ncheck命令,用戶可自己建立腳本將device:inode信息抽取出來,如從上述的信息中,我們可通過ncheck得到輸出:
/usr/java130/jre/lib/rt.jar
/usr/java130/jre/lib/fonts/LucidaSansRegular.ttf
/usr/java130/jre/lib/ext/indicim.jar
/usr/java130/jre/lib/ext/ibmjcaprovider.jar
/usr/java130/jre/lib/fonts/LucidaSansDemiBold.ttf
/usr/java130/jre/bin/java
腳本示例如下:
# expand -4 files.sh|nl
1 grep -p Vsid $1|
2 awk 'NR>1&&$0!~/^$/&&$4~/\/dev/{
3 l=substr($4,1,index($4,":")-1)
4 i=substr($4,index($4,":")+1)
5 if (l~/^\//)
6 print l,i
7 else {
8 print substr(l,index(l,",")+1),i
9 }
10 }'|
11 while read lv inode;do
12 fs=$(lsfs -c $lv 2>/dev/null|awk -F: 'NR>1{print $1}')
13 ncheck -i $inode $lv|awk '!/:$/{print lv $2}' lv=$fs
14 done
![]()
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/7282/showart_474004.html |
|