需关闭mac默认内存压缩机制以消除cpu压缩/解压开销,仅当sysctl显示vm.compressor_mode: 4时才需操作:先禁用sip,再通过nvram注入boot-args="vm_compressor=1",最后验证值为1且vm_stat中“pages occupied by compressor”恒为0。

Mac在终端中关闭系统默认的压缩内存机制,是为了让CPU彻底摆脱压缩/解压页面的持续调度负担,适用于对实时性要求极高的音频低延迟处理、高频量化交易回测或嵌入式开发仿真等场景。
确认当前压缩模式并判断是否需要关闭
打开终端,执行:
sysctl -a vm.compressor_mode
输出结果形如 vm.compressor_mode: 4。若数值为【1】(不压缩+不启用swap)或【2】(压缩关闭+swap启用),则无需后续操作;只有数值为【4】(默认值,压缩启用+swap启用)才需干预。
注意:数值为3表示“不压缩但启用swap”,它不消耗CPU做压缩,但仍有磁盘I/O开销——本方案目标是彻底卸载压缩逻辑,不是仅停swap。
禁用内存压缩需先关闭SIP并写入NVRAM参数
macOS内核强制要求在SIP(系统完整性保护)启用状态下,【vm_compressor_mode无法被运行时修改】,必须通过boot-args在启动前注入参数。
第一步:关机,Intel芯片Mac按住Command + R开机;Apple芯片Mac长按电源键→点选“选项”→点击“继续”进入恢复环境。
第二步:顶部菜单栏 → 实用工具 → 终端。
第三步:输入 csrutil disable 并回车,随后输入 y 确认禁用SIP;执行 reboot 重启。
第四步:重启后再次关机,重新进入恢复环境(步骤同上),在终端中输入:
nvram boot-args="vm_compressor=1"
该命令将压缩引擎完全关闭,同时保留swap功能作为最后防线。若误输为 vm_compressor=0 会触发内核panic,切勿尝试。
验证压缩机制已退出运行
正常启动系统后,打开终端运行:
sysctl -a vm.compressor_mode
返回值必须为 vm.compressor_mode: 1,且无任何报错。
再执行:
vm_stat 5 | grep "Pages active"
观察连续5秒输出中,“Pages occupied by compressor”字段始终为0;若出现非零值,说明仍有内核扩展或第三方驱动在绕过参数强行启用压缩,需排查LaunchDaemon或kext。











