ปัญหาในการทำความเข้าใจหน่วยความจำที่ไม่ได้ใช้งานใน MacOSX


8

ฉันคิดว่าฉันเข้าใจว่า MacOSX จัดการหน่วยความจำได้อย่างไร แต่เมื่อเร็ว ๆ นี้ฉันรู้สึกสับสนกับประสิทธิภาพของมัน นี่คือสถานการณ์:

  1. ฉันมีระบบ Core i7 ใหม่ล่าสุดพร้อมหน่วยความจำกายภาพ 8GB ที่ใช้ MacOSX 10.6.7 มีแอปพลิเคชั่นไม่กี่ตัวที่ใช้งานหน่วยความจำบางตัวเป็นประจำเช่น Safari, Mail, Xcode, Terminal เป็นต้น
  2. ฉันจำเป็นต้องเรียกใช้กระบวนการ 64 บิตสามชุดในแบบคู่ขนานซึ่งแต่ละกระบวนการใช้หน่วยความจำจริงประมาณ 2000M
  3. แม้ว่าหน่วยความจำแบบใช้สายจะอยู่ต่ำกว่า 1,000M (เช่นฉันมีมากกว่า 7000M สำหรับกระบวนการ) ฉันเห็นกิจกรรมการเพจหนักซึ่งนำไปสู่ประสิทธิภาพที่แย่มากจากกระบวนการที่ใช้หน่วยความจำสามอย่างที่ฉันเปิดตัว
  4. เห็นได้ชัดว่าฉันไม่ได้ใช้งาน RAM ที่ว่างอยู่เนื่องจากหน่วยความจำที่ไม่ได้ใช้งานรายงานอยู่ที่ 2500M และหน่วยความจำที่ใช้งานไม่สูงกว่า 5,000M

ใครสามารถให้เบาะแสแก่ฉันว่าทำไม MacOSX ไม่ปล่อยหน่วยความจำที่ไม่ได้ใช้งานสำหรับกระบวนการที่ต้องการแทนที่จะหันไปใช้การเพจ นอกจากนี้ยังมีวิธีที่เหมาะสมที่จะมีอิทธิพลต่อการจัดการหน่วยความจำโดยระบบหรือไม่


คำตอบ:


5

ฉันได้พบว่าในเครื่องของฉัน Mac OS X นั้นช้าไปนิดหน่อยที่จะจัดการกับสิ่งที่ถูกต้องออกไป

เมื่อใดก็ตามที่ทำสิ่งใดโดยเฉพาะหน่วยความจำที่หิวฉันมักจะออกจากแอปพลิเคชั่นบางอย่างเพื่อช่วยเหลือ Safari เป็นหน่วยความจำขนาดใหญ่ถ้ามีการใช้งานมาระยะหนึ่งและอยู่ด้านบนของรายการแอปพลิเคชันที่จะออก ในกรณีของฉันนี่คือตอนที่ฉันพยายามเรียกใช้ VMWare Fusion โดยไม่มี RAM จริงเพียงพอ

คุณอาจรู้ แต่นี่เป็นลิงค์เชื่อมโยงไปยังเอกสารประกอบของ Apple ซึ่งอธิบายการใช้หน่วยความจำและหน่วยความจำเสมือนใน OS X:

http://support.apple.com/kb/ht1342

http://developer.apple.com/library/mac/#documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html

นี่คือคำอธิบายที่ให้ไว้: รายการที่ไม่ได้ใช้งานประกอบด้วยหน้าที่มีอยู่ในหน่วยความจำกายภาพ แต่ยังไม่ได้รับการเข้าถึงเมื่อเร็ว ๆ นี้ เป็นการยากที่จะได้คำจำกัดความที่แน่นอนของความหมายนี้ แต่ดูเหมือนว่าจะรวมแคชระบบไฟล์รวมถึงหน่วยความจำที่ไม่ได้ใช้งานจริง

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

เป็นไปได้ที่จะกำจัด (บางส่วน) หน่วยความจำที่ไม่ได้ใช้งานโดยใช้คำสั่งpurge อาจต้องมีการติดตั้งโดยการติดตั้งเครื่องมือ CHUD แต่คุณอาจติดตั้งแล้ว ฉันไม่ได้ลองใช้คำสั่ง purge ดังนั้น YMMV ...

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


ขอบคุณ! purgeคำสั่งเป็นสิ่งที่ผมกำลังมองหา ฉันพบบทความสนับสนุนใน KB ของ Apple แต่พวกเขาไม่มีประโยชน์อย่างยิ่ง
Ventzi Zhechev

1

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

purgeมีประโยชน์สำหรับนักพัฒนาในการจำลองสภาพเริ่มต้นของแอปพลิเคชัน - เช่นเพื่อดูว่าต้องใช้เวลานานเท่าใดในการทำให้แอปพลิเคชันทำงานในครั้งแรกหลังจากบูตหรือหายไปนาน สำหรับผู้ใช้ทั่วไปpurgeไม่มีประโยชน์มาก (และจะทำให้ประสิทธิภาพในการทำงานลดลงชั่วคราว)

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