2009-01-30 160 views
5

免費-m我可以看到有377MB的內存和1649MB的機器空閒(其中1567由Ubuntu緩存)。見下面的實際輸出:如何在linux中協調'top'和'free -m'的內存使用情況報告?

[email protected]:~$ free -m 
      total  used  free  shared buffers  cached 
Mem:   2026  1975   51   0   30  1567 
-/+ buffers/cache:  377  1649 
Swap:   3153   87  3065 

然而,當我看着頂級輸出我可以看到RES列使用1GB和273MB的過程。 RES表示駐留在頂部手冊頁的非交換物理內存中。

top - 11:45:26 up 1 day, 38 min, 3 users, load average: 0.27, 0.21, 0.23 
Tasks: 125 total, 1 running, 123 sleeping, 0 stopped, 1 zombie 
Cpu(s): 0.2%us, 6.6%sy, 0.0%ni, 92.8%id, 0.5%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 2075560k total, 2023796k used, 51764k free, 31264k buffers 
Swap: 3229024k total, 89764k used, 3139260k free, 1605400k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
6689 root  20 0 1242m 1.0g 1.0g S 13 51.1 292:59.21 vmware-vmx 
6658 root  20 0 492m 273m 262m S 2 13.5 41:16.75 vmware-vmx 
    1 root  20 0 2844 536 484 S 0 0.0 0:01.50 init 
    2 root  15 -5  0 0 0 S 0 0.0 0:00.00 kthreadd 
    3 root  RT -5  0 0 0 S 0 0.0 0:00.02 migration/0 

據我所知,一些是由其它進程(共享對象等)共享。但是如果有其他進程共享的1GB內存,那麼至少必須使用這麼多內存?

如何免費報告377MB的內存使用,當我看到頂部我看到進程使用1GB和更多的RES內存?

回答

6

top中報告的駐留內存包括諸如顯卡,nics和其他「非ram」內存中的mmaped幀緩衝區等內容。 free報告的內存嚴格爲ram + swap。

+0

比較377MB與1GB;這似乎是大量的內存映射幀緩衝區,大約600MB。 1GB進程是一個VMWare進程,它是否會使用那麼多的非RAM內存? – Caz 2009-01-30 10:55:07