要約

アクティビティモニタを確認したところ、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のインデックス作成自体を無効化した。

現在の状態

bash
mdutil -a -s

出力結果:

/:
    Indexing enabled.

/System/Volumes/Data:
    Indexing enabled.

/System/Volumes/Preboot:
    Indexing enabled.

すべてのボリュームで Indexing enabled. と表示され全ボリュームが無効化されているのが分かる。

bash
sudo mdutil -a -i off

再度、状態の確認をした。

bash
mdutil -a -s
/:
    Indexing disabled.

/System/Volumes/Data:
    Indexing disabled.

/System/Volumes/Preboot:
    Indexing disabled.

結果

無効化からしばらく経過した後、アクティビティモニタで確認すると、mds_stores の実メモリ使用量は10MB程度まで低下した。

再度有効化する場合

再有効化するには次のコマンドを実行する。

bash
sudo mdutil -a -i on

インデックスを再構築するには次を実行する。

bash
sudo mdutil -E /

データ領域だけを再インデックスしたい場合は、次のコマンドで済む。

bash
sudo mdutil -E /System/Volumes/Data