OS X에서 사용 가능한 압축 메모리에 대한 vm_compressor_mode (vm.compressor_mode) 값


16

배경

수퍼 유저에서 허용되는 답변 :

수퍼 유저에서도 :

– 첫 번째 답변에서 우리는 boot 인수 vm_compressor 의 값이 sysctl 변수 의 값과 일치하지 않음 을 이해 합니다vm.compressor_mode .

OS X 10.9 용 Apple 오픈 소스에서 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.
 */

8GB 메모리가있는 MacBookPro5,2에서 다음을 발견했습니다.

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

1
poige

답변:


4

하나의 FREEZER_COMPRESSOR 옵션이 RAM이 부족하거나 소비 될 때 swap (디스크의 여유 공간 사용)을 제외한 FREEZER 옵션에 대해서는 확실하지 않습니다.

FREEZER 옵션은 고정 된 프로세스의 메모리를 관리하기위한 것입니다. 아마도 이것은 App Nap과 함께 사용되는 실험적인 것입니까? 나는 이것이 몇 년 전에 iOS에서 테스트 한 것이라고 생각합니다.

내가 아는 것은 옵션 1이 압축을 사용하지 않으며 우리가 더 친숙한 구식 OS X 메모리 관리라는 것입니다. 메모리 압축과 관련된 문제가있는 경우이 설정을 사용해보십시오.

옵션 2는 스왑이없는 압축 메모리를 사용합니다 (RAM이 부족하거나 소비 될 때 디스크에 쓰기 없음).

옵션 4는 압축과 스왑을 모두 사용합니다.

옵션 8은 옵션 1 구현에 의해 지원되는 FREEZER를 사용합니다.


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.