การเรียกระบบ getrusage: อะไรคือ“ ขนาดชุดผู้พักอาศัยสูงสุด


23

man getrusage 2 กล่าวว่า

ru_maxrss (since Linux 2.6.32)
              This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest
              child, not the maximum resident set size of the process tree.

ดังนั้นตัวเลขนี้มีความหมายว่าอะไร?


เพียงแค่ทราบว่าru_maxrssเป็นไบต์บนเครื่อง mac / BSD
Isaac Turner

1
ชี้แจงเล็ก ๆ : ru_maxssเป็นไบต์บนเครื่อง Mac OS X (ดาร์วิน) แต่เป็นกิโลไบต์บนเครื่อง BSD และเครื่อง Linux ดูstackoverflow.com/q/40773924/781723และstackoverflow.com/q/12050913/781723
DW

คำตอบ:


27

ขนาดชุดที่อยู่อาศัยของกระบวนการคือจำนวนหน่วยความจำที่เป็นของมันและมีอยู่ในปัจจุบัน (ที่อยู่อาศัย) ใน RAM (RAM จริงไม่ได้สลับหรือมิฉะนั้นอาศัยอยู่)

ตัวอย่างเช่นหากกระบวนการจัดสรรหน่วยความจำ (พูด 100Mb) และใช้มันอย่างแข็งขัน (อ่าน / เขียนไปยังมัน) ขนาดชุดที่อยู่อาศัยของมันจะอยู่ที่ประมาณ 100Mb (รวมทั้งค่าใช้จ่ายส่วนรหัส ฯลฯ ) หากหลังจากกระบวนการหยุดใช้ (แต่ไม่ปล่อย) หน่วยความจำนั้นชั่วครู่หนึ่งระบบปฏิบัติการสามารถเลือกที่จะสลับชิ้นส่วนของหน่วยความจำนั้นเพื่อสลับเพื่อให้มีที่ว่างสำหรับกระบวนการอื่น ๆ (หรือแคช) ขนาดชุดที่อยู่อาศัยจะลดลงตามปริมาณที่เคอร์เนลสลับ หากกระบวนการปลุกและเริ่มใช้หน่วยความจำนั้นอีกครั้งเคอร์เนลจะโหลดข้อมูลใหม่จากการสลับและขนาดชุดที่อยู่อาศัยจะเพิ่มขึ้นอีกครั้ง

ru_maxrssด้านการstruct rusageเป็น "เครื่องหมายน้ำสูง" สำหรับขนาดชุดถิ่นที่อยู่ บ่งชี้ว่า RAM สูงสุดใช้สำหรับกระบวนการนี้ (เมื่อใช้RUSAGE_SELF)

คุณสามารถ จำกัด ขนาดชุดที่อยู่อาศัยของกระบวนการเพื่อหลีกเลี่ยงการมีแอปพลิเคชันเดียว "กิน" RAM ทั้งหมดในระบบของคุณและบังคับให้แอปพลิเคชันอื่นสลับ (หรือล้มเหลวโดยสิ้นเชิงกับเงื่อนไขหน่วยความจำไม่เพียงพอ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.