ฉันใช้เวลา 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พารามิเตอร์นี้ตั้งค่าขนาดหน่วยความจำเสมือน ความจริงคืออะไร?