• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            AIX的SVMON命令詳解

            Posted on 2012-03-05 10:38 Prayer 閱讀(3123) 評論(0)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX
            http://czmmiao.iteye.com/blog/1153499

            svmon概述

            svmon 命令用于顯示當前內存狀態的信息,可通過

            # lslpp bos.perf.tools
            查看是否有安裝。因為 svmon 命令在啟用中斷的用戶級別運行,所以顯示的信息不組成真正的內存快照。
            在非常繁忙的系統中,svmon收集的數據和真實的數據有所差距,在svmon進程搜集的過程中,VMM(虛存管理器)可能已經發生改動了。
            因為svmon使用的全是VMM中的數據,而VMM對內存的視圖是基于內存段的,所以,理解svmon的輸出,必須先理解段的概念。


            段(segment)是一組頁的合集,
            用來報告內存消耗的基本對象。因此 svmon 所報告的統計信息是以頁面表示的。 每個段為256M,而每頁為4KB字節的虛存,每幀為4KB字節的實存,每個段可同時被多個進程使用,每個段屬于以下五種類型其中的一種:
            persistent:存放JFS文件或目錄
            working:進程數據區域和共享內存段
            client:用于實現虛擬文件系統如NFS,CD-ROM文件系統和JFS2
            mapping:用于實現文件和內存之間的映射關系
            real memory mapping:用于對I/O空間的訪問

            svmon參數詳解

            -a SupClassName 將范圍限于 SupClassName 類參數的子類(在層報告 -T 中)。參數是超類名。不支持類列表。
            -b 顯示所有顯示幀的引用和修改位的狀態(詳細報告 -D )。顯示時,重新設置幀的引用位。使用 -i 標志時,會檢測在每個間隔間存取的幀。
            注:
            因為該標志會影響性能,所以請謹慎使用。
            -c 表示統計信息中只包含客戶段。缺省情況下會分析所有段。
            -C Command1 ...CommandN 顯示運行命令名 Commandnm1 ...CommandnmN 的進程的內存使用統計信息。Commandnm 是字符串。它是可執行文件精確的基本名。
            -d 對于給定實體,顯示屬于該實體(用戶名或命令名)的進程的內存統計信息。
            -D SID1 ...SIDN 顯示段 SID1 ...SIDN 的內存使用統計信息和每個段所有幀的詳細狀態。指定的段標識符必須關于主段。
            -e 顯示 Class 參數的子類的內存使用統計信息(該參數在工作負載類報告 -W 和層報告 -T 中)。-W-a 類參數需要是超類名稱。
            -f 表示統計信息中只包含持久段(文件)。缺省情況下會分析所有段。
            -F [ Frame1...FrameN ] 顯示幀 Frame1...FrameN 狀態,包含其所屬的段。如果沒有供應幀列表,那么會顯示所用內存的百分比。
            -g 表示要顯示的信息按照在調頁空間上保留或使用的頁面總數的降序排列。這個標志結合段報告改變了排序列表末尾的非工作段。
            -G 顯示全局報告。
            -i Interval [ NumIntervals ] 指示 svmon 命令重復顯示統計信息。每個 Interval 秒就收集和打印統計信息。NumIntervals 是重復的次數;如果未指定,那么 svmon 一直運行到用戶使用 Ctrl-C 中斷為止。
            注:
            因為需要花費幾秒來收集某些選項的統計信息,所以觀察到的時間間隔可能比指定的時間間隔大。
            -j 顯示每個持久段引用的文件路徑。
            注:
            因為該標志會對性能產生潛在的影響(特別是svmon -S ),所以請謹慎使用。
            -l 每個顯示的段都會顯示使用段的進程標識符列表,并且根據報告類型顯示進程所屬的實體名(登錄、命令、層或類)。對于特別的段,會顯示標號而不是進程標識符列表。
            系統段
            顯示標志為 system 的段的標號。
            未使用段
            此標號將顯示所有的現有進程都未使用的段。例如,與文件相關的持久段不再使用。
            共享庫文本
            顯示包含共享庫文本的段的標號,可能大部分進程都使用該共享庫文本(例如,libc.a )。這將阻止顯示進程的長列表。
            -m 段映射源段時,顯示關于源段的信息并映射段。缺省值是只顯示關于映射段的信息。
            -n 表示統計信息中只包含非系統段。缺省情況下會分析所有段。
            -p 表示將要顯示的信息按照帶固定內存的頁面總數降序排列。
            -P [ PID1 ... PIDN ] 顯示進程 PID1 ...PIDN 的內存使用統計信息。PID 是一個十進制的值。如果沒有供應進程標識符(PID)列表,那么就會顯示所有活動進程的內存使用統計信息。
            -q 根據它們是否處理大頁面而過濾結果。另外,它顯示大頁面度量值。
            -r 顯示已分配的段頁面內的范圍。因為頁面可從兩端開始然后向中間移動而得到分配,所以工作段可能具有兩個范圍。
            -s 表示統計信息中只包含系統段。缺省情況下會分析所有段。
            -S [ SID1 ...SIDN ] 顯示段 SID1 ...SIDN 的內存使用統計信息。SID 是一個十六進制的值。指定的段標識符必須關于主段。如果沒有供應段標識符(SID)列表,那么就會顯示所有定義的段的內存使用統計信息。
            -t Count 顯示要打印的最高 Count 對象的內存使用統計信息
            -T [ Tier1...TierN ] 顯示所有層號 Tier1...TierN 的類的內存使用統計信息。如果沒有供應層列表,那么就會顯示所有定義的層的內存使用統計信息。
            -u 表示要顯示的信息按照實內存的頁面總數降序排列。如果無下列標志出現,這就是缺省的排序標準:-p-g-v
            -U [ LogName1 ...LogNameN ] 顯示登錄名 LogName1 ...LogNameN 的內存使用統計信息。Logname 是一個字符串,它是精確的登錄名。如果沒有提供登錄標識符列表,那么就會顯示所有定義的登錄標識符的內存使用統計信息。
            -v 表示要顯示的信息按照虛擬空間的頁面總數降序排列。這個標志結合段報告改變了排序列表末尾的非工作段。
            -w 表示統計信息中只包含工作段。缺省情況下會分析所有段。
            -W [ Clnm1 ...ClnmN ] 顯示工作負載管理類 Clnm1 ...ClnmN 的內存使用統計信息。Clnm 是一個字符串。它是一個類的精確名稱。對一個子類來說,名稱應該具有 superclassname.subclassname 的格式。如果沒有提供類名列表,那么就會顯示所有定義的類名的內存使用統計信息。
            -x 顯示層報告 -T 中對某個層的每個類的段的內存使用統計信息。
            -z 顯示在執行 svmon 過程中動態分配的最大內存大小。

            具體使用范例

            1、全局統計信息

            #svmon -G
                              size                  inuse          free             pin            virtual       mmode
            memory      3932160     2729499     1202661      818627     1616925      Ded
            pg space    8388608        8595

                           work           pers        clnt       other
            pin          675474          0        2801     140352
            in use      1616925        0     1112574

            PageSize    PoolSize       inuse        pgsp         pin            virtual
            s    4 KB          -       1966891        8595      209571      854317
            m   64 KB         -        47663           0            38066       47663

            其中

            inuse-------已使用的

            free---------空閑的

            pin-----“釘”在內存中的內存段(筆者認為這不是固定內存段)

            virtual-----虛擬內存段

            work------工作內存段

            pers-------固定內存段

            other------- mapping和real mapping memory

            PageSize-----不同內存頁大小的統計情況,s為常規頁面,大小為4k,m為大頁面大小為64k。

            pgsp------ 分頁空間的使用情況
            注意,在段的描述中,如果paging space使用的節中如果有一橫(-),表明該段未使用交換區,work段可能使用交換區,但persistent段和client段不會使用交換區。
            2、打印 1/2 小時中每分鐘的全局統計信息,請輸入:
            #svmon -G -i 60 30

            3、要打印出只考慮工作段的用戶 root 和 steve 的內存使用統計信息,請輸入:
            #svmon -U root oracle -w

            ===============================================================================
            User                                 Inuse      Pin     Pgsp  Virtual
            oracle                              558293    16880        0   558293

                 PageSize                Inuse        Pin       Pgsp    Virtual
                 s    4 KB              515157         80          0     515157
                 m   64 KB                2696       1050          0       2696

            ........................................................................................
            SYSTEM segments             Inuse      Pin       Pgsp    Virtual
                                                 13129     8552        0      13129

                 PageSize                Inuse        Pin       Pgsp    Virtual
                 s    4 KB                 3785       72          0       3785
                 m   64 KB                584        530        0        584

                Vsid      Esid  Type  Description                 PSize  Inuse   Pin    Pgsp   Virtual
               20002      0    work  kernel segment              m     584    530     0       584
            以上省略一部分輸出。。。。

            用戶運行的進程所使用的段分成三個類別:
            系統:所有進程共享的段
            互斥:屬于oracle 的進程集所使用的段
            共享:幾個用戶共享的段。

            其中

            Vsid:表示虛擬段標識符。表示在虛擬內存管理器中的唯一段。

            Esid: 表示有效的段標識符。Esid只有在段屬于進程的地址空間時才有效。提供時,它表示進程如何使用段。如果 vsid 段被幾個進程映射,但具有不同的 esid 值, 那么該字段包含“-”。如果是那樣的話,那么通過應用于使用該段的每個進程標識符的 -P 標志,可以獲得精確的 esid 值。因為用于管理打開的文件或多線程結構的段不是進程的用戶地址空間的一部分,所以也對這些段顯示“-”。

            3、 可將使用實存最多的三個進程標出

            # svmon -uP -t 3|grep -p Pid|grep '^.*[0-9] '
            5428 X 4681 1584 2656 9156 N N
            16274 bin 4594 1588 2273 8824 N Y
            6458 dtgreet 4660 1580 2144 8712 N N

            輸出的格式順序為 Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd
            可以計算出X程序所使用的實存為4681×4096=18763776,約為18MB
            4、
            可將使用交換區最多的三個進程標出

            # svmon -gP -t 3|grep -p Pid|grep '^.*[0-9] '
            5428 X 4681 1584 2656 9156 N N
            16274 bin 4594 1588 2273 8824 N Y
            6458 dtgreet 4660 1580 2144 8712 N N

            第一個程序X所使用的交換區大小約為 2566×4096 =10510336 字節,大約為10MB空間
            5、
            每隔三秒顯示使用最多的段
            # 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的段使用最多
            6、
            看PID為22674的進程所使用的為固定內存
            #svmon -pP 22674  

            7、要打印出段 700e 8811 和 bed7 的內存使用統計信息,請輸入:
            #svmon -S 700e 8811 bed7 1cf8e

            8、打印出命令 login ,ksh的內存使用統計信息, 包括地址范圍,請輸入:

            #svmon -C login ksh -r

            9、要打印出只考慮非系統工作段的所有進程的內存使用統計信息,并且根據虛擬頁面數對該進程排序,請輸入:
            #svmon -P -n -w -v

            10、根據實內存的頁數將系統段排序,并且打印出結果列表中最高的 10 個系統段,請輸入:
            #svmon -S -s -u -t 10

            11、只打印大頁面段,請輸入:
            #svmon -S -q

            常見問題分析
            svmon -S中inuse的求和結果比svmon -G中的inuse小

            下面的腳本可以用來統計svmon -S中的inuse的相加結果:
            ==============================================
            #!/usr/bin/ksh
            svmon -S | cut -c54-62 | awk '/^[-sLm]/ {if ($1 ~ /L/)
            {COUNT1 =($2*4096+COUNT1)}
            else if ($1 ~ /m/)
            {COUNT2 =($2*16+COUNT2)}
            else {COUNT3 =$2+COUNT3}}
            END {printf "The result is as following with 4k as unit size\n16M page count=%d\n64k page count=%d\n4k page count=%d\nTatal page count=%d\n", COUNT1,COUNT2,COUNT3,'COUNT1+COUNT2+COUNT3'}'
            ========================================================
            那么,產生這種差別的原因是什么呢?解釋如下:
            svmon -S用來顯示系統中所有內存段(segment)的內存使用信息。AIX上僅存在三種內存段,它們是work,client和persistent。因此,統計svmon -S中inuse的和就是將被使用的上述三種內存段進行求和。但是,這種統計并沒有將系統上所有的被使用的內存頁面統計進來。系統里存在著一些尚未被VMM管理的內存頁面(mapping和real mapping memory),這些頁面已經被使用,但是不屬于上述三種內存段,因此在svmon -S中體現不出來。而svmon -G則包含了這些未被管理的頁面。
            這些未被VMM管理的內存主要是被硬件使用,用來對物理內存做一些設置。在AIX 5L中,可以通過在kdb執行vmstat來查看未被管理的內存,輸出如下:
            VMM Memory Limits:
            Total available memory (4K frames) : 00100000 4.0GB
            Total unmanaged mem (wlm_hw_pages): 0000D639 214.3MB

            4K number of frames : 000F29C7 3.8GB
            4K frames pinned : 00009FEE 160.0MB
            4K system pinnable frames remaining: 000B817E 2.9GB
            4K user pinnable frames remaining : 000BC0BC 3.0GB

            Free paging space (in 4K blocks) : 0001FD00 509.0MB
            Paging space SIGDANGER level : 00001000 16.0MB
            Paging space SIGKILL level : 00000400 4.0MB
            其中“unmanaged mem”就代表這類未被VMM管理的內存頁面

             

            參考至:http://www.eygle.com/digest/2009/07/ibm_aix_svmon.html

            http://www.kuqin.com/aixcmds/aixcmds5/svmon.htm#c013820260joy

            http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2811998D15000

            亚洲国产精品无码久久久蜜芽| 久久香蕉国产线看观看99| 一本色道久久88加勒比—综合| 久久99精品久久久久久不卡| 亚洲精品乱码久久久久久蜜桃不卡 | 无码人妻精品一区二区三区久久 | 无码8090精品久久一区| 99久久国产综合精品麻豆| 久久人人爽人爽人人爽av| 久久国产精品99精品国产| 精品久久久无码人妻中文字幕| 久久国产精品国语对白| 精品国产乱码久久久久软件| 久久久久无码国产精品不卡| 国内精品久久久久久麻豆| 久久久国产精华液| 久久综合丝袜日本网| 亚洲国产精品无码久久久不卡 | 久久久久亚洲AV无码永不| 久久精品无码一区二区app| 国内精品久久久久伊人av| 狼狼综合久久久久综合网| 性做久久久久久久| 国产精品欧美久久久久无广告| 9999国产精品欧美久久久久久| 久久久久亚洲AV成人网人人网站| 亚洲国产天堂久久综合网站| 久久久久久午夜成人影院| 久久亚洲AV成人无码| 人妻丰满?V无码久久不卡| 久久精品无码免费不卡| 国产日韩久久免费影院| 欧美综合天天夜夜久久| 国产成人综合久久综合| 国产精品久久影院| 久久精品免费一区二区三区| 免费精品久久久久久中文字幕| 精品人妻伦九区久久AAA片69| 品成人欧美大片久久国产欧美| 94久久国产乱子伦精品免费| 国产日韩欧美久久|