topas 中 PgSp 欄位的含義
$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 為單位。
比較 、 和 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 the topas 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 命令顯示的換頁空間使用量,有可能大的共享記憶體段被交換出去了,這是非常糟糕的情況,要趕緊打報告,擴記憶體了。
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 為單位。
比較 、 和 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 the topas 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 命令顯示的換頁空間使用量,有可能大的共享記憶體段被交換出去了,這是非常糟糕的情況,要趕緊打報告,擴記憶體了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23488160/viewspace-675840/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- v$session中command欄位的含義解析Session
- linux top命令欄位含義Linux
- iOS開發Xcode中的Info.plist欄位含義iOSXCode
- SAP ABAP 中,if_http_extension 介面的flow_rc 欄位含義HTTP
- HTTP 請求頭部欄位中 connection - keep-alive 的含義HTTPKeep-Alive
- Chrome Network 下邊欄中 Finish 的含義Chrome
- 卡卡西:一文詳解explain各欄位含義AI
- 舉例解釋一下explain各欄位的含義AI
- ABAP 資料庫表 Size Category 欄位的準確含義資料庫Go
- [20171102]檢視v$session中process欄位含義Session
- 理解V$LOCK.ID1和ID2欄位的含義
- oracle會話阻塞查詢指令碼及對應欄位含義Oracle會話指令碼
- all_constraints 表欄位Constraint_type值含義AI
- php二進位制安全的含義PHP
- Java中static的含義Java
- 含LONG型別欄位的表無法MOVE型別
- Request 增加自定義欄位的方式
- Oracle中的Rownum 欄位Oracle
- Oracle中的大欄位Oracle
- OCM實驗-建立含特殊欄位型別的表型別
- C++中&和*的含義C++
- Spring中bean的含義SpringBean
- oracle中斜槓(/)的含義Oracle
- SVN中clean up的含義
- PhpCms自定義欄位的使用說明PHP
- django admin中增加自定義超連結欄位Django
- c++中&含義C++
- explain中filesort含義AI
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- SD--如何在輸出控制中增加自定義欄位
- exists子句在Sql中的含義SQL
- JavaScript 中 void(0) 的含義JavaScript
- group by中cube含義解析
- oracle中lob欄位Oracle
- 如果對10g 中含LOB欄位的表僅僅進行insert 的同步 ?
- Linux shell中2>&1的含義Linux
- JS陣列中的apply含義JS陣列APP
- 聊聊“管理+IT”中管理的幾個含義