ablog

不器用で落着きのない技術者のメモ

macOS Sierra でスワップを無効化する

macOS Sierraスワップを無効化した手順のメモ。
macOS Sierra では System Integrity Protection (SIP) でシステムファイルが保護されているので、リカバリモードで起動して、SIP を無効化後にスワップ(Pagerデーモンの自動起動)を無効化し、SIP を元に戻した。

手順

リカバリモードで起動して SIP を無効化する
  • OSを再起動する
  • OS起動時に Command + R を押し続ける(ログイン画面になる前)

  • 「主に日本語を使用する」を選択する

  • 画面上部のメニューの [ユーティリティ]-[ターミナル] を選択する

  • SIP を無効化する
-bash-3.2# csrutil disable
Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effetc.
スワップを無効化する
$ sudo launchctl list|grep dynamic_pager
-	0	com.apple.dynamic_pager ★ Pager デーモンの自動起動が有効
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
$ sudo launchctl list|grep dynamic_pager
$ ★Pager デーモンの自動起動が無効になっている
リカバリモードで起動して SIP を有効化する (元に戻す)
  • 再起動する
  • 起動時に Command + R を押し続ける(ログイン画面になる前)
  • 「主に日本語を使用する」を選択する
  • 画面上部のメニューの [ユーティリティ]-[ターミナル] を選択する
  • SIP を有効化する
-bash-3.2# csrutil enable
Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effetc.

補足

  • スワップ領域使用量はアクテビティモニタや vm_stats の Pageouts で確認できる。
$ vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                             1617968.
Pages active:                           1123098.
Pages inactive:                          295638.
Pages speculative:                       683934.
Pages throttled:                              0.
Pages wired down:                        473140.
Pages purgeable:                         245419.
"Translation faults":                  10275868.
Pages copy-on-write:                     429818.
Pages zero filled:                      3576699.
Pages reactivated:                         4653.
Pages purged:                               133.
File-backed pages:                      1064238.
Anonymous pages:                        1038432.
Pages stored in compressor:                   0.
Pages occupied by compressor:                 0.
Decompressions:                               0.
Compressions:                                 0.
Pageins:                                 373701.
Pageouts:                                     0. ★
Swapins:                                      0.
Swapouts:                                     0.
  • pcom.apple.dynamic_pager.plist の内容は以下の通り。
$ sudo cat /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>EnableTransactions</key>
	<true/>
	<key>Label</key>
	<string>com.apple.dynamic_pager</string>
	<key>KeepAlive</key>
	<dict>
		<key>SuccessfulExit</key>
		<false/>
	</dict>
	<key>POSIXSpawnType</key>
	<string>Interactive</string>
	<key>ProgramArguments</key>
	<array>
		<string>/sbin/dynamic_pager</string>
		<string>-F</string>
		<string>/private/var/vm/swapfile</string>
	</array>
</dict>
</plist>

環境