要約
アクティビティモニタを確認したところ、mds_stores というプロセスが実メモリを500MB近く消費していた。原因は、macOSのSpotlightの処理であり、Spotlightを使用しないため無効化した。その結果、実メモリ使用量を10 MB程度まで削減できた。
mds_storesとは
mds_stores は、Spotlight検索を高速化するためのメタデータを保存・管理するプロセス。Spotlightはファイル名、作成日、更新日、ファイル種別、PDFや書類の本文、メール、アプリ情報などを対象に、Mac内の情報を事前にインデックス化している。
問題
macOSはデフォルトで全ボリュームのインデックス作成を有効にしている。そのため、Spotlight検索を一度も使わなくても、mds_stores は常にバックグラウンドで動作する。とくに /System/Volumes/Data(ユーザーのホームディレクトリ、書類、ダウンロード、アプリデータを含む領域)はファイルの増減が激しいため、この領域のインデックス更新が mds_stores の日常的な負荷の大部分を占める。
以下の状況ではさらに負荷が高まる。
- macOSアップデート直後
- Macの初期設定直後
- 大量のファイルをコピーした後
- 外付けSSD / HDDを接続した後
- クラウド同期フォルダが大量に更新された後
- Spotlightインデックスが破損し再作成されているとき
無効化による影響範囲
Spotlightのインデックス作成を停止すると、次の機能が動作しなくなる。
- Spotlight検索
- Finderのファイル検索
- メールアプリでの検索
- PDFや書類の全文検索
- メタデータ検索に依存する一部のアプリケーション(Siri Suggestions、LaunchPadの検索などを含む)
対応:インデックス作成の無効化
Spotlightのインデックス作成自体を無効化した。
現在の状態
mdutil -a -s出力結果:
/:
Indexing enabled.
/System/Volumes/Data:
Indexing enabled.
/System/Volumes/Preboot:
Indexing enabled.すべてのボリュームで Indexing enabled. と表示され全ボリュームが無効化されているのが分かる。
sudo mdutil -a -i off再度、状態の確認をした。
mdutil -a -s/:
Indexing disabled.
/System/Volumes/Data:
Indexing disabled.
/System/Volumes/Preboot:
Indexing disabled.結果
無効化からしばらく経過した後、アクティビティモニタで確認すると、mds_stores の実メモリ使用量は10MB程度まで低下した。
再度有効化する場合
再有効化するには次のコマンドを実行する。
sudo mdutil -a -i onインデックスを再構築するには次を実行する。
sudo mdutil -E /データ領域だけを再インデックスしたい場合は、次のコマンドで済む。
sudo mdutil -E /System/Volumes/Data