Eu simulei um hogger de memória com este código:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int max = -1;
int mb = 0;
char* buffer;
if(argc > 1)
max = atoi(argv[1]);
while((buffer=malloc(1000*1024*1024)) != NULL && mb != max) {
memset(buffer, 0, 1000*1024*1024);
mb++;
printf("Allocated %d MB\n", 1000*mb);
sleep(1);
}
return 0;
}
Eu coloquei o código no arquivo munch.c
e depois:
gcc -o munch munch.c
./munch # will run until SIGINT or killed by kernel
Eu abri dois outros consoles e coloquei isso neles:
# 1st console
dmesg -w
# 2nd console
sudo tail -f /var/log/{kern.log,syslog}
No entanto, eu não vi nada uma vez, então munch
process foi morto.
Então eu acho que você só precisa escrever um script para monitorar o consumo de memória. Este poderia ser um ponto de partida:
watch 'ps auxw | head -1 && ps auxw | sort -k6 -nr | head -5'
Você receberá uma lista atualizada de processos classificados pelo RSS
. A opção w
mostra nomes completos de comandos.