Osx

MacOS,沒有交換命令?

  • April 1, 2019

通常在各種用於交換的 unix 風格上,我們有這些命令來查看交換的使用和交換的啟動

在 Linux 上

   free
   swapon/off

在 Hpux 上

  swapinfo
  swapon/off

在 AIX 上

  swap
  swapon/off
  lsps

在 Macos 上呢?沒有什麼可以啟動/停用並查看交換使用情況?

用於查看交換使用情況和管理交換空間的實用程序通常是特定於作業系統的。

在 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 可以在沒有交換的情況下執行。

引用自:https://unix.stackexchange.com/questions/509826