ฉันรู้ว่าชุดการทำงานคือจำนวนหน่วยความจำที่แท้จริงที่กระบวนการใช้และไบต์ส่วนตัวนั้นเป็นจำนวนที่กำหนดไว้เผื่อในกรณีที่ต้องการมากกว่านี้
ดังนั้นฉันจะเพิ่มทั้งสองเพื่อหาจำนวนหน่วยความจำที่ถูกพรากไปจากกระบวนการอื่น ๆ ในระบบ?
ฉันรู้ว่าชุดการทำงานคือจำนวนหน่วยความจำที่แท้จริงที่กระบวนการใช้และไบต์ส่วนตัวนั้นเป็นจำนวนที่กำหนดไว้เผื่อในกรณีที่ต้องการมากกว่านี้
ดังนั้นฉันจะเพิ่มทั้งสองเพื่อหาจำนวนหน่วยความจำที่ถูกพรากไปจากกระบวนการอื่น ๆ ในระบบ?
คำตอบ:
ฉันกลัวว่ามันไม่ง่ายอย่างนั้น ไบต์ส่วนตัวโดยเฉพาะไม่มีประโยชน์อย่างยิ่งสำหรับการตอบคำถามที่คุณโพสต์
สิ่งแรกที่ควรคำนึงถึงก็คือหน้าหน่วยความจำอาจมีอยู่ในหน่วยความจำหลักหรือในที่จัดเก็บข้อมูลภายนอก (ปัจจุบันมี "เพจจิ้งดิสก์" หรือ "สลับ") ประการที่สองคือกระบวนการจะมีเพจส่วนตัวของหน่วยความจำใน footprint ของมัน แต่ยังจะใช้วัตถุในเพจที่ใช้ร่วมกันว่ากระบวนการอื่นกำลังใช้ในเวลาเดียวกัน
Working setเป็นขนาดของหน้าที่เป็นของกระบวนการซึ่งปัจจุบันถูกเก็บไว้ในหน่วยความจำหลัก เมื่อเพจของหน่วยความจำที่ใช้โดยกระบวนการถูกย้ายไปยังไฟล์หน้ามันจะถูกลบออกจากเมทริกชุดการทำงานและเมื่อมันถูกเรียกกลับเข้าไปในหน่วยความจำหลักมันจะถูกเพิ่มเข้าไปอีกครั้ง
ชุดการทำงานไม่ได้อ้างถึงหน่วยความจำที่กระบวนการของคุณเป็นเจ้าของเท่านั้น กระบวนการใช้วัตถุหน่วยความจำที่ใช้ร่วมกันจำนวนมากและขนาดของวัตถุเหล่านี้สะท้อนให้เห็นในสถิติ น่าเสียดายที่เมื่อสองกระบวนการแชร์วัตถุ 1MB กระบวนการทั้งสองแสดงการจัดสรร 1MB ในชุดการทำงานดังนั้นหากคุณรวมชุดการทำงานทั้งหมดแล้ววัตถุ 1MB จะถูกบันทึกสองครั้งดังนั้นการสะสมขนาดชุดการทำงานทั้งหมดของคุณอาจ ในกรณีที่รุนแรงดูเหมือนว่าเกินขนาดของ ram ที่มีอยู่ ดูเพิ่มเติมได้ที่นี่: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/
ไบต์ส่วนตัวหมายถึงจำนวนพื้นที่หน้าไฟล์ที่จัดสรรให้กับกระบวนการ (ไม่จำเป็นต้องใช้) ในกรณีที่การปล่อยหน่วยความจำส่วนตัวของกระบวนการถูกทำเพจเอาต์ออกเพื่อสลับอย่างสมบูรณ์ ส่วนใหญ่แล้วกระบวนการไม่ได้อยู่ในรูปแบบไฟล์ของหน้าทั้งหมด (หรือทั้งหมด) ดังนั้นจึงเป็นสาเหตุที่ไบต์ส่วนตัวปรากฏว่ามี "ห้อง" สำหรับการจัดสรรเพิ่มเติม มันไม่ได้เป็นอย่างนั้น
ไบต์ส่วนตัวอย่างไรก็ตามอ้างถึงกระบวนการหน่วยความจำส่วนตัวเท่านั้นดังนั้นค่านี้อาจไม่สะท้อนทรัพยากรที่ใช้ร่วมกัน (แม้ว่าทรัพยากรปัจจุบันจะถูกใช้โดยกระบวนการนี้เท่านั้น)
"Working set Private" ("WS Private ไบต์" หรือ "Private WS" ในตัวสำรวจกระบวนการขึ้นอยู่กับรุ่น) น่าจะเป็นเมตริกที่ดีที่สุดสำหรับการใช้งานของคุณ มันไม่ได้เกี่ยวข้องกับไฟล์หน้าดังนั้นคุณจะได้รับความถูกต้องของกระบวนการที่ส่งผลกระทบต่อหน่วยความจำทางกายภาพของคุณและมันจะไม่นับวัตถุที่แชร์เป็นสองเท่า วัตถุที่ใช้ร่วมกันจะถูกนับหนึ่งครั้ง (สำหรับกระบวนการที่สร้างขึ้นเท่านั้น) แต่นั่นก็หมายความว่าจากมุมมองกระบวนการเดียวคุณไม่ได้บันทึกว่ากระบวนการของคุณใช้วัตถุที่ใช้ร่วมกันที่สร้างขึ้นโดยกระบวนการอื่นดังนั้นกระบวนการของคุณอาจใช้ RAM มากกว่า เครื่องหรือในสถานการณ์ที่จำเป็นต้องสร้างวัตถุที่ใช้ร่วมกันแทนการใช้อินสแตนซ์กระบวนการอื่นของมัน ตัวจัดการงาน Windows ใช้ชุดการทำงานส่วนตัวเป็นตัวชี้วัดการใช้หน่วยความจำ
หวังว่าจะช่วย