He pasado 2 horas leyendo preguntas sobre este asunto, y todavía hay algunos malentendidos.
Tengo este proceso:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
Esto muestra que utiliza la 19.3Mbmemoria residente del sistema (no tengo ningún archivo de intercambio), alrededor 1.8%de la 1GBmemoria del sistema completo . El tamaño virtual es 1.39GB?!?. He leído que ulimit -mno funciona. La gente usa, ulimit -vpor ejemplo, configurar la memoria virtual para el proceso. ¿Es esta memoria virtual la que aparece en VSZ ps? Qué valor debo establecer si quiero restringir este proceso para utilizar la 100MBmemoria del sistema como máximo. He leído la documentación setrlimity esto parece legítimo:
RLIMIT_AS
This is the maximum size of a process' total available memory,
in bytes. If this limit is exceeded, the malloc() and mmap()
functions shall fail with errno set to [ENOMEM]. In addition,
the automatic stack growth fails with the effects outlined above.
Pero en otras versiones de la documentación, este RLIMIT_ASparámetro establece el tamaño de la memoria virtual. ¿Cuál es la verdad?