XiaoCai 's Blog

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »

禁用 MacOS 的 Swap 分区

为什么要这样干?

直接看机器配置吧

就在写下这篇文章的当天,我的电脑已经连续一个月没关机了(忘记留 uptime 截图了),在当时我的内存占用大概是这样的。

因为当时直接想着加速电脑了,直接 sudo kill 1 了,忘记留截图了。

图源网络,侵删。

众所周知,Swap 是将磁盘虚拟为内存来用的,所以速度肯定比不上扎扎实实的内存的。这样一来,不管我操作啥,电脑都感觉卡卡的,就像我用了下我家 15 年前的那个戴尔本一样。而且以前早就有禁用 Swap 的想法了,这次就直接去实施了。

禁用 Swap

[scode type="red"]如果你的物理内存真的不够,禁用 Swap 可能会导致程序被内核 OOM(Out Of Memory) Kill 掉,甚至导致内核崩溃。请自行斟酌风险。[/scode]

1.0 禁用 SIP

从 MacOS 10.11 开始,苹果就在 MacOS 里加上了 SIP(系统完整性保护 System Integrity Protection)这导致了要想修改系统文件就必须进入恢复模式去关闭 SIP,否则即使是 root 用户也只会返回 Operation not permitted。所以,必须要关闭 SIP。

  1. 重新启动 Mac 并按住键盘上的 Command(⌘)+ R
  2. 系统可能会提示您输入密码,例如固件密码,或这台 Mac 的管理员用户的密码。请输入要求的密码以继续。
  3. 在实用程序菜单中,选择“终端”。
  4. 输入csrutil disable 并回车
  5. 在菜单中,点击重新启动来重启电脑。

1.1 禁用 Swap

  1. 先使用 sysctl -a vm.compressor_mode 来检查现在的内存模式,默认的数字应该是 4

    • 1 代表不压缩内存且不启用 swap。
    • 2 代表压缩内存但不启用 swap。
    • 3 代表不压缩内存但启动 swap。
    • 4 代表着压缩内存并启用 swap。
  2. 输入 nvram boot-args="vm_compressor=2" 即可将内存管理模式更改为压缩内存但不启用 swap

1.2 启用 SIP

由于安全原因,这里建议重新启用 SIP。如果想要启用的话,直接在终端中输入 csrutil enable 即可。

禁用其他系统服务

1.0 禁用 mds_stores

mds 是 Spotlight的一部分。也就是你按 Command (⌘) + 空格 弹出来的那个东西。它为所有文件建立索引,以便在你要搜索文件的时候快速的找到你想要的东西。因为我的 Spotlight 已经完全被 Alfred 替代,所以可以禁用它以节省CPU和内存。