ความดันหน่วยความจำไม่ใช่มาตรวัดเปอร์เซ็นต์ความจำที่ง่ายและดูเหมือนว่าจะเป็นกราฟ 0 ถึง 100% sysctl
ค่าของvm.memory_pressure
การคำนวณในส่วนที่เกี่ยวกับเป้าหมายการคำนวณที่ติดตามอัตราส่วนระหว่างหน้าหน่วยความจำฟรีและไม่ได้ใช้งานไปยังหน้าแบบใช้สายและการใช้งาน ตัวนับสัมบูรณ์จะถูกดูโดยใช้vm_stat
เครื่องมือบรรทัดคำสั่งเพื่อตรวจสอบการจัดสรรรายละเอียดของหน่วยความจำเสมือน Jonathan Levin มีเอกสารที่ยอดเยี่ยมที่http://newosxbook.com/articles/MemoryPressure.htmlซึ่งครอบคลุมทั้งหน่วยความจำเสมือน macOS และ iOS และวิธีคำนวณความดันหน่วยความจำรวมถึงการดำเนินการเมื่อดัชนีความดันสูง
หน่วยความจำเสมือนที่เกี่ยวข้อง (vm) ที่ฟีดการคำนวณvm.memory_pressure
คือ:
vm.page_free_count
- จำนวนหน้าฟรีที่แน่นอน
vm.vm_page_free_target
- เป้าหมายหรือเป้าหมายที่คำนวณได้สำหรับสถานการณ์ "ปราศจากความกดดัน"
vm.page_free_wanted
- สิ่งที่ระบบ vm ต้องการให้ฟรีเพื่อบรรเทาดัชนีความดันที่คำนวณได้ในปัจจุบัน
ดังนั้น - หากคุณกำลังติดตามความดันหน่วยความจำของคุณด้วย Activity Monitor (หรือการตรวจสอบค่า sysctl โดยทางโปรแกรมหรือที่เชลล์บรรทัดคำสั่ง) คุณควรจะดูค่าทั้งสี่นี้:
sysctl -a vm | egrep "page_free|pressure"
มีคำสั่งใหม่ที่memory_pressure
นำมาใช้กับ Mavericks และเมื่อฉันเรียกใช้เพื่อทำให้ระบบย่อยหน่วยความจำเข้าสู่สถานะเตือน - คุณสามารถเห็นความดันหน่วยความจำเพิ่มขึ้นเป็นช่วงสีเหลือง
เครื่องมือจัดสรรประมาณ 4 GB หน่วยความจำในการเครื่องมือเป็นกราฟความดันที่เพิ่มขึ้นอย่างต่อเนื่องเพื่อให้รัฐนี้ที่เห็นได้ชัดในระดับ "เตือน" sudo memory_pressure -l warn
จะแสดงเป็นกราฟ: อย่างที่คุณเห็นระบบก่อนที่ความดันจะใช้ 5.9 GB และหลังจากนั้นก็ใช้มากถึง 7.99 GB ซึ่งไม่จำเป็นต้องเพิ่มขึ้นเนื่องจากการสลับและการบีบอัด
หลังจากดูวิธีที่vm_stat 15
แสดงให้เห็นว่าผลการเตือนไม่มีการเพจจิ้งที่วัดได้ฉันออกจากเครื่องมือ (Control-C) แล้วรันเครื่องมืออีกครั้งเพื่อทำให้ความดันหน่วยความจำมีความสำคัญ:sudo memory_pressure -l critical
ฉันไม่ปล่อยให้เรื่องนี้นานกว่าสองสามนาทีเนื่องจากการเริ่มต้นเพจจิ้งและเมื่อเครื่องมือบอกว่าฉันมี RAM หน้าเพจขนาด 5 GB ลงดิสก์ฉันไม่ต้องการเติมไดรฟ์และออกจากเครื่องมือ
คุณสามารถสังเกตได้ว่าระบบเพิ่มแรมอย่างรวดเร็วหลังจากที่คำเตือนสิ้นสุดลงและวิธีที่มันบุกเข้ามาในอาณาเขต "สีแดง" เพื่อแสดงให้เห็นว่าระบบหน่วยความจำเสมือนไม่สามารถบีบอัดหน้าพอที่จะหลีกเลี่ยงการสลับไปยังดิสก์ การเดาที่ได้รับการศึกษาของฉันคือสีแดงบนความกดดันบ่งชี้ว่าการแลกเปลี่ยนและการจัดสรรเกินอย่างมากและ / หรือเวลาที่หน้าว่างต่ำกว่าจำนวนที่ระบบต้องการ ในทำนองเดียวกันระบบจะกู้คืนอย่างรวดเร็วเมื่อการจัดสรรถูกปล่อยออกมาและความดันจะถูกนำออกจากระบบหน่วยความจำเสมือน