ฉันใช้เวลา 2 ชั่วโมงอ่านคำถามเกี่ยวกับเรื่องนี้ แต่ก็ยังมีความเข้าใจผิดอยู่บ้าง
ฉันมีกระบวนการนี้:
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
นี่แสดงให้เห็นว่ามันใช้19.3Mb
หน่วยความจำระบบ (ฉันไม่มีไฟล์สลับ) รอบ ๆหน่วยความจำระบบ1.8%
ทั้งหมด 1GB
ขนาดเสมือนคือ1.39GB
?!? ฉันได้อ่านแล้วว่าulimit -m
ใช้งานไม่ได้ คนใช้ulimit -v
เช่นการตั้งค่าหน่วยความจำเสมือนสำหรับกระบวนการ หน่วยความจำเสมือนนี้เป็นรายการ VSZ หนึ่งรายการps
หรือไม่ ฉันควรตั้งค่าเท่าใดหากฉันต้องการ จำกัด กระบวนการนี้ให้ใช้100MB
หน่วยความจำระบบมากที่สุด ฉันได้อ่านเอกสารสำหรับsetrlimit
และดูเหมือนว่าถูกต้อง:
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.
แต่ในเอกสารเวอร์ชันอื่นRLIMIT_AS
พารามิเตอร์นี้ตั้งค่าขนาดหน่วยความจำเสมือน ความจริงคืออะไร?