Mac OS X の Spindump を無効にする
概要
MacBookPro Late 2011 を使っているが、 メモリが圧迫されているので要らない機能をオフにする。 今回は Mac OS X のソフトウェアのデバッグ用の機能である Spindump をオフにしてみた。
Spindump は実行中のアプリケーションの低レイヤ情報を書き出すためのソフトウェアだが、 得られる情報は一般的な利用目的(ソフトウェア開発以外)では役に立たないことが多いと思う。
MacOS のデフォルト設定では Spindump は有効になっている。
$ ps aux | grep spindump
user 19836 0.0 0.0 4350684 5716 ?? S 7:13PM 0:00.03 /usr/libexec/spindump_agent
root 4450 0.0 0.3 4404268 57868 ?? Ss 6:41PM 0:02.27 /usr/sbin/spindump
状態の確認
初期状態(Spindump が有効の場合)は↓のコマンドでは何も出力されない。 値がfalseなら自動起動が有効になっていて、trueなら無効です。
自動起動が有効の場合
自動起動が無効の場合
Spindump を停止する
Spindump を開始する
Spindump の自動起動を無効にする
Spindump の自動起動を有効にする
(備考) System Integrity Protecton(SIP) を無効にする (El Capitan以降のみ)
El Capitan以降のMacOSでSystem Integrity Protecton(SIP)が有効になっている場合は、 無効にしないとspindumpの設定はできない、と何処かで見た気がしたが、ソースを失ってしまった。 自分の環境ではSIPが有効の場合でもspindumpの無効化の設定はできたが、SIPの無効化を一応書いておく。
- Macの電源を切る。
- Command+Rを押しながら、起動することでリカバリモードで起動する。
- Terminal.appを起動し “csrutil disable” と打つ。
- 再起動する。
(備考) launchctlのメモ
公式のドキュメントをみると load, unload などのコマンドは legacy な扱いになっている。
サービスの設定値は↓で確認できる。
$ launchctl print system/com.apple.spindump | head
com.apple.spindump = {
active count = 0
path = /System/Library/LaunchDaemons/com.apple.spindump.plist
state = waiting
program = /usr/sbin/spindump
arguments = {
/usr/sbin/spindump
}
参考文献
- launchctl: https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html
- spindump: https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/spindump.8.html
- spindump_agent: https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/spindump_agent.8.html
- http://jamesreubenknowles.com/disable-spindump-71