ไบต์ส่วนตัว VS การทำงานที่ตั้งไว้ใน Process Explorer


39

ฉันรู้ว่าชุดการทำงานคือจำนวนหน่วยความจำที่แท้จริงที่กระบวนการใช้และไบต์ส่วนตัวนั้นเป็นจำนวนที่กำหนดไว้เผื่อในกรณีที่ต้องการมากกว่านี้

ดังนั้นฉันจะเพิ่มทั้งสองเพื่อหาจำนวนหน่วยความจำที่ถูกพรากไปจากกระบวนการอื่น ๆ ในระบบ?

คำตอบ:


52

ฉันกลัวว่ามันไม่ง่ายอย่างนั้น ไบต์ส่วนตัวโดยเฉพาะไม่มีประโยชน์อย่างยิ่งสำหรับการตอบคำถามที่คุณโพสต์

สิ่งแรกที่ควรคำนึงถึงก็คือหน้าหน่วยความจำอาจมีอยู่ในหน่วยความจำหลักหรือในที่จัดเก็บข้อมูลภายนอก (ปัจจุบันมี "เพจจิ้งดิสก์" หรือ "สลับ") ประการที่สองคือกระบวนการจะมีเพจส่วนตัวของหน่วยความจำใน footprint ของมัน แต่ยังจะใช้วัตถุในเพจที่ใช้ร่วมกันว่ากระบวนการอื่นกำลังใช้ในเวลาเดียวกัน

Working setเป็นขนาดของหน้าที่เป็นของกระบวนการซึ่งปัจจุบันถูกเก็บไว้ในหน่วยความจำหลัก เมื่อเพจของหน่วยความจำที่ใช้โดยกระบวนการถูกย้ายไปยังไฟล์หน้ามันจะถูกลบออกจากเมทริกชุดการทำงานและเมื่อมันถูกเรียกกลับเข้าไปในหน่วยความจำหลักมันจะถูกเพิ่มเข้าไปอีกครั้ง

ชุดการทำงานไม่ได้อ้างถึงหน่วยความจำที่กระบวนการของคุณเป็นเจ้าของเท่านั้น กระบวนการใช้วัตถุหน่วยความจำที่ใช้ร่วมกันจำนวนมากและขนาดของวัตถุเหล่านี้สะท้อนให้เห็นในสถิติ น่าเสียดายที่เมื่อสองกระบวนการแชร์วัตถุ 1MB กระบวนการทั้งสองแสดงการจัดสรร 1MB ในชุดการทำงานดังนั้นหากคุณรวมชุดการทำงานทั้งหมดแล้ววัตถุ 1MB จะถูกบันทึกสองครั้งดังนั้นการสะสมขนาดชุดการทำงานทั้งหมดของคุณอาจ ในกรณีที่รุนแรงดูเหมือนว่าเกินขนาดของ ram ที่มีอยู่ ดูเพิ่มเติมได้ที่นี่: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/

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

ไบต์ส่วนตัวอย่างไรก็ตามอ้างถึงกระบวนการหน่วยความจำส่วนตัวเท่านั้นดังนั้นค่านี้อาจไม่สะท้อนทรัพยากรที่ใช้ร่วมกัน (แม้ว่าทรัพยากรปัจจุบันจะถูกใช้โดยกระบวนการนี้เท่านั้น)

"Working set Private" ("WS Private ไบต์" หรือ "Private WS" ในตัวสำรวจกระบวนการขึ้นอยู่กับรุ่น) น่าจะเป็นเมตริกที่ดีที่สุดสำหรับการใช้งานของคุณ มันไม่ได้เกี่ยวข้องกับไฟล์หน้าดังนั้นคุณจะได้รับความถูกต้องของกระบวนการที่ส่งผลกระทบต่อหน่วยความจำทางกายภาพของคุณและมันจะไม่นับวัตถุที่แชร์เป็นสองเท่า วัตถุที่ใช้ร่วมกันจะถูกนับหนึ่งครั้ง (สำหรับกระบวนการที่สร้างขึ้นเท่านั้น) แต่นั่นก็หมายความว่าจากมุมมองกระบวนการเดียวคุณไม่ได้บันทึกว่ากระบวนการของคุณใช้วัตถุที่ใช้ร่วมกันที่สร้างขึ้นโดยกระบวนการอื่นดังนั้นกระบวนการของคุณอาจใช้ RAM มากกว่า เครื่องหรือในสถานการณ์ที่จำเป็นต้องสร้างวัตถุที่ใช้ร่วมกันแทนการใช้อินสแตนซ์กระบวนการอื่นของมัน ตัวจัดการงาน Windows ใช้ชุดการทำงานส่วนตัวเป็นตัวชี้วัดการใช้หน่วยความจำ

หวังว่าจะช่วย


1
ดังนั้นฉันจะถูกต้องหรือไม่ในการบอกว่า "Private Bytes" คือจำนวนหน่วยความจำที่กระบวนการร้องขอและ "Working Set" คือ Private Bytes บวกกับหน่วยความจำแบบแบ่งใช้เพิ่มเติมเล็กน้อยที่กระบวนการอื่นสามารถใช้ได้ และ "ชุดการทำงานส่วนตัว" คือจำนวนหน่วยความจำส่วนตัวในปัจจุบันในฟิสิคัลแรมซึ่งเป็นการนำเสนอที่แม่นยำที่สุดของจำนวนหน่วยความจำที่ใช้งานจริง
นักเลง

4
ใช่สวยมาก หากคุณกังวลเกี่ยวกับชุดทำงานส่วนตัว ram ฟรีเป็นวิธีที่จะไป หากคุณกังวลเกี่ยวกับไฟล์หน้าหรือการมอบหมายแบบเต็ม (ram + หน่วยความจำเสมือน) ไบต์ส่วนตัวเป็นเมตริกที่ดี
Frank Thomas

"Private bytes" เป็นพื้นที่แอดเดรสเสมือนส่วนตัวที่กำหนดไว้ของกระบวนการ บางส่วนอาจอยู่ในไฟล์เพจบางไฟล์ในแรมบางแห่งอาจอยู่ในบางที่อาจเป็นส่วนใหญ่อาจไม่มีการจัดเก็บข้อมูลจริง (แต่อย่างใด) มันเป็นการสนับสนุนกระบวนการของระบบโดยรวมของ "ชุดทำงานส่วนตัว" เป็นชุดย่อยของ "ไพรเวตไบต์" ที่อยู่ใน RAM หมายเหตุ: คุณจะไม่พบ "private bytes" หรืออะไรทำนองนั้นในการแสดงผลของ RAMmap เพราะ RAMmap เกี่ยวข้องเฉพาะกับหน่วยความจำกายภาพ (RAM) ไม่ใช่เสมือน
เจมี่ Hanrahan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.