การใช้หน่วยความจำเครื่องเสมือนไม่ปรากฏใน TaskManager


28

มีบางอย่างเกี่ยวกับการจัดการหน่วยความจำ Windows และความสัมพันธ์กับ TaskManager ที่ฉันไม่เข้าใจและฉันหวังว่าจะมีคนสอนฉัน

ถ้าฉันใช้เครื่องเสมือน (ไม่สำคัญว่าจะเป็น Virtual PC 2007, Virtual Server 2005 หรือ VirtualBox เพราะมันทำหน้าที่เหมือนกัน) และนำ TaskManager ขึ้นมาฉันเห็นบนแท็บกระบวนการบางรายการสำหรับ VM แต่ ค่าหน่วยความจำมีขนาดค่อนข้างเล็ก (ประมาณ 30 MB) เห็นได้ชัดว่ามันไม่ได้รวมหน่วยความจำที่ใช้โดย VM เอง ไม่มีคอลัมน์ที่เกี่ยวข้องกับหน่วยความจำต่างๆที่คุณสามารถทำให้ปรากฏให้เห็นว่าทำงานแตกต่างกัน การใช้หน่วยความจำในแท็บประสิทธิภาพดูเหมือนจะถูกต้องสำหรับการใช้หน่วยความจำทั้งหมดรวมถึง VM

ดังนั้นคำถามของฉันคือทำไมการใช้งานหน่วยความจำของ VM (ซึ่งจะเป็น 100 MB) จะไม่ปรากฏในแท็บกระบวนการ

คำตอบ:


30

VirtualPC, HyperV และผลิตภัณฑ์ที่คล้ายคลึงกันอาจใช้บางสิ่งที่เรียกว่าหน่วยความจำที่ล็อคไดร์เวอร์ซึ่งไม่สามารถมองเห็นได้ใน Process Explorer, Task Manager ฯลฯ RAMMapจะแสดงหน่วยความจำที่ถูกล็อคโดยคนขับที่ใช้โดยกระบวนการ


1
สำหรับบันทึก RAMMap นั้นเป็น Vista หรือสูงกว่าเท่านั้น
Tim Abell

1
RAMMap ไม่ได้แสดงหน่วยความจำที่ถูกล็อคสำหรับกระบวนการ แต่มันแสดงหน่วยความจำที่ถูกล็อคทั้งหมด
NeDark

เพียงเพื่อชี้ให้คนอื่นเขาไม่ได้บอกว่ากระบวนการล็อคหน่วยความจำ เขาบอกว่าคนขับล็อคหน่วยความจำ มันเป็นวิธีการทำงานของหน่วยความจำแบบไดนามิก หากคุณไม่ชอบหรือคิดว่ามันยุ่งกับแอพของคุณคุณก็สามารถกำหนดค่า VM สำหรับหน่วยความจำแบบคงที่แทนที่จะเป็นแบบไดนามิก ผมเคยเห็นบางปพลิเคชัน Java มีปัญหาเมื่อใช้หน่วยความจำแบบไดนามิกใน VM, การตั้งค่าให้พวกเขาคงได้รับการแก้ไขความผิดพลาด
John C

กระบวนการใดจัดสรรหน่วยความจำนั้นจริง ฉันได้ลองVMMap ของ SysInternalsและเมื่อคุณเลือกVBoxHeadless.exeกระบวนการที่ถูกต้อง(เป็นใบไม้บนกิ่งต้นไม้กระบวนการเช่นไม่มีลูกอื่น ๆ คุณสามารถใช้ตัวอย่างเช่น Process Explorer เพื่อค้นหา) หน่วยความจำ "ที่หายไป" ปรากฏภายใต้ทั้งไบต์ส่วนตัวและชุดการทำงานของกระบวนการนั้น (แม้ว่า Process Explorer จะแสดงค่าน้อยกว่าทั้งสองค่า) ดังนั้นฉันบิตสับสนว่าทำไมพวกเขากำลังแสดงค่าที่แตกต่าง แต่VMMap ดูเหมือนจะแสดงจำนวนจริง
Dawid Ferenczy Rogožan

6

ระบบเสมือนจริงใด ๆ ที่โฮสต์อยู่เช่นเดียวกับที่คุณระบุไว้จะมีไดรเวอร์อุปกรณ์ซึ่งทำงานภายในเคอร์เนลของโฮสต์ระบบปฏิบัติการ นี่เป็นสิ่งจำเป็นเนื่องจากโปรแกรมโหมดผู้ใช้ไม่สามารถออกคำแนะนำที่จำเป็นในการสร้างเครื่องเสมือนได้

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


กระบวนการใดจัดสรรหน่วยความจำนั้นจริง ฉันได้ลองVMMap ของ SysInternalsและเมื่อคุณเลือกVBoxHeadless.exeกระบวนการที่ถูกต้อง(เป็นใบไม้บนกิ่งต้นไม้กระบวนการเช่นไม่มีลูกอื่น ๆ คุณสามารถใช้ตัวอย่างเช่น Process Explorer เพื่อค้นหา) หน่วยความจำ "ที่หายไป" ปรากฏภายใต้ทั้งไบต์ส่วนตัวและชุดการทำงานของกระบวนการนั้น (แม้ว่า Process Explorer จะแสดงค่าน้อยกว่าทั้งสองค่า) ดังนั้นฉันบิตสับสนว่าทำไมพวกเขากำลังแสดงค่าที่แตกต่าง แต่VMMap ดูเหมือนจะแสดงจำนวนจริง
Dawid Ferenczy Rogožan

5

ในการดูจำนวนหน่วยความจำที่ใช้งานโดย VM คุณต้องตรวจสอบให้แน่ใจว่าคุณมีคอลัมน์ชุดการทำงานที่ปรากฏในตัวจัดการงานของคุณ บ่อยครั้งที่จะเห็นเฉพาะชุดส่วนตัว

วิธีเปิดใช้งานคอลัมน์นี้:

1) เริ่มตัวจัดการงาน

2) ไปที่แท็บกระบวนการ

3) ดู> เลือกคอลัมน์

4) ตรวจสอบว่า "หน่วยความจำ - ชุดการทำงาน" ถูกเลือก

ตัวอย่างเช่นชุดส่วนตัวของ VM ที่ฉันใช้ในขณะนี้คือ 43mb ในขณะที่ชุดการทำงานคือ 2.3Gb


1
แอปพลิเคชันหน่วยความจำเต็มจำนวนเท่าใดที่ใช้? Working set + Private set หรือแค่ Working set?
zendar

2
อาจแตกต่างกันไปใน Windows รุ่นต่าง ๆ แต่ภายใต้ Windows 7 นั่นไม่ใช่สิ่งที่ฉันเห็น หมายเลข "Working Set" มีขนาดใหญ่กว่าหมายเลข "Private Working Set" แต่ไม่เพียงพอที่จะอธิบายถึงหน่วยความจำของ VM ฉันได้ลองใช้คอลัมน์ที่เกี่ยวข้องกับหน่วยความจำทั้งหมดแล้วและไม่มีเลย นี่คือกับ Windows Virtual PC และ VirtualBox Windows รุ่นใดและโฮสต์ VM ใดที่คุณใช้อยู่
Scott Bussinger

น่าเสียดายที่ไม่มีหมายเลขเดียวที่บ่งชี้ว่า "หน่วยความจำเท่าไหร่" ที่ใช้ในกระบวนการเนื่องจากคุณประสบปัญหาแทรกซ้อนเช่นหน่วยความจำที่แชร์หน่วยความจำที่แมปไฟล์หน่วยความจำที่เพจเอาต์และอื่น ๆ นี่คือคำอธิบายที่ดีของแนวคิดบางประการ: stackoverflow.com/questions/1984186/…
tylerl

ฉันไม่คิดว่าWorking Setจะบอกอะไรคุณได้บ้างในกรณีนี้ ภายใน VM ก็รายงานว่าจะใช้ประมาณ 6 GB หน่วยความจำในขณะที่กระบวนการของ VirtualBox ไม่บริโภคมากกว่า 100 ล้านบาทของพวกเขาชุดทำงาน
Dawid Ferenczy Rogožan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.