topas 中 PgSp 欄位的含義

來源:互聯網
上載者:User

 

$topas -P
Topas Monitor for host:    jhhost     Interval:   2    Thu Aug 26 16:23:57 2010

                                DATA  TEXT  PAGE               PGFAULTS
USER        PID    PPID PRI NI   RES   RES SPACE    TIME CPU%  I/O  OTH COMMAND
oracle   324076       1 102 20  1293  4827  1293    3:07 21.7    0    0 oracle
patrol   307496       1  80 30  5072   619 11840 2465:39  0.3    0  230 PatrolAgent
patrol   241988       1  60 20   685     6   835  438:53  0.1    0    0 snmpmagt
oracle   463258  508290  60 20   441    49   441    0:00  0.0    0    0 topas
root     172464  156076  60 20    67     0   345  510:40  0.0    0    0 dtgreet
oracle   467318       1  60 20  1014  4827  1014    0:00  0.0    0    0 oracle
oracle   327748       1  60 20   256  4827  1084   16:25  0.0    0    0 oracle
patrol   299382  307496  60 20   187   954   539   39:58  0.0    0    0 sqlplus
oracle   311356       1  60 20   134  4827  1396   20:18  0.0    0    0 oracle
oracle   303164       1  60 20   131  4827  2167   25:44  0.0    0    0 oracle
root     278788  205276  60 20    40    61   306   47:43  0.0    0    0 i4llmd
root      28972       0  37 41    24     0    29   75:29  0.0    0    0 gil
root      61592  160160  60 20    64    26   651   20:13  0.0    0    0 X
root       4384       0  16 41    11     0    12   37:30  0.0    0    0 swapper
oracle   307258       1  60 20   469  4827  1873   17:29  0.0    0    0 oracle
root     221672       1  60 20   257    31  1600    9:26  0.0    0    0 ltid
root     282672       1  60 20   296    19  6578    7:27  0.0    0    0 vmd
root     225300       1  60 20   177   308   716   12:42  0.0    0    0 naviagen
root     204816       1  60 20    45     0    47   11:55  0.0    0    0 rpc.lock
root     192708       0  60 20    11     0    12    0:22  0.0    0    0 n4bg

$ topas
Topas Monitor for host:    jhhost              EVENTS/QUEUES    FILE/TTY
Thu Aug 26 16:24:56 2010   Interval:  2         Cswitch     346  Readch    88771
                                                Syscall    2742  Writech   23220
Kernel    0.5   |#                           |  Reads       141  Rawin         0
User     42.3   |#############               |  Writes      124  Ttyout      259
Wait      0.1   |#                           |  Forks         0  Igets         0
Idle     57.1   |#################           |  Execs         0  Namei        78
                                                Runqueue    0.0  Dirblk        0
Network  KBPS   I-Pack  O-Pack   KB-In  KB-Out  Waitqueue   0.0
en0      69.2    112.5   118.5    45.7    23.5
lo0       2.0      3.5     3.5     1.0     1.0  PAGING           MEMORY
en1       0.7      8.5     0.0     0.7     0.0  Faults       54  Real,MB    3728
                                                Steals        0  % Comp     87.7
Disk    Busy%     KBPS     TPS KB-Read KB-Writ  PgspIn        0  % Noncomp   8.5
hdisk46   0.0     39.2     0.5     0.0    39.2  PgspOut       0  % Client    8.5
skpower7  0.0     39.2     0.5     0.0    39.2  PageIn        0
hdisk1    1.0      8.0     2.0     0.0     8.0  PageOut       0  PAGING SPACE
                                                Sios          0  Size,MB   16384
Name            PID  CPU%  PgSp Owner                            % Used     15.1
oracle       410020  24.9   5.0 oracle          NFS (calls/sec)  % Free     84.8
oracle       324076  23.4   5.1 oracle          ServerV2       0
PatrolAgent  307496   0.1  46.2 patrol          ClientV2       0   Press:
topas        389584   0.1   1.8 oracle          ServerV3       0   "h" for help
dtgreet      172464   0.1   1.3 root            ClientV3       0   "q" to quit

上面是在 AIX 5.3 系統下的兩份 topas 輸出,第一份是僅輸出進程(帶 -P 選項),第二份是囊括 CPU、記憶體、交換空間、I/O 和進程多項資源指標於一個介面的 topas 標準輸出。PgSp 是一項描述進程的指標,是 Page Space 的縮寫,本義指的是進程所用頁空間大小,在兩份輸出中,topas -P 顯示的 Page Space 以頁為單位(1頁等於4KB),topas 標準輸出中 PgSp 以 MB 為單位。

比較 HP-UX 、 Linux 和 AIX 上 top 輸出中與 PgSp 相似的欄位( HP-UX 上是 SIZE ,Linux 上是 VIRT),PgSp 實在是名字起得不好,太容易和 Paging Space 混淆,注意一個是名詞 Page,一個是動詞 Paging,Paging Space 在 AIX 中與 Swap Space 是互換使用的,Paging Space 是換頁空間,也是交換區所在。PgSp 是虛空間(Virtual Space),不是換頁空間或交換區空間。man topas 手冊頁對 Page Space 說明如下:

Virtual working set size used by process (4KB pages). Note: The true paging space allocations per process are not available using thetopas command. Refer to the svmon command for more detailed.

PgSp 只包括進程私人資料區段以及堆棧段虛空間,不含執行映象、共用庫、共用記憶體部分,PgSp 的值一定大於或等於 DATA RES(見前面 topas -P 輸出) 的值,因為 PgSp 會包括不在記憶體中的不活動的私人資料區段部分或者已被交換到換頁空間上的部分。什麼叫不活動的資料區段,舉個例子,你有一個應用程式通過 malloc 系統調用申請了 1MB 記憶體空間,系統並非馬上就在實體記憶體中就給它划了那麼多空間,你如果一直不用這段記憶體(譬如作 I/O 操作),那麼這段空間只在虛空間裡存在。在前面 topas -P 輸出中,我們看到一個進程號是 324076 的 oracle 進程,其 PgSp 與 Data RES 相同,都是 1293 頁;一個進程號是 327748 的 oracle 進程,其 PgSp 是 1084 頁,Data RES 是 256 頁;一個進程號是 307496 的 PatrolAgent 進程,其 PgSp 是 11840 頁,Data RES 是 5072 頁。一般記憶體充裕的情況下,PgSp 與 Data RES 是一致的,除非你程式編得不好,申請一個大記憶體又不用。前面 topas 標準輸出中我的計算記憶體(%Comp)已佔到總記憶體的 88%,換頁空間(paging space)使用了 15%,這不是一個記憶體很充分的系統。

大家會有一個問題:我如何知道換頁空間(paging space)是被哪些進程佔用了?前面那段英文交代得很清楚,topas 沒法告訴你這些,用 svmon 命令可看到進程使用換頁空間的情況。

另外要說明的是 ps 命令中也有類似 PgSp 的欄位,以 PatrolAgent 這個進程(pid 號為 307496)為例,執行以下命令:

$ ps avx | head -1; ps avx | grep 307496
    PID    TTY STAT  TIME    PGIN   SIZE   RSS   LIM   TSIZ   TRS  %CPU %MEM  COMMAND
 307496     -   A    2478:25 309661 47360 21900 32768  3632   2332  0.1  1.0  PatrolAgent

SIZE 欄位與 PgSp 等義。ps 輸出中與記憶體/虛存有關的單位是 KB,看 SIZE 值是 47360KB(46.2MB),也就是 11840 頁,與 top 中的 PgSp 完全相同。

前面說過要瞭解 AIX 中某個進程使用換頁空間的情況,正規方法是用 svmon 命令,不過你也可以用 ps 命令作個大致換算,看前面 PatrolAgent 進程的 ps 輸出,SIZE-(RSS-TRS)=47360-(21900-2332)=27792KB, 這個 PatrolAgent 進程大概使用了26MB 的換頁空間,嘿,這 26MB 也可能是未使用的虛空間呢。

你可以用下面的 shell 指令碼來估算你的系統中全部進程佔用了多少換頁空間(提醒你只是估算):

$ ps avx | sed -e "1d" | awk 'BEGIN { total = 0 } { total += ( $6 - ( $7 - $10 ))} END { print "total = ",total }'

注意 AIX 的 ps 輸出中 SIZE 欄位以及 RSS 欄位都不包括共用記憶體(shared memory)部分,這點與 Linux 不同,使用 ps 要注意到這種差異。一般資料庫伺服器的共用記憶體段都常駐記憶體,不會用到換頁空間,如果上面 shell 指令碼算出的換頁空間佔用量明顯小於 lsps -s 命令顯示的換頁空間使用量,有可能大的共用記憶體段被交換出去了,這是非常糟糕的情況,要趕緊打報告,擴記憶體了。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.