Tôi đã dành 2 giờ để đọc các câu hỏi về vấn đề này, và vẫn có một số hiểu lầm.
Tôi có quá trình này:
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
Điều này cho thấy nó sử dụng 19.3Mb
bộ nhớ cư trú hệ thống (tôi không có tệp hoán đổi), xung quanh 1.8%
toàn 1GB
bộ bộ nhớ hệ thống. Kích thước ảo là 1.39GB
?!?. Tôi đã đọc ulimit -m
nó không hoạt động. Mọi người sử dụng ulimit -v
ví dụ như thiết lập bộ nhớ ảo cho quá trình. Bộ nhớ ảo này có phải là một VSZ được liệt kê ps
không? Giá trị nào tôi nên đặt nếu tôi muốn hạn chế quá trình này sử dụng tối đa 100MB
bộ nhớ hệ thống. Tôi đã đọc tài liệu cho setrlimit
và điều này có vẻ hợp pháp:
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.
Nhưng trên các phiên bản khác của tài liệu, RLIMIT_AS
tham số này đặt kích thước bộ nhớ ảo. Sự thật là gì?