web-dev-qa-db-ja.com

なぜlaunchdはプロセスを殺し続けるのですか

System.logが次のようなメッセージで溢れていることに気づきました。

May  5 12:56:08 macpro com.Apple.launchd[1] (com.Apple.qtkittrustedmoviesservice[8568]): Exited: Killed: 9
May  5 12:56:08 macpro kernel[0]: memorystatus_thread: idle exiting pid 8568 [qtkittrustedmovi]
May  5 12:56:11 macpro com.Apple.launchd[1] (com.Apple.audio.ComponentHelper[8564]): Exited: Killed: 9
May  5 12:56:11 macpro kernel[0]: memorystatus_thread: idle exiting pid 8564 [com.Apple.audio.]
May  5 12:56:12 macpro com.Apple.launchd[1] (com.Apple.sleepservicesd[8572]): Exited: Killed: 9
May  5 12:56:12 macpro kernel[0]: memorystatus_thread: idle exiting pid 8572 [SleepServicesD]
May  5 12:56:12 macpro com.Apple.launchd[1] (com.Apple.audio.SandboxHelper[8563]): Exited: Killed: 9
May  5 12:56:12 macpro kernel[0]: memorystatus_thread: idle exiting pid 8563 [com.Apple.audio.]

RAMがいっぱいになると、launchdがプロセスを強制終了する可能性があることは理解していますが、RAM(32GB)がたくさんあると思います。通常はごく少量です。空きメモリはありますが、アクティビティモニターを確認すると、常に15GBを超える「非アクティブ」メモリがあります。これは実際には問題を引き起こしていませんが、実際の問題をより簡単に確認できるようにログファイルを整理したいと思います。

2
Elliott B
com.Apple.launchd[1] (com.Apple.audio.ComponentHelper[8564]): Exited: Killed: 9

これは、開始したプロセス(番号8564、名前は「com.Apple.audio.ComponentHelper」)がシグナル9(SIGKILL)を送信したために、予期せず終了したことを報告するlaunchdです。

原因は、実際にはログスニペットの(前ではなく)次の行で示されます。

kernel[0]: memorystatus_thread: idle exiting pid 8564 [com.Apple.audio.]

(syslogが行を順不同で処理および/またはフラッシュしたようです。)キラーはカーネル自体です。 this (「MemoryStatusとJetsam」の見出しの2番目の段落を参照)によると、OS Xでは、カーネルのmemorystatusスレッドは、アイドル状態の終了としてマークされたプロセスを強制終了することにより、特定のしきい値を下回る空きメモリに反応します。 "。

そのため、カーネルは、空きRAMが不足しないようにするために、最後の努力でプロセスを強制終了していました。私もそれほど多くのRAMに懐疑的ですが、それはそれらのログエントリが示しているようです。 「非アクティブ」メモリは空いていないか、「不要」であることに注意してください。非アクティブなメモリは、現在割り当てられているメモリの中で最も最近アクセスされていないメモリです。内容がディスクにスワップされない限り、再利用することはできません。 (私は this の説明が非常に役に立ちました。)スワップファイルはいっぱいでしたか?あるいは、ポケットベルが割り当ての突然のバースト(および実際の書き込み)に追いつくのに十分な速さでディスクに書き込むことができなかった場合、これが発生する可能性があるのではないかと思います。

3
Terry N