Eu tenho algo em torno de 200 GB no valor de dados armazenados em um cluster mongo. A memória física em uma das instâncias que executa o mongo é de 8 GB. Nada mais, de qualquer consequência, é executado nesta instância. Até onde eu entendo com base nos documentos do Mongo (como este: http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage ), isso significa que o processo mongod deve usar cerca de 100% dos a memória física disponível. Mas se você observar a seguinte saída do top
comando, verá que a instância mongod está usando apenas 2 GB de memória residente e há 2 GB de memória física livre disponível, que não está sendo usada.
Alguém pode me explicar esse comportamento? Por que existem 2 GB de memória livre?
top
resultado:
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
...
Informação do sistema:
$ uname -a
Linux aluminum 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux
Notas:
- Há outra instância neste cluster em que o mongod está se comportando como seria de esperar e utilizando toda a memória disponível.
- Olhando para mongostat parece que foram consistentemente ter algum páginas falha, assim que a quantidade de memória utilizada deve ser a crescer:
- (Fiz a mesma pergunta no grupo mongodb-user do google, mas não obtive resposta.)
uname
mas eu não tenho lsb-release
instalado.
lsb-release -a
euname -a
, por favor)