ทำไมค่าของ VSIZE ที่อยู่ด้านบนแตกต่างจากค่าของ VSZ (ขนาดชุดเสมือน) ใน ps


9

ฉันรู้ว่า VSZ psมีไว้สำหรับพื้นที่ที่อยู่ทั้งหมดที่จัดสรรสำหรับแอปและบางครั้งก็ใช้นามแฝงเป็น vsize (กล่าวถึงใน man page ของpsบน linux) แต่นิยามของ VSIZE topคืออะไร ผลลัพธ์ยอดนิยมจาก iPhone นี้แตกต่างจากด้านบนของ Linux:

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
 1875 emma         0.0%  0:30.83   7   139    932 17868K  5328K    29M   181M

root# ps -eo pid,rss,vsz|grep 1875
 1875  29324   441324

ฉันไม่สามารถทำซ้ำสิ่งนี้ในเครื่องดาร์วินของฉัน มันทำให้ฉันคิดว่าเปลือกที่พวกเขาติดตั้งบน iPhone มีชุดบล็อกแปลก ๆ ?
พหุนาม

พวกเขาดูเหมือนจะคำนวณ RSIZE / rss ในลักษณะเดียวกัน แต่ ps กำลังรายงาน vsz 2.5x ที่ใหญ่กว่าที่รายงานโดย top บางทีtopใน IOS ไม่ได้รวมวัตถุที่ใช้ร่วมกันใน vsize หรือบางสิ่งบางอย่าง
ทิมเคนเนดี้

"ผลลัพธ์ยอดนิยมจาก iPhone นี้แตกต่างจากบนสุดของ Linux" - ไม่แปลกใจใช่ไหม
poige

คำตอบ:


5

ระบบหน่วยความจำ Linux เต็มไปด้วยกิจวัตรการเพิ่มประสิทธิภาพหน่วยความจำและการแชร์หน่วยความจำจำนวนมากทำให้เกิดความคิดว่าหน่วยความจำนั้นถูกใช้ร่วมกันและถูกใช้ไปด้วยวิธีการที่ยุ่งยากได้อย่างไรเอาต์พุตของคำสั่ง ps และคำสั่งอื่น ๆ ภายใต้/procระบบไฟล์ โดยเฉพาะps, RSS (หน่วยความจำขนาดที่อยู่อาศัย) และ VSIZE (ขนาดหน่วยความจำเสมือน) มีความสำคัญอย่างไรก็ตาม VSIZE ไม่แสดงการใช้งานที่ถูกต้องของหน่วยความจำและความแตกต่างระหว่าง VSIZE และ rss คือสิ่งที่ตั้งใจจริงและจัดสรรให้กับโปรแกรมในระหว่างการเริ่มต้น อาจยังไม่ได้อ้างอิง เช่นเดียวกับโปรแกรมอาจมีการเชื่อมโยงไลบรารีจำนวนมาก แต่ยังไม่ได้โหลดเนื่องจากยังไม่ได้อ้างอิงในโปรแกรมรันไทม์จริง RSS ให้หน่วยความจำทั้งหมดที่ใช้จริงโดยโปรแกรม แต่อาจไม่ให้ภาพที่แท้จริงของการใช้หน่วยความจำเนื่องจากหน่วยความจำส่วนใหญ่ที่จัดสรรอาจถูกแชร์กับอินสแตนซ์อื่น ๆ ของกระบวนการเดียวกันหรือกระบวนการอื่น การดูที่ด้านล่าง/proc/<processid>/mapsอาจให้ข้อมูลคร่าวๆเกี่ยวกับวิธีการใช้หน่วยความจำ แต่บางครั้งความเงียบอาจทำให้เข้าใจผิดได้ ใช้pmap -x <pid> จาก commandline มีประโยชน์ที่จะเห็นการแพร่กระจายคือ

สาธารณูปโภคมักจะดีกว่าเป็นและfree จะให้รายละเอียดการใช้หน่วยความจำปัจจุบันโดยรวมกับคุณและสามารถใช้ vmstat เพื่อดูว่ามีการอัปเดตบ่อยเพียงใดvmstatfree


อีกเหตุผลหนึ่งหรือคำอธิบายอย่างรอบคอบว่าทำไม ps ไม่ควรถูกพิจารณาว่าให้การใช้งานหน่วยความจำกระบวนการที่ถูกต้อง อ่านสิ่งนี้ได้ที่virtualthreads.blogspot.com/2006/02/…
Nikhil Mulley

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