解釋HP-UNIX下爲什麼top 出來的 memory 遠比實際物理內存小
工作需要查看到HP-UNIX服務器的cpu以及內存信息,使用了基本的命令top顯示結果如下:
System:test1 Thu Mar 31 12:49:14 2011
Loadaverages: 0.27, 0.27, 0.28
766processes: 666 sleeping, 84 running, 15 stopped, 1 zombie
Cpustates:
CPU LOAD USER NICE SYS IDLE BLOCK SWAIT INTR SSYS
0 0.44 24.2% 0.2% 22.2% 53.5% 0.0% 0.0% 0.0% 0.0%
1 0.24 4.2% 0.6% 8.6% 86.7% 0.0% 0.0% 0.0% 0.0%
2 0.19 2.8% 0.0% 6.8% 90.4% 0.0% 0.0% 0.0% 0.0%
3 0.31 8.6% 0.0% 6.6% 84.9% 0.0% 0.0% 0.0% 0.0%
4 0.21 4.4% 0.0% 11.2% 84.5% 0.0% 0.0% 0.0% 0.0%
5 0.25 5.2% 0.6% 9.0% 85.3% 0.0% 0.0% 0.0% 0.0%
6 0.25 10.0% 0.0% 12.0% 78.1% 0.0% 0.0% 0.0% 0.0%
7 0.31 36.5% 0.0% 21.7% 41.8% 0.0% 0.0% 0.0% 0.0%
--- ---- ----- ----- ----- ----- ----- ----- ----- -----
avg 0.27 12.0% 0.0% 12.2% 75.8% 0.0% 0.0% 0.0% 0.0%
Memory:1240336K (994056K) real, 4532396K (4210200K) virtual, 950280Kfree Page# 1/15
CPUTTY PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPUCOMMAND
3pts/11 29138 cmstst 241 20 2844K 356Krun 19807:33 99.01 98.84 ksh
注意紅色部分,按照這樣算下來內存總大小應該爲:使用內存:1240336K + 剩餘內存:950280K= 2190616K
大小爲2G 但是該臺服務器的實際內存大小爲8G,還有的6G內存哪裏去了???
看這段解釋:
top 只能看到進程所使用的內存量,所以你看到的 1240336K (994056K) real就是所有進程所使用的內存總和,這個內存是指物理內存,括號前那個值是Total Real Memory,括號內是Active Real Memory, 這兩者的區別就在於Active Real Memory的值只是分配給那些已經在run queue或者正在運行的進程的Real Memory,而Total Real Memory 包括所有的進程。
對於後一項值4532396K (4210200K)virtual的解釋也是同樣的,不過這個值代表了Virtual Memory(一般爲建在Disk上的Swap空間,當然你要問了,我的Swap空間可不止這麼些啊 by executing ‘swapinfo‘,沒錯,Swap空間是大於這裏的Total Vitual Memory的,但我前面說了,這裏的值只是計算的分配給進程的),最後一項950280K free 到確確實實是Free 的Memory,它等於Physical Mem - kernel used - user used - buffer cache。
看到這裏我還是不很明白其他的內存那裏去了,繼續。。。
HP-UX是使用虛擬內存管理一個進程的內存使用空間的,虛擬內存(Virtual memory)= 實際物理內存(physical memory)+ SWAP交換區(swap space)。
swap區一般是指硬盤上的一大塊空間(Oracle要求大小是物理內存的3倍以上)以便內存數據page in/page out。頻繁的page in/page out浪費時間和系統資源(systembus和IO bus速率不match等諸多因素),怎麼辦?惠普的解決辦法是直接在內存上劃一塊空間作爲pseudo memory以避免頻繁的page in/page out。這部分僞內存(不知道這樣翻譯對不對,就是pseudomemory啦)對於HP-UX來說也可以看成是swap區的一部分。
並且一般系統會默認的把physical memory的75%劃做“交換區”
看到這裏哥釋然了............
swap space =Physical Memory乘以75%+Swap Device space
所以系統的物理內存也可以大概估計出來:(real+free )/0.25