MacOS,没有交换命令吗?

MacOS,没有交换命令吗?

通常在各种 UNIX 风格的交换中,我们有这些命令来查看交换的使用情况和交换的激活

在 Linux 上

    free
    swapon/off

在 HPUX 上

   swapinfo
   swapon/off

在 AIX 上

   swap
   swapon/off
   lsps

那么在 Mac 上呢?没有什么可以激活/停用并查看交换使用情况?

答案1

用于查看交换使用情况和管理交换空间的实用程序通常是特定于操作系统的。

在 macOS 上获取交换使用情况的一种方法是通过sysctl

$ sysctl vm.swapusage
vm.swapusage: total = 2048.00M  used = 339.25M  free = 1708.75M  (encrypted)

或者要获取虚拟内存统计信息,请使用vm_stat

$ vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                               22689.
Pages active:                           1293975.
Pages inactive:                         1210689.
Pages speculative:                        90024.
Pages throttled:                              0.
Pages wired down:                       1149514.
Pages purgeable:                          45249.
"Translation faults":                 627071029.
Pages copy-on-write:                   17768756.
Pages zero filled:                    444351056.
Pages reactivated:                     10794611.
Pages purged:                            764381.
File-backed pages:                      1352224.
Anonymous pages:                        1242464.
Pages stored in compressor:             1408501.
Pages occupied by compressor:            427131.
Decompressions:                         6806364.
Compressions:                          10983871.
Pageins:                              102270242.
Pageouts:                               7852274.
Swapins:                                1883954.
Swapouts:                               2043277.

通常不建议在 macOS 上禁用交换,并且通常不需要手动增加交换文件的大小。

这个问题/答案在 Ask Different 站点上讨论了将交换文件移动到另一个磁盘,但这个问题已经有八年多了,所以它可能已经过时了。

这个问题在同一个网站上是关于在 macOS 上禁用交换的,但作为其中一个答案说:

也就是说,这绝对是一个过早优化的情况。它几乎总是一个可怕,可怕想法禁用你的交换文件。当您正在运行的程序消耗的内存多于实际安装的内存时,就会出现交换文件。如果禁用它,您可能无法同时运行尽可能多的程序(并且限制远低于您的预期),或者您可能会遇到问题(例如冻结并必须硬重新启动计算机)你的内存不足了。

该问题指出,可以使用以下命令禁用交换并删除交换文件

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

我还没有真正敢于测试,因为我不能保证我总是有足够的 RAM 可以在没有交换的情况下运行。

相关内容