คำถามนี้ครอบคลุมในรายละเอียดที่ดีที่นี่
คุณวัดการใช้หน่วยความจำของแอปพลิเคชั่นหรือกระบวนการใน Linux ได้อย่างไร?
จากบทความในบล็อกของใช้หน่วยความจำความเข้าใจบน Linux , psไม่ได้เป็นเครื่องมือที่ถูกต้องที่จะใช้สำหรับความตั้งใจนี้
ทำไม
ps"ผิด"ขึ้นอยู่กับว่าคุณมองอย่างไร
psจะไม่รายงานการใช้หน่วยความจำจริงของกระบวนการ สิ่งที่ทำจริง ๆ คือการแสดงว่าหน่วยความจำจริงแต่ละกระบวนการจะใช้เวลาเท่าใดหากเป็นกระบวนการเดียวที่ทำงานอยู่ แน่นอนเครื่อง Linux ทั่วไปมีกระบวนการหลายโหลทำงานในเวลาใดก็ตามซึ่งหมายความว่า vsz และหมายเลข RSS รายงานโดยpsเกือบจะแน่นอนที่ไม่ถูกต้อง
psไม่ได้แสดงให้เห็นว่า - มันแสดงหมายเลขหน่วยความจำเสมือนและหน่วยความจำถิ่นที่ซึ่งจำนวนหน่วยความจำเสมือนสูงสุดที่กระบวนการสามารถใช้ในทางทฤษฎีมันเป็นกระบวนการเดียว (ไม่เช่นนั้น), ใช้ทุกหน้าเดียวที่จัดสรร และไม่ได้แมปหรือยกเลิกการแมปหน้าใด ๆ (ไม่น่าเป็นไปได้) ในขณะที่ถิ่นที่อยู่จะแสดงจำนวนหน่วยความจำเสมือนที่ถูกแมปกับฟิสิคัลในขณะนี้ virt > usage > resอย่างไรก็ตามโดยทั่วไปแล้วในระบบ 64 บิตvirt ~= res*10มันเป็นช่วงกว้างมาก
