デーモンとエージェントがMacの速度を低下させる可能性がある

デーモンとエージェントがMacの速度を低下させる可能性がある

隠れたバックグラウンドアプリがMacの速度を低下させている可能性があります。Macのパフォーマンスに影響を及ぼす可能性のある問題を修正する方法をご紹介します。

macOSを含むUNIXベースのコンピュータシステムでは、オペレーティングシステムは様々なバックグラウンドプロセスを実行し、特定のタスクをサイレントに実行します。macOSでは、これらは一般的にデーモンとエージェントの2つのカテゴリに分類されます。

デーモンとは、何らかのタスクを実行するために継続的に実行される、顔のないバックグラウンドタスクです。macOSには、他のプロセスを起動するlaunchd、ユーザーアカウントを管理するaccounts、iCloudサービスを実行するcloudd、BlueToothサービスを実行するbluetoothdな​​ど、いくつかの一般的なデーモンがあります。

デーモンに似たのがエージェントです。エージェントは、フォアグラウンド アプリケーションと対話し、ときどき小さなユーザー インターフェイスを表示するバックグラウンド アプリです。securityd はその一例で、Mac が管理者パスワードを要求するたびにこのエージェントが動作しているのがわかります。

起動ディスクの「ユーティリティ」フォルダにあるmacOSのアクティビティモニタアプリを開くと、デーモンやエージェントを含むMac上で実行中のほとんどのプロセスを確認できます。また、ターミナルで「」と入力してReturnキーtopを押すと、実行中のプロセスの詳細を確認できます。

Appleのシステムデーモンとエージェントのほとんどは、長年にわたり改良されてきました。数十年にわたる開発を経て、スムーズかつシームレスに動作するため、動作していることをほとんど意識する必要がありません。

しかし、サードパーティ製のデーモンやエージェントも存在します。適切に記述されていないと、パフォーマンスが低下したり、CPU時間を浪費したり、ディスクアクセスを過剰にしたり、Macの速度を低下させるような動作をする可能性があります。

場所

現在、macOS では、デーモンとエージェントは /Library フォルダ内の 2 つのフォルダ (LaunchAgents と LaunchDaemons) に存在します。

実際には、実行されるデーモンとエージェントのバイナリはこれらのフォルダーには存在せず、代わりに .plist またはプロパティ リスト ファイルが両方の場所に存在します。.plist ファイルは、キーと値のペアを含む XML ファイルです。各キーは、対応する値を持つ名前です。

ユーザーのライブラリフォルダ内には、2つ目のLaunchAgentsフォルダもあります。.plistファイルは、ほとんどのテキストエディタ、またはApple独自のIDEであるXcodeで開いて表示できます。

各.plistファイルには、各デーモンまたはエージェントの説明に加え、システムにそれらをいつどのように実行するかを指示する追加データが含まれています。各.plistには「ProgramArguments」というフィールドがあり、これは実行されるバイナリが実際に存在するファイルシステム上のパスを含む項目の配列です。

たとえば、/Library/LaunchAgents フォルダ内の XQuartz org.xquartz.startx.plist ファイルでは、ProgramArguments 配列に 4 つのテキスト項目が含まれており、そのうち 3 つにはファイル システムの他の部分へのパスが含まれています。

  1. /opt/X11/libexec/launchd_startx
  2. /opt/X11/bin/startx
  3. /opt/X11/bin/Xquartz

これら3つのパスはそれぞれ、システムによって様々なタイミングで実行されるバイナリを指しており、それらはすべてXQuartzのインストール時にインストールされる非表示の/optフォルダ内にあります。一部の.plistには、各デーモンまたはエージェントの起動間隔や起動時間などの起動情報も含まれる場合があります。

この例の .plist の追加フィールドには、UNIX ソケット パラメータ、「ServiceIPC」キー、および「EnableTransactions」キーが含まれます。

「IPC」はプロセス間通信(Interprocess Communication)の略です。IPC(Appleの用語ではXPC)は、Mac上の2つのプロセスを接続するパイプのようなもので、通信がそこを伝わっていくと考えてください。

Macを起動すると、macOSはLaunchAgentsフォルダとLaunchDaemonsフォルダを調べ、すべての.plistファイルを読み込みます。また、起動する必要があるもの、それらの項目がディスク上のどこに保存されているか、どのくらいの間隔で起動するか、そしてどのくらいの時間実行するかといった情報も記録します。

指定された時刻になると、指定されたパスにあるバイナリが起動され、実行されます。デーモンとエージェントの中には、継続的に実行されるものもあれば、定期的に実行されるものもあります。

自動アップデータは、定期的に実行され、更新タスクが完了すると終了するデーモンの良い例です。

下手に書かれたデーモン

デーモンやエージェントが適切に記述されていない場合、効率が悪く動作が遅くなり、システム全体のパフォーマンスを低下させる可能性があります。デーモンのコードが遅すぎたり、一部のタスクの完了に時間がかかりすぎたり、CPU時間を過度に消費したりすると、システムの速度が低下する可能性があります。

このように不適切に記述されたデーモンやエージェントが一度に多数実行されると、システム全体のパフォーマンスが著しく低下することがわかります。

特権ヘルパーツール

Macのライブラリフォルダには、「PrivilegedHelperTools」というフォルダもあります。これらのバイナリも、LaunchAgentsとLaunchDaemonsに保存されている.plistファイルを介して起動されます。

特権ヘルパー ツールは、システム上で特権レベルを上げて、安全なタスクを実行してから終了する必要がある場合にのみ、短時間実行される 1 回限りの実行可能バイナリです。

macOSの一部のタスクはスーパーユーザーアクセスを必要とするため、継続的に実行するとセキュリティリスクが生じる可能性があります。そのため、ヘルパーツールは短時間のみ実行することで攻撃対象領域を削減します。

タスクがスーパーユーザーとして実行されていない場合、悪意のあるソフトウェアからの攻撃ベクトルとして悪用することがより困難になるという論理です。

遅いデーモンとエージェントの削除

前述の通り、Macで同時に実行されるデーモンやエージェントが多すぎる場合、またはデーモンやエージェントの1つ以上が適切に記述されていない場合、Macの速度が低下する可能性があります。このような場合、正常なパフォーマンスを取り戻すには、パフォーマンスの問題を引き起こしているデーモンやエージェントを特定し、それらの.plistファイルを無効にしてMacを再起動する必要があります。

例えば、一部のサードパーティ製ゲームエンジンの一部としてインストールされるエージェントは、動作が遅くなったり、システムのパフォーマンスを低下させたりすることが知られています。このような場合は、.plistファイルを別の場所に移動してから再起動すると、起動を防ぐことができます。

問題のあるソフトウェアを完全にアンインストールする必要はありません。インストールされたすべての場所にあるLaunchAgentsフォルダとLaunchDaemonsフォルダから、対応する.plistファイルを移動し、再起動するだけで済みます。後でソフトウェアを再び使用したい場合は、.plistファイルを元の場所に戻すか、ソフトウェアを再インストールして再起動することで機能を復元できます。

どのデーモンとエージェントが最も多くのシステムリソースを使用しているかを確認するには、Appleのアクティビティモニタを実行し、「% CPU」と「スレッド」の両方の列を確認します。これらの列は、MacのCPUに最も負荷をかけているプロセスを特定するための手がかりとなります。

アクティビティ モニターを使用して、メモリ、エネルギー、ディスク、ネットワークの使用状況を確認することもできます。

システムのリソースを大量に消費しているバックグラウンドプロセスを特定したら、LaunchAgentsフォルダとLaunchDaemonsフォルダに戻り、対応する.plistファイルをフォルダからドラッグ&ドロップします。.plistファイルは整理して管理し、機能を復元する際にどこに移動すれば良いかを把握しておく必要があります。

.plistファイルをインストール済みフォルダから移動するには、Finderのプロンプトで管理者パスワードを入力する必要があります。Macの再起動を忘れずに。

もう 1 つの可能なオプションは、各 .plist ファイルの内容に起動間隔と時間が含まれている場合に、その内容を変更することです。たとえば、各デーモンの実行頻度を下げるために、各 .plist ファイルの起動間隔を長くしてみることが考えられます。

ただし、これらの変更を行うと、インストールされているソフトウェアの機能が変更される可能性があるため、変更を行うときは十分に注意してください。

継続的に実行されるように設計されたデーモンとエージェントは、何らかの理由があって継続的に実行されます。通常は、バックグラウンドサービスやフォアグラウンドアプリへのサービス提供を目的としています。これらを無効にすると、アプリケーションが期待するタイミングで実行されていない場合、機能が損なわれます。

少ないほど良い

一般的に、システム上で実行するデーモンやエージェントはできるだけ少なくする必要があります。たとえすべてが適切に記述されていたとしても、追加されるたびに、たとえわずかな量であっても、システムとCPUに負荷がかかります。

一度に数十個のデーモンとエージェントを実行している場合、そのすべてが加算され、Mac の速度が低下し始めます。

新しいソフトウェア パッケージをインストールした後、LaunchAgents フォルダーと LaunchDaemons フォルダーをチェックして、何がインストールされたか、それらが必要かどうかを確認することをお勧めします。

macOS 上でデーモンとエージェントがどのように動作するかを開発者レベルで詳しく知りたい場合は、APRESS ブックスから入手できる Volodymyr Vashurkin 著の『Mac Daemonology』を参照してください。

Apple の XPC サービスがどのように機能するかについての詳細な技術的説明は、開発者向け Web ページでも参照できます。