Sim, o VSZ é uma memória virtual. Quanto ao RLIMIT_AS, onde você encontrou o parágrafo citado acima? Como o setrlimit (2) é uma chamada do sistema Linux, não vejo como ele poderia monitorar o malloc (3), uma função da biblioteca. Em vez disso, ele só pode trabalhar com brk (2), sbrk (2) e mmap (2) - isso também é o que sugere sua manpage (verificada no Scientific Linux). No entanto, a quantidade total de memória solicitada por meio dessas funções é memória virtual, de modo que RLIMIT_AS de fato limita a memória virtual. (Isso é, novamente, de acordo com a página de manual setrlimit (2)).
Infelizmente, você não pode limitar o RSS no Linux (isso seria ulimit -m
). Você pode tentar ulimit -d
(RLIMIT_DATA), mas isso irá ignorar mmap (2), normalmente usado para grandes alocações. Outra possibilidade seria limitar a memória virtual, mas com uma diferença tão grande entre o RSS e o VSZ, isso pode ser difícil.