หน่วยความจำจริงเสมือนแชร์และส่วนตัวต่างกันอย่างไร


63

คอลัมน์ต่าง ๆ ในการตรวจสอบกิจกรรมมีความสับสนเล็กน้อย


อาจเป็นเรื่องที่น่าสังเกตว่ามีหน่วยความจำประเภทที่ 5 หากคุณคลิก "ตรวจสอบ" ในกระบวนการเปรียบเทียบกับคอลัมน์ในการตรวจสอบกิจกรรม โดยเฉพาะมีหน่วยความจำ "เสมือน" สองประเภท: "ขนาดหน่วยความจำเสมือน" และ "หน่วยความจำส่วนตัวเสมือน" สิ่งหลังคือสิ่งที่แสดงในคอลัมน์ "Virtual Mem" ในการตรวจสอบกิจกรรม
drfrogsplat

คำตอบ:


46

นำมาจากคำตอบของฉันที่Server Fault :

Mac OS X หน่วยความจำศัพท์แสง:

มีสาย : นี่หมายถึงรหัสเคอร์เนลและเช่น หน่วยความจำที่ไม่ควรย้ายออกจาก RAM ยังรู้ว่าเป็นหน่วยความจำถิ่น

แชร์ : หน่วยความจำที่แชร์ระหว่างสองกระบวนการขึ้นไป กระบวนการทั้งสองจะแสดงจำนวนหน่วยความจำนี้ดังนั้นจึงอาจทำให้เข้าใจผิดเล็กน้อยว่ามีการใช้งานหน่วยความจำเท่าใด

จริง : นี่คือการใช้หน่วยความจำ "ของจริง" สำหรับแอปพลิเคชันที่รายงานโดย task_info () - จำนวนคร่าวๆของจำนวนหน้าฟิสิคัลที่กระบวนการปัจจุบันมี (rsize)

ส่วนตัว : นี่คือหน่วยความจำที่กระบวนการใช้เพียงอย่างเดียวในกระบวนการของตัวเองที่ใช้ในหน่วยความจำ Resident (RPRVT)

เสมือน : จำนวนพื้นที่ที่อยู่ทั้งหมดในกระบวนการที่แมปกับสิ่งใด - ไม่ว่าจะเป็นพื้นที่ขนาดใหญ่โดยพลการสำหรับตัวแปรหรืออะไรก็ตาม - มันไม่เท่ากับการใช้ VM จริง (VSIZE)

ใช้งานอยู่ : หน่วยความจำในปัจจุบันระบุว่าใช้งานอยู่และใช้ RAM

ไม่ได้ใช้งาน : "หน่วยความจำไม่ได้ใช้งานไม่ได้ถูกใช้งานอีกต่อไปและถูกแคชไว้ในดิสก์มันจะยังคงอยู่ใน RAM จนกว่าแอปพลิเคชันอื่นจะต้องการพื้นที่การทิ้งข้อมูลนี้ไว้ใน RAM จะเป็นประโยชน์ต่อคุณ เพื่อมันภายหลัง " - วิธีใช้ Mac OS X

ฟรี : จำนวน RAM ที่ใช้งานได้จริงโดยไม่มีข้อมูลใด ๆ


เอกสารที่ดีที่สุดที่ฉันรู้ (และสามารถค้นพบในการวิจัยติดตาม) คือบทความMemory Management ของ Apple ในเว็บไซต์นักพัฒนาซอฟต์แวร์ของพวกเขา

แหล่งข้อมูลที่คุ้มค่าอื่น ๆ : รายการส่งเมลของดาร์วิน: [ 1 ], [ 2 ] และบทความเก่าบนMacOSX คำแนะนำ นอกจากนี้ Mike Ash ได้โพสต์แนะนำคนธรรมดาที่ดีในบล็อกของเขา


5
จากการอ่านเอกสารการจัดการหน่วยความจำของ Apple แอปที่ไม่ได้ใช้งานจะไม่ถูกแคชไว้ในดิสก์ คุณสามารถสาธิตสิ่งนี้ได้หากคุณตรวจสอบการใช้งานหน่วยความจำที่ไม่ใช้งาน (ของฉันคือ 747.5 MB ทันที) และ "สลับใช้แล้ว" (ของฉันคือ 0 ไบต์ทันที) ไม่ใช้งานเพียงแค่อ้างถึงหน้าหน่วยความจำที่ยังไม่ได้อ่าน / เขียนโดยกระบวนการใด ๆ
drfrogsplat

1
มันอาจจะคุ้มค่าที่จะอธิบาย "เสมือนจริง" เนื่องจากมีการอ้างอิงถึงหน่วยความจำ "เสมือน" สองรายการในการตรวจสอบกิจกรรม คอลัมน์ "Virtual Mem" หมายถึง " Virtual Private Memory " ในหน้าต่างตรวจสอบกระบวนการจากนั้นมีรายการอื่น ๆ ที่ชื่อว่า " ขนาดหน่วยความจำเสมือน " ในหน้าต่างนั้น (ซึ่งฉันเชื่อว่าเป็นองค์ประกอบที่ใช้ร่วมกันของหน่วยความจำเสมือน) นี่เป็นวันที่ 10.6.4 (ในกรณีที่ Activity Monitor เปลี่ยนคำศัพท์ ... )
drfrogsplat

"หน่วยความจำส่วนตัว" เป็นส่วนหนึ่งของ "หน่วยความจำจริง" หรือไม่?
แฟรงคลินหยู

6

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

คำอธิบายเหล่านี้อาจช่วยได้เช่นกัน ... โดยตรงจากการตรวจสอบกิจกรรม -> ความช่วยเหลือ -> การดูการใช้งานหน่วยความจำระบบ:

นี่คือคำอธิบายของข้อมูลบางส่วนที่แสดงที่ด้านล่างของบานหน้าต่างหน่วยความจำ:

  • มีสาย: หน่วยความจำแบบใช้สายประกอบด้วยข้อมูลที่ต้องอยู่ใน RAM เสมอ
  • ใช้งานอยู่: หน่วยความจำที่ใช้งานอยู่ซึ่งมีข้อมูลที่ใช้งานอยู่
  • ไม่ใช้งาน: หน่วยความจำที่ไม่แอ็คทีฟมีข้อมูลที่ไม่ได้ใช้งานอยู่ การปล่อยข้อมูลนี้ไว้ในหน่วยความจำ RAM เป็นข้อได้เปรียบของคุณหากคุณ (หรือลูกค้าของคอมพิวเตอร์ของคุณ) กลับมาใช้มันในภายหลัง
  • ใช้: หน่วยความจำที่ใช้แล้วกำลังถูกใช้โดยกระบวนการหรือโดยระบบ หน่วยความจำที่ใช้คือผลรวมของหน่วยความจำแบบใช้สายใช้งานและไม่ใช้งาน หากระบบต้องการหน่วยความจำก็จะใช้หน่วยความจำฟรีก่อนที่จะใช้หน่วยความจำ
  • ฟรี: ไม่ได้ใช้หน่วยความจำฟรีและสามารถใช้งานได้ทันที
  • ขนาด VM: หน่วยความจำเสมือนหรือ VM เป็นพื้นที่ว่างในฮาร์ดดิสก์ที่สามารถใช้เป็นหน่วยความจำได้ ขนาด VM คือจำนวนพื้นที่ดิสก์ที่ใช้เป็นหน่วยความจำ Mac OS X สามารถใช้หน่วยความจำมากกว่าจำนวน RAM จริงที่คุณมี ฮาร์ดดิสก์ช้ากว่า RAM มากดังนั้นระบบหน่วยความจำเสมือนจะกระจายข้อมูลโดยอัตโนมัติระหว่างพื้นที่ดิสก์และ RAM เพื่อประสิทธิภาพที่มีประสิทธิภาพ หน้าเว็บ / ลึกหนาบางหน้า: จำนวนข้อมูลกิกะไบต์ Mac OS X ได้ย้ายระหว่าง RAM และพื้นที่ดิสก์

6
สิ่งนี้ไม่ถูกต้อง หน่วยความจำเสมือนไม่ใช่หน่วยความจำที่จัดสรรไว้บนดิสก์ (ที่เรียกว่า swap) หน่วยความจำเสมือนคือพื้นที่จัดสรรที่อยู่ แต่ไม่ได้อยู่ในหน่วยความจำกายภาพ นั่นอาจดูเหมือนสิ่งเดียวกัน แต่มันก็มีความแตกต่างกันเล็กน้อย ในหลายกรณีโปรแกรมจัดสรรหน่วยความจำโดยไม่ต้องสัมผัส ในกรณีดังกล่าวโปรแกรมกำลังใช้หน่วยความจำเสมือนจำนวนมาก เพื่อให้เป็นตัวอย่างที่ชัดเจนปัจจุบันระบบของฉันใช้การแลกเปลี่ยน 512MB แต่มีการจัดสรรหน่วยความจำเสมือน 196GB (ซึ่งเป็นปริมาณปกติสำหรับผู้ใช้ Snow Leopard บน K64)
Louis Gerbarg

2
@Louis ถ้ามีการจัดสรรหน่วยความจำเสมือน แต่ไม่ได้ใช้ประโยชน์จาก RAM หรือฮาร์ดดิสก์แล้วมันอยู่ที่ไหน?
Michael Underwood

4
@Michael: ไม่มีที่ไหนเลย มันเป็นทฤษฎี เพียงเพราะมีการจัดสรรและกำหนดที่อยู่ไม่ได้แปลว่ามีการใช้งานจริง บิตระดับต่ำของระบบปฏิบัติการจะทราบเวลาแมปที่อยู่เหล่านั้นไปยังตำแหน่งทางกายภาพในหน่วยความจำ RAM หรือ swap แต่ไม่จำเป็นต้องผูกพื้นที่นั้นไว้หากแอปพลิเคชันไม่ได้จัดเก็บข้อมูลตามที่อยู่เหล่านั้น ไม่เพียงแค่นั้น แต่คุณจะสังเกตเห็นว่าคอลัมน์สำหรับแต่ละกระบวนการ Virtual Mem นั้นไม่ได้อยู่ใกล้กับการเพิ่มขนาด VM กระบวนการไม่ได้ใช้หน่วยความจำทั้งหมดนั้นจริง ๆ
Robert S Ciaccio

2
มี VM มากมายที่ไม่สามารถทำการสลับได้ ตัวอย่างเช่นหากคุณ mmap ไฟล์ 4GB จะใช้ 4GB ของ VM ในการอ่านมันจะหน้าตรงจากไฟล์และภายใต้ความกดดันมันจะถูกโยนออกมา (ไม่สลับ) ตั้งแต่ไฟล์เดิมสามารถอ่านได้อีกครั้ง VM และการแลกเปลี่ยนเป็นสิ่งที่แตกต่างกันอย่างสมบูรณ์ VM ใช้เพื่อคิดว่าจะแลกเปลี่ยนสิ่งใดบ้าง
Louis Gerbarg

3
โดย VSIZE ฉันหมายถึงสิ่งที่ไม่ได้อยู่ในรายการตรวจสอบกิจกรรมคุณสามารถดูได้ในรายการด้านบนหากคุณต้องการ รายการตรวจสอบกิจกรรมใดในคอลัมน์หน่วยความจำเสมือนคือสิ่งที่โดยทั่วไปเรียกว่า VPRVT ซึ่งเป็นจำนวนที่อยู่เสมือนที่ใช้โดยแอปที่ไม่ได้แชร์กับแอปอื่น ๆ
Louis Gerbarg

4

Apple อัปเดตการตรวจสอบกิจกรรมใน OSX 10.9 (Mavericks) พวกเขามีบทความที่ดีเกี่ยวกับสิ่งที่ทุกอย่างที่นี่หมายถึงhttp://support.apple.com/kb/HT5890 สรุป...

ป้อนคำอธิบายรูปภาพที่นี่

  • หน่วยความจำกายภาพ:จำนวน RAM ที่ติดตั้ง
  • หน่วยความจำที่ใช้:จำนวน RAM ที่ใช้และไม่สามารถใช้งานได้ทันทีสำหรับแอปอื่น
  • หน่วยความจำเสมือน:จำนวนการแมปหน่วยความจำที่แอพขอ นี่ไม่ใช่การบริโภคทรัพยากร RAM จริงและขนาดจะถูกกำหนดโดยผู้เขียนแอป
  • Swap Used:พื้นที่บนไดรฟ์ของคุณถูกใช้เพื่อสลับไฟล์ที่ไม่ได้ใช้ไปยังและจาก RAM เป็นเรื่องปกติที่จะเห็นกิจกรรมบางอย่างและไม่ใช่ข้อบ่งชี้ว่าคุณมีทรัพยากร RAM หมด การเห็นความดันหน่วยความจำในสถานะสีแดงจะบ่งบอกว่าทรัพยากร RAM หมดลง
  • แอปหน่วยความจำ:จำนวนพื้นที่ที่แอพใช้
  • Wired Memory:หน่วยความจำที่ไม่สามารถแคชกับดิสก์ได้ดังนั้นจึงต้องอยู่ใน RAM แอปอื่นไม่สามารถยืมหน่วยความจำนี้ได้
  • บีบอัด:จำนวนหน่วยความจำใน RAM ที่ถูกบีบอัดทำให้มีทรัพยากร RAM มากขึ้นสำหรับแอปอื่น ๆ
  • File Cache:พื้นที่ใน RAM ที่ทำเครื่องหมายว่าพร้อมใช้งานสำหรับแอปที่ใช้ซึ่งมีไฟล์ที่ใช้ล่าสุด

กราฟความดันหน่วยความจำ

การรวมกันของสถิติหน่วยความจำแบบใช้สายใช้งานไม่ใช้งานและใช้แล้วในรุ่นก่อนหน้าของการตรวจสอบกิจกรรมได้ถูกแทนที่ใน Mavericks ด้วยกราฟ "Memory Pressure" ที่อ่านง่าย

แรงดันหน่วยความจำถูกระบุด้วยสี:

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