У меня есть что-то около 200 ГБ данных, хранящихся в кластере Монго. Физическая память на одном из экземпляров, на которых работает монго, составляет 8 ГБ. Ничто другое не имеет значения в этом случае. Насколько я понимаю, основываясь на документах Монго (например, http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage ), это означает, что процесс mongod должен использовать около 100% доступная физическая память. Но если вы посмотрите на следующий вывод top
команды, вы увидите, что экземпляр mongod использует только 2 ГБ резидентной памяти и есть 2 ГБ свободной физической памяти, которая вообще не используется.
Может кто-нибудь объяснить мне это поведение? Почему там 2 ГБ свободной памяти?
top
вывод:
top - 23:19:43 up 89 days, 20:05, 2 users, load average: 0.41, 0.55, 0.59
Tasks: 101 total, 1 running, 100 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.0%us, 1.3%sy, 0.0%ni, 93.9%id, 2.6%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 8163664k total, 6131764k used, 2031900k free, 54976k buffers
Swap: 16771848k total, 10604k used, 16761244k free, 5367700k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1401 mongodb 20 0 174g 2.0g 1.9g S 23 26.2 18070:55 mongod
...
Системная информация:
$ uname -a
Linux aluminum 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux
Ноты:
- В этом кластере есть еще один экземпляр, где mongod ведет себя так, как я ожидаю, и использует всю доступную память.
- Глядя на mongostat, похоже, что у него постоянно возникали сбои страниц, поэтому объем используемой памяти должен расти:
- (Я задал этот же вопрос в группе Google mongodb-user, но не получил ответа.)
uname
но я не lsb-release
установил.
lsb-release -a
uname -a