共计 974 个字符,预计需要花费 3 分钟才能阅读完成。
Swap 是将磁盘虚拟为内存来用的,所以速度肯定比不上扎扎实实的内存的。我是 16G 内存,对于我平时使用完全是足够的,但是默认不关机的情况下,浏览器标签页过多就会疯狂使用 swap.
禁用过程
- 如果你的物理内存真的不够,禁用 Swap 可能会导致程序被内核 OOM(Out Of Memory) Kill 掉,甚至导致内核崩溃。
先使用 sysctl -a vm.compressor_mode
来检查现在的内存模式,默认的数字应该是 4
。
- 1 代表不压缩内存且不启用 swap。
- 2 代表压缩内存但不启用 swap。
- 3 代表不压缩内存但启动 swap。
- 4 代表着压缩内存并启用 swap。
注意开启 SIP 后, 禁用的 swap 会恢复,也就是 vm.compressor_mode
依旧为 4
为了安全可以不完全关闭 SIP, 可以选择关闭部分 SIP 的方法来实现.
1、在恢复模式执行
csrutil disable
csrutil enable --without nvram
#查看结果
csrutil status
System Integrity Protection status: unknown (Custom Configuration).
Configuration:
Apple Internal: disabled
Kext Signing: enabled
Filesystem Protections: enabled
Debugging Restrictions: enabled
DTrace Restrictions: enabled
NVRAM Protections: disabled #注意这个需要 disabled
BaseSystem Verification: enabled
Boot-arg Restrictions: disabled #这个也一样
Kernel Integrity Protections: enabled
Authenticated Root Requirement: enabled
重启进入正常模式执行
sudo nvram boot-args="vm_compressor=2 serverperfmode=1"
重启进入正常模式, 检查配置是否生效
sysctl vm.compressor_mode
vm.compressor_mode: 2
#此时显示 SIP 的部分选项为 disable 状态:
csrutil status

使用 htop 命令可以看到 swap 使用为 0 了

正文完
发表至: 运维
2025-03-26