MTLCompilerService
別名: Metalシェーダコンパイラ
結論
MTLCompilerServiceは、AppleのグラフィックスフレームワークであるMetalを使うアプリの代わりに、GPU用のグラフィックスコードを準備するmacOSのプロセスです。Metalで描画するアプリごとに専用のコピーが用意されるので、アクティビティモニタには同時にいくつも表示されることがよくあります。
ゲーム、ブラウザ、ビデオ編集アプリのほか、多くの普通のアプリがMetalを通じて描画しています。シェーダは、画面上の見え方を決める小さなプログラムです。GPUがアプリのシェーダを実行するには、まずMacに搭載されたチップ向けにコンパイルする必要があります。macOSはこの作業をアプリとは別のMTLCompilerServiceで行うので、シェーダに不具合があってもアプリ自体はクラッシュしません。
結果はアプリのキャッシュに保存されるので、作業は一度で済み、あとは再利用されます。MTLCompilerServiceのコピーは、対応するアプリが終了するとなくなります。
MTLCompilerServiceのCPU使用率が高い理由
アプリがシェーダをコンパイルしていて、保存済みのコピーがないか古くなっています。アプリを初めて実行したとき、アプリやmacOSをアップデートしたあと、ゲームが新しいレベルを読み込むときに起こります。数秒から数分の一時的な負荷は正常で、ゲームであるエリアに初めて入ったときだけ動きがカクつき、その後は起こらないのはこのためです。
それよりずっと長く忙しいままなら、1つのアプリが同じシェーダを何度もコンパイルし直しています。よくあるのは、グラフィックスの重いページを開いているブラウザと、アップデートしたばかりのアプリです。
対処法
アップデートや初回起動のあとは、数分待ちます。それでも続くなら、どのアプリのものかを突き止めます。グラフィックスを描画するアプリを、ブラウザとゲームから順に1つずつ終了し、忙しいMTLCompilerServiceがどのアプリと一緒に消えるかを見ます。
そのうえで、そのアプリをアップデートするか、ブラウザなら原因になったタブを閉じます。MTLCompilerService自体を終了しても安全ですが、効果が長続きすることはめったにありません。アプリが新しいものを要求し、コンパイルが最初からやり直しになるからです。
よくある質問
MacのMTLCompilerServiceとは?
Metalを使うアプリのためにグラフィックスのシェーダをコンパイルするmacOSのプロセスです。macOSの一部で、必要とするアプリごとに専用のコピーが用意されます。
MTLCompilerServiceのプロセスがこんなに多いのはなぜ?
Metalで描画するアプリごとに1つあり、一部のアプリ、とりわけブラウザは複数起動するからです。アイドル状態のコピーは、CPUをほとんど使わず、メモリもわずかしか使いません。
MTLCompilerServiceはウイルス?
いいえ。macOSの一部で、“システム”フォルダにあるMetalフレームワークの中にあります。このプロセスのCPU使用率が高いのは、アプリがグラフィックスの準備をしているからで、Macに問題があるわけではありません。
関連項目
アクティビティモニタより優れたものをお探しなら、Mac向けアクティビティモニタの代替アプリのおすすめをご覧ください。用語集のすべての用語も見られます。