ค่า vm_compressor_mode (vm.compressor_mode) สำหรับหน่วยความจำที่ถูกบีบอัดที่เปิดใช้งานใน OS X


16

พื้นหลัง

ในผู้ใช้ขั้นสูงพร้อมคำตอบที่ยอมรับได้ :

นอกจากนี้ใน Super User:

- และจากคำตอบแรกมีเราเข้าใจว่าค่าของอาร์กิวเมนต์บูต vm_compressorไม่ตรงกับค่าของตัวแปร sysctl vm.compressor_mode

ใน Apple open source สำหรับ OS X 10.9, Mavericks; ใน xnu-2422.1.72:

ใน vm_compressor.c:

/*
 * vm_compressor_mode has a heirarchy of control to set its value.
 * boot-args are checked first, then device-tree, and finally
 * the default value that is defined below. See vm_fault_init() for
 * the boot-arg & device-tree code.
 */

ฉันพบ MacBookPro5,2 ที่มีหน่วยความจำ 8 GB:

sh-3.2$ sysctl -a vm.compressor_mode
vm.compressor_mode: 4

ใกล้กับ vm_pageout.h:

extern int vm_compressor_mode;
extern int vm_compressor_thread_count;

#define VM_PAGER_DEFAULT                0x1 /* Use default pager. */
#define VM_PAGER_COMPRESSOR_NO_SWAP         0x2 /* In-core compressor only. */
#define VM_PAGER_COMPRESSOR_WITH_SWAP           0x4 /* In-core compressor + swap backend. */
#define VM_PAGER_FREEZER_DEFAULT            0x8 /* Freezer backed by default pager.*/
#define VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP     0x10    /* Freezer backed by in-core compressor only i.e. frozen data remain in-core compressed.*/
#define VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP       0x20    /* Freezer backed by in-core compressor with swap support too.*/

#define VM_PAGER_MAX_MODES              6   /* Total number of vm compressor modes supported */

#define DEFAULT_PAGER_IS_ACTIVE     ((vm_compressor_mode & VM_PAGER_DEFAULT) == VM_PAGER_DEFAULT)

#define COMPRESSED_PAGER_IS_ACTIVE  (vm_compressor_mode & (VM_PAGER_COMPRESSOR_NO_SWAP | VM_PAGER_COMPRESSOR_WITH_SWAP))

#define DEFAULT_FREEZER_IS_ACTIVE   ((vm_compressor_mode & VM_PAGER_FREEZER_DEFAULT) == VM_PAGER_FREEZER_DEFAULT)

#define DEFAULT_FREEZER_COMPRESSED_PAGER_IS_ACTIVE      (vm_compressor_mode & (VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP | VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP))

คำถาม

เป็นไปได้หรือไม่ที่จะมีโหมดเปิดใช้งานนอกเหนือจาก 4 สำหรับหน่วยความจำที่บีบอัด ?

ถ้าเป็นเช่นนั้นเราสามารถหาคำอธิบายภาษาอังกฤษแบบธรรมดาเกี่ยวกับโหมดได้หรือไม่?


ไฟล์ส่วนหัวที่คุณพูดดูเหมือนว่าจะระบุว่าทั้ง 2 โหมดและ 4 หมายความว่าเปิดใช้งานเพจเจอร์ที่ถูกบีบอัด ดังนั้นฉันรู้สึกงุนงงกับคำถามของคุณ - คุณหมายถึงว่าคุณได้ลองใช้โหมด 2 จริงหรือไม่และไม่ได้เปิดใช้งานหน่วยความจำที่บีบอัด
jksoegaard

คำตอบ:


4

ฉันไม่แน่ใจเกี่ยวกับตัวเลือก FREEZER อย่างสมบูรณ์นอกเหนือจากตัวเลือกหนึ่ง FREEZER_COMPRESSOR ใช้ swap (ใช้พื้นที่ว่างบนดิสก์) เมื่อ RAM ต่ำหรือใช้งานในขณะที่ตัวอื่นไม่ได้ใช้

สิ่งที่ฉันคิดคือตัวเลือก FREEZER นั้นใช้สำหรับจัดการหน่วยความจำสำหรับกระบวนการแช่แข็ง อาจจะเป็นสิ่งทดลองใช้เพื่อใช้ร่วมกับ App Nap? ฉันคิดว่านี่เป็นสิ่งที่พวกเขาทดสอบกับ iOS เมื่อไม่กี่ปีก่อน

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

ตัวเลือกที่ 2 ใช้หน่วยความจำที่บีบอัดโดยไม่มีการสลับ (ไม่เขียนลงดิสก์เมื่อ RAM เหลือน้อยหรือใช้งานได้)

ตัวเลือก 4 ใช้ทั้งการบีบอัดและการสลับ

ตัวเลือก 8 ใช้สิ่งที่ FREEZER สนับสนุนโดยการใช้งานตัวเลือก 1


2
มีเอกสารจริงเกี่ยวกับสิ่งที่ FREEZER ทำหรือไม่
vy32

เป็นที่น่าสนใจว่าการแก้ไขapple.stackexchange.com/questions/175572พูดว่า Apple ตอบกลับเรดาร์หรือข้อเสนอแนะหรือกรณีสนับสนุนและตัวเลือกดั้งเดิม 1 เป็นที่ทราบกันว่าล้มเหลวในบางกรณีและไม่ได้เป็นโหมดที่รองรับอีกต่อไป
bmike

0

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

ตอบคำถามคุณสามารถมี:

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