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.3Mbmemoria residente del sistema (non ho alcun file di scambio), attorno a 1.8%tutta la 1GBmemoria del sistema. La dimensione virtuale è 1.39GB?!?. Ho letto che ulimit -mnon funziona. Le persone usano ulimit -vad 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 100MBal massimo la memoria di sistema. Ho letto la documentazione per setrlimite 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_ASparametro imposta la dimensione della memoria virtuale. Qual'è la verità?