SyoBoN's Home


macOSでMPDをlaunchdから起動するときはProcessTypeをInteractiveにする

久しぶりにMusic Player Daemon (以下MPD)を設定したところ、あまりにも音がブツブツ途切れるので原因を調査したメモです。

原因

launchdによるI/O帯域制限。

macOSでは、デーモンがリソースを食い潰してしまわないよう、launchdが自動でCPU使用量やI/Oの帯域を制限します。

通常は問題ないのですが、MPDのFIFO出力を有効にしていると、I/Oの帯域制限に引っ掛かって出力が詰まってしまい、それに合わせるために通常の出力も中断され、結果として音がブツブツ途切れることになります。

ProcessTypeInteractiveに設定することで、帯域制限を解除し、正常に出力させることができるようです。

対処

launchdの.plistファイルに以下を追加します。なお、HomebrewからMPDをインストールし、brew servicesコマンドを利用し設定している場合、既に対策されているようなので必要ありません。

<key>ProcessType</key>
<string>Interactive</string>

nix-darwinを使用している場合はserviceConfigに以下を追加します。

ProcessType = "Interactive";

もしくは、ビジュアライザなどを使用しなくてよいのであれば、FIFO出力を完全に無効化してしまう方が早いです。

参考

https://github.com/MusicPlayerDaemon/MPD/issues/72

タグ:

[CC BY-SA]
このサイト上の文章はCC BY-SAライセンスの下公開されています。
© SyoBoN Some rights reserved.