Ho trascorso 2 ore a leggere domande su questo argomento, e c'è ancora qualche malinteso.
Ho questo processo:
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
Ciò mostra che utilizza la 19.3Mb
memoria residente del sistema (non ho alcun file di scambio), attorno a 1.8%
tutta la 1GB
memoria del sistema. La dimensione virtuale è 1.39GB
?!?. Ho letto che ulimit -m
non funziona. Le persone usano ulimit -v
ad esempio l'impostazione della memoria virtuale per il processo. Questa memoria virtuale è quella elencata con VSZ ps
? Quale valore devo impostare se voglio limitare questo processo per utilizzare 100MB
al massimo la memoria di sistema. Ho letto la documentazione per setrlimit
e questo sembra legittimo:
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.
Ma su altre versioni della documentazione questo RLIMIT_AS
parametro imposta la dimensione della memoria virtuale. Qual'è la verità?