Mac OS X에서 최대 스왑 공간을 늘리는 방법은 무엇입니까?

Mac OS X에서 최대 스왑 공간을 늘리는 방법은 무엇입니까?

맥 OS의 경우 다음 콘솔 로그 항목은 인스턴스의 예입니다.

2015년 9월 25일 오후 7:08:40.000 커널[0]: 낮은 스왑: pid 6202 종료(huffgrp)

64GB의 메모리를 할당하고 사용하면 계산이 제대로 작동하고 적당한 시간이 걸립니다. 내 Mac에는 32GB RAM과 멋진 하드 드라이브 공간이 있습니다. 또한 8GB RAM이 있는 다른 Mac에서도 이 작업을 시도했습니다. 해당 Mac에서는 64GB 컴퓨팅도 제대로 실행되어 더 오래 걸렸지만 128GB 컴퓨팅은 같은 방식으로 커널에 의해 중단되었습니다.

그런데 malloc()아무리 많은 공간을 요청하더라도 오류가 반환되지 않습니다. 커널은 실제로 너무 많은 메모리를 사용하는 경우에만 프로세스를 종료하여 하드 드라이브에 많은 스왑을 발생시킵니다.

따라서 64GB에서 128GB 사이의 비밀 스왑 공간 제한이 있는 것으로 보입니다.

내 질문은: 더 많은 스왑 공간을 허용하도록 커널을 어떻게 재구성할 수 있습니까? 유망해 보이는 파일을 찾았 /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist지만 그 안에 비밀 번호가 표시되지 않았습니다. 매뉴얼 페이지에는 dynamic_pager스왑 파일의 이름과 위치를 설정하는 것이 전부라고 나와 있습니다. 동일한 매뉴얼 페이지의 이전 버전에는 -S생성된 스왑 파일의 크기를 설정하는 옵션이 문서화되어 있습니다. 160GB 스왑 파일을 요청했지만 소용이 없었습니다. 각 스왑 파일은 여전히 ​​1GB이고 프로세스는 여전히 커널에 의해 종료됩니다.

답변1

귀하가 요청한 답변은 아니지만 적절한 크기의 파일을 직접 만들어 프로세스에 매핑한 다음 이 주소 공간에서 계산을 실행하면 스왑 파일과 동일한 효과가 있어야 하며 소유가 보장됩니다. 사용 가능한 RAM/스왑을 두고 다른 프로세스와 경쟁하는 대신 공간을 확보합니다.

데이터를 얼마나 자주 덮어쓰는지에 따라 속도가 느려질 수도 있지만 이식성은 더 높아야 합니다.

답변2

내 Mac 정보가 오래되었으며 이 작업을 수행하는 커널 마법이 더 이상 없을 수 있습니다. 따라서 이 절차에서는 매우 간단하게 폴더나 파티션을 스왑 파티션으로 마운트할 수 있는 Linux를 사용하는 것이 좋습니다.

동적 스왑 폴더 사용의 불확실성을 제거합니다. 물리적 스왑 파티션을 생성합니다(리눅스에서는 16진수 코드인 스왑용 디스크 테이블 유형 코드를 사용하여 포맷되지 않은 빈 파티션 0x82). 그런 다음:

  1. /etc/rc 파일을 편집하고 스왑 섹션을 찾아 모두 주석 처리합니다. 행 추가mount -vat swap
    • /etc/fstab에 모든 스왑 파티션을 마운트했음을 나타냅니다.
  2. 달리기pdisk /dev/disk? -dump
    • "?"는 하드 드라이브의 디스크 번호에 기록된 스왑 파티션 옆의 숫자입니다.
  3. /etc/fstab을 편집하거나 생성하세요(존재하지 않을 수도 있음). 다음과 같은 줄을 추가하세요./dev/disk?s?? none swap sw 0 0
    • ? 당신의 디스크입니다.
    • ??는 스왑 파티션의 번호입니다.
  4. 재시작.

관련 정보