У меня есть 512M vps box на burst.net, и у которого нет swap. Моя os - centos 6.x x64.
Когда он только начинал, он использовал всего 58 МБ оперативной памяти.
$ free -m:
total used free shared buffers cached
Mem: 512 58 454 0 0 0
-/+ buffers/cache: 58 454
Swap: 0 0 0
Теперь я запустил программу Java (которая запускается Python), затем free -m
:
$ free -m
total used free shared buffers cached
Mem: 512 380 131 0 0 0
-/+ buffers/cache: 380 131
Swap: 0 0 0
О, он использовал (380-58=322M) оперативной памяти.
Но когда я top
:
top - 20:37:01 up 67 days, 3:19, 2 users, load average: 0.08, 0.04, 0.00
Tasks: 20 total, 2 running, 18 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 524800k total, 388300k used, 136500k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ DATA COMMAND
20288 freewind 17 0 936m 48m 11m S 0.0 9.4 0:02.07 799m java
20287 freewind 17 0 179m 10m 3404 S 0.0 2.1 0:00.08 7260 python
20200 root 15 0 91732 3940 2948 S 0.0 0.8 0:00.03 932 sshd
20145 root 15 0 91640 3832 2948 S 0.0 0.7 0:00.02 840 sshd
1474 root 18 0 80296 2312 696 S 0.0 0.4 4:06.86 1684 sendmail
Я вижу, что java+python использует только 48m+10m = 58M
ram. Почему free -m
показывает, что они использовали 322M
? Где отсутствует ram?
решение1
В вашем случае 'free -m', похоже, сообщает вам только об общем использовании ОЗУ (вероятно, потому что вы находитесь в VPS), включая буферы и кэши, которые часто учитывают дополнительное использование ОЗУ, не занятое запущенными программами. Вы читалиLinux съел мою оперативную памятьстраница?
решение2
top
показывает подробную информацию по каждому экземпляру или процессу, но free
не делает этого.
При использовании free
вы не знаете точно, что именно работает, вы получаете только сводку.