Saya telah menghabiskan 2 jam membaca pertanyaan tentang masalah ini, dan masih ada beberapa kesalahpahaman.
Saya punya proses ini:
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
Ini menunjukkan penggunaan 19.3Mb
memori residen sistem (saya tidak punya file swap), sekitar 1.8%
seluruh 1GB
memori sistem. Ukuran virtual adalah 1.39GB
?!?. Saya telah membaca bahwa ulimit -m
itu tidak berhasil. Orang menggunakan ulimit -v
mis pengaturan memori virtual untuk proses. Apakah ini memori virtual yang terdaftar dengan VSZ ps
? Nilai apa yang harus saya tetapkan jika saya ingin membatasi proses ini untuk menggunakan 100MB
memori sistem paling banyak. Saya telah membaca dokumentasi untuk setrlimit
dan ini sepertinya sah:
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.
Tetapi pada versi lain dari dokumentasi RLIMIT_AS
parameter ini menetapkan ukuran memori virtual. Apa kebenarannya?