В этом случае вы могли бы предоставить вывод vmstat 5? Если вы смотрите на ps или top, то, возможно, видите не ту память, которая используется. Выделенная память не так важна, если она не используется.
Например, в выводе ps я вижу VSZ и RSS. Для меня важен RSS.
# ps uax|egrep '[0-9].unicorn|VS[Z]'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
ddiscou+ 2192 0.0 13.4 558320 267540 ? Sl Jan10 33:21 unicorn master -E production -c config/unicorn.conf.rb
ddiscou+ 2294 0.0 18.2 5126600 363432 ? Sl Jan10 90:59 unicorn worker[0] -E production -c config/unicorn.conf.rb
ddiscou+ 2301 0.0 14.2 5149576 282892 ? Sl Jan10 38:40 unicorn worker[1] -E production -c config/unicorn.conf.rb
В top я вижу то же самое, но это называется VIRT и RES.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2284 ddiscou+ 25 5 5246644 327496 5640 S 1.7 16.4 872:50.70 ruby
2294 ddiscou+ 20 0 5126600 364284 14436 S 0.7 18.3 91:00.13 ruby
vmstat показывает текущее давление на память — сколько осталось свопинга, сколько свободной памяти и буферной памяти, и, что наиболее важно, есть ли свопинг на диск (колонка si).
root@ubuntu-2gb-nbg1-1:~# vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 239616 127080 185428 464448 0 0 14 32 4 2 2 1 97 0 0
0 0 239616 124584 185432 464500 0 0 0 13 138 318 2 2 96 0 0
0 0 239616 126120 185436 464500 0 0 0 13 116 264 1 0 99 0 0
0 0 239616 120376 185436 464504 0 0 0 46 125 322 3 2 95 0 0
0 0 239616 123448 185436 464504 0 0 0 73 129 306 1 1 98 0 0