3分で読めます
| ハウツー

AppleのmacOS High Sierraは、デュアルコアの2011年製MacBook Airに十分なパフォーマンス強化をもたらし、まるで新生したかのような感覚をもたらしました。しかし時折、特に最近は頻繁に、CPUが5~10分間フル稼働した後、ようやく落ち着くという状況が連続して発生しました。その際、アクティビティモニタやiStatメニューには、CPUを食いつぶしている2つのシステムプロセス、tailspindとspindumpが表示されていました。これを止める方法を見つけなければ!
調査の結果、tailspind と spindump が1 を実行すると判断する、非常に大まかに定義された次の 2 つのシナリオが見つかりました。
- アプリケーションは、tailspind と spindump にそのアプリケーションの状態のスナップショットを取得してディスクに書き出すように要求します。または、
- 一部のアプリケーションまたはプロセスは、一定期間 (30 秒が一般的な見解のようです) にわたって CPU を最大限に消費し、その後、tailspind と spindump が起動して、将来のデバッグのために、発生中の状況のスナップショットを取得します。
私に何度も発生し、おそらく皆さんにも発生していたのはこの2番目のケースです。問題は、CPUリソースが制約されるという連鎖的な状況が発生することです。あるアプリが実行されると同時にspindump/tailspindが起動し、それ自体もCPUを消費します。その結果、他のアプリの実行時間が長くなりすぎて、spindump/tailspindが再び起動し…といった状態が続きます。この状態が、最終的にすべてが完了するまで続きます。その間、tailspindとspindumpがCPUの大部分を消費し、実際に実行したいプロセスはかろうじて処理を続行しようとします。
spindump/tailspind によって作成されたログ ファイルを確認したところ、(基本的に) すでにわかっていたことが示されていました。つまり、何らかのプロセスで大量の作業が必要で、6 年前の CPU ではその処理に事前に設定された制限よりも長い時間がかかっていたということです。
実行しようと決めた何かがCPUを使っていると知らせるために、CPUリソースを余分に使う必要はまったくありません 。それはもう分かっています。アクティビティモニターを使えば分かります。そして、一般的に言えば、CPU使用率が上がる「理由」も既に分かっています。
これを踏まえて、spindumpとtailspindを無効にすることにしました。それ以来、私の人生は至福の時です。MacBook Airは起動が速く、すぐに反応します。再起動のストレスもなくなり、バッテリーの持ちも格段に良くなり、率直に言って、マシンは完全に使えるようになりました。全体的な使い勝手という点では、まるで4年前に戻ったかのようです。
macOS High Sierraでtailspindとspindumpを無効にする
macOS High Sierra 2にはシステム整合性保護が搭載されており、特定のファイルは変更不可、編集不可となります。これにより、システムファイルをマルウェアフリーで安全な状態に保つことができますが、柔軟性は犠牲になります。
tailspindとspindumpを無効にするには柔軟性が必要であり、そのためにはシステム整合性保護(SIP)を一時的に無効にする必要があります。SIPを無効にするには、以下の手順に従います。
- Apple ロゴが表示されるまでCommand + Rを押したまま Mac を再起動して、リカバリモードで起動します。
- Mac がリカバリモードになったら、「ユーティリティ」>「ターミナル」に移動します。
- リカバリモードターミナルで、
csrutil disableReturn を発行して押します。 - Macを再起動します。
SIPを無効にしたら、tailspindとspindumpを無効にする手順は非常に簡単です3。ターミナルを起動し、以下の4つのコマンドを入力/貼り付けします。最初の2つはspindumpをオフにして無効にし、次の2つはtailspindに対して同じ処理を行います。
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.spindump.plistsudo mv /System/Library/LaunchDaemons/com.apple.spindump.plist /System/Library/LaunchDaemons/com.apple.spindump.plist.baksudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.tailspind.plistsudo mv /System/Library/LaunchDaemons/com.apple.tailspind.plist /System/Library/LaunchDaemons/com.apple.tailspind.plist.bak
完了したら、SIP を無効にする手順 (再度リカバリ モードで) を実行し、csrutil enable手順 3 を実行して、必ず SIP を再度有効にしてください。
これで完了です。これ以降、tailspindとspindumpは無効化され、Mac 4では実行されなくなります。macOSのアップグレード後には、これらのプロセスが警告なしに再度有効化される可能性があるため、これらの設定を確認することをお勧めします。
- tailspind と spindump の機能について技術的な知識のある方には申し訳ありませんが、私は主張をはっきりさせるために大まかに話しています。
- 私はこれを macOS High Sierra でのみテストしましたが、macOS Sierra にも同じプロセスが含まれています。
- これら 2 つ以外を無効にする方法を検討している場合は、GitHub 上の pwnsdx の disable.sh から概念を借用しました。
- 開発者は tailspind と spindump の実行を望む場合があるので、その結果に注意してください。