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.3Mbmemori residen sistem (saya tidak punya file swap), sekitar 1.8%seluruh 1GBmemori sistem. Ukuran virtual adalah 1.39GB?!?. Saya telah membaca bahwa ulimit -mitu tidak berhasil. Orang menggunakan ulimit -vmis 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 100MBmemori sistem paling banyak. Saya telah membaca dokumentasi untuk setrlimitdan 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_ASparameter ini menetapkan ukuran memori virtual. Apa kebenarannya?