「Vine_MPD」と「Voyage MPD」の比較(続編)

「Vine_MPD」の「Voyage MPD」の簡単な比較を報告したのですが、それに関していろいろなコメントを頂きました。有り難い限りです。
そこで、その後気づいたことをいくつか追加報告したいと思います。

起動時のプロセスの差について

yoさんより、次のようなコメントを頂きました。

『「ちょっと変だなぁ」と思ったのは立ち上がっているタスクの数です。僕の環境では76(サイトの写真で確認できます)、シンさんの環境では62で(これもサイトの写真で確認できます)、100に近いという感じではないのですが、何故ですかね。』

私の「Voyage MPD」はインストールしたままの素の状態なので不思議だなと思ったのですが、すぐにシンさんより

『立ち上がってるタスクの数はハードウェア構成によるものだと思います。
ps -eLo pid,cls,rtprio,pri,nice,cmd |grep -i “irq” で出てくる項目をよく見ますとCPUがシングルコアだと xxx/0 ひとつのみですがDualコアですとxxx/0,xxx/1となります。当然Quadコアだと四つになります。それ以外にもLANの数、などハードウェア構成が複雑になればなるほどそのハードウェアを管理するためのタスクの数は増えて行きます。』

という返事を頂きました。

なるほど、私の専用機は「パワー優先」なので納得です。
しかし、「Vine_MPD」も全く同じパソコンで動いているので、やはり起動時のタスクの数が「Voyage MPD」よりも少ないという事実に変わりはありません。

そこで、「Voyage MPD」の「/etc/rc2.d」の中をのぞいてみるとこんな感じです。(「Voyage MPD」はランレベル2で起動します)

頭に「S」がついているものが起動時にスタートしますから、デフォルトでは20個スタートします。
それに対して、「Vine_MPD」の方はこんな感じです。(「Vine_MPD」はランレベル3で起動します)

頭に「K」がついているものはインストール時には組み込まれたものの、チューニングによって起動時にはスタートしないように設定されたサービスです。
ほとんどのサービスが「K」にされているので、デフォルトでは9個がスタートするようになっています。

しかし、「top」コマンドで監視すると、「Voyage MPD」では音楽再生に関わるプロセスは優先度が最高の20になり、それ以外のものは最低の「-50」になるように作り込まれているのが分かります。

このあたりが、音楽再生専用に作り込まれた「Voyage MPD」の特徴が出ているのでしょうか。
「Vine _MPD」もやろうと思えばある程度はできるのでしょうが、素の状態だとこんな感じです。

音楽再生に関わるプロセスは確かに優先度最高の20になっていますが、その他のプロセスの優先度も結構高いです。

<2010年12月26日追記>
yanさんより指摘をいただきました。
これはまったくの私の勘違い、linuxでは数字が大きくなるほど優先度が低くなり、小さくなるほど優先度が高くなるそうです。思い込みとは怖いもので、長年間違って覚えこんでいたようです。
だとすると、「Voyage MPD」の優先度はどうしてあんなことになっているのでしょう。もっとも、・・・
<追記 終わり>

ただし、これが音楽再生にとってどの程度効くのかは不明です。
以前、linuxで普通に再生ソフトから再生させたときに、この優先度を結構追い込んだことがあるでのすが、あまり効果は聞き取れませんでした。ですから、基本的には、この起動時に自動的にスタートしてくるサービスをもう少し刈り込んだ方がいいのではないかと思います。

<さらに追記 2010年12月26日>
上記の「Vine_MPD」はあきらかに刈り込みすぎのようです。確かに、音は出ますが、あまりにもサービスを刈り込みすぎると、結果としてシステム全体が不安定になり、肝心の音のほうが腰高で不安定なものになっていきます。
これは、Windowsの時にも強く感じたのですが、チューニングというのはシステムが最も安定して動作するポイントを探すことであって、「軽くなればなるほどいい」というような簡単なものではないようです。ですから、音を出すのには直接必要はなくても、システムを安定して動かすためには起動しておいたほうがいいサービスもたくさんあるようです。ですから、現在の私の「Vine_MPD」はもう少し大目の15程度のサービスを起動させています。もっとも、それがベストかどうかは不明です。
「Voyage MPD」に関しては、使い勝手とシステムの安定度とのトレードオフで20個というサービスが起動されているのでしょうが、それぞれのポリシーでもう少しは刈り込めるのではないかと思います。

メモリが解放されない・・・ような気がする

「top」コマンドで監視していると、音楽を再生させたり停止したりするたびに、メモリの消費量がどんどん増えていくのが確認できます。
再生しているときにメモリを食いつぶしていくのは分かるのですが、停止をしてもそのメモリが解放されないような気がします。ですから、新しく別のファイルを再生すると、さらにメモリが食われていきます。
これは、「Voyage MPD」でも「Vine_MPD」でもその挙動は同じですので、どうやら「MPD」と言うシステムの「仕様(バグ?)」のように思います。

私の再生専用機はメモリを6Gb積んでいて、さらには「Vine5」が62bitOSなのでそれをまるまる認識してくれています。ですから、メモリを食いつぶしてフリーズしてしまうと言うことは現実的には起こらないのですが、ランレベル5で「MPD」を動作させていて、メモリが1Gb程度しか積んでいないとまずいことが起こりそうな気もします。
なぜなら、こんな感じで、起動時にすでに500Mbほどメモリを食い、それがどんどん増えていくからです。

阪本さんより
「私のシステム特有なのかは不明ですが音楽再生中に、停止、再生を繰り返したり曲目変更等の操作を行うと、Minionからの操作、再生が一切出来なくなりサーバー、クライアント間の通信も途絶え、まるでフリーズした様になってしまいます」という報告があったのですが、どうもそのような「不都合」が起こっているような気がします。

ですから、現状ではある程度メモリは積んでおいた方が無難なように思えます。

PulseAudioとAlsaの差異

これも前回少しばかりふれたのですが、「Vine_MPD」ではAudio Outputに「Alsa」を選択しても、「PulseAudio」のプロセスが起動してきます。

これも、技術的なことは今ひとつよく分からないのですが、どうやら「Vine_MPD」では外部クライアントからのリクエストは「PulseAudio」が受け取ってから「Alsa」に引き渡すような仕組みになっているようなのです。というか、「PulseAudio」というのは本来そのような役割を果たすものらしいのです。
PulseAudioに注目すべき理由

上記ページで「PulseAudioを利用することにより階層が一つ増えることになるが、そうすることによりすべてのサウンドが同じサウンドサーバを経由することの利点を享受することができるようになる」と述べられています。
つまり、「PulseAudio」というのは音質云々よりは雑多なプロジェクトの不整合性を回避するための仕組みというのが本来の役割のようなのです。ですから、音質最優先の「PCオーディオ派」にとっては「階層が一つ増える」というのはどう考えても有り難くありません。
その意味で、「PulaseAudio」というワンクッションを選ばなかった「Voyage MPD」の選択はきわめて妥当なもののように思います。
そして、「Ubuntu」や「Fedora」のようなメジャーなディストリビューションではこの「PulseAudio」がデフォルトで設定されるので、これを回避するのは一汗かかされそうです。事情は「Vine_MPD」も同様です。

PCのハード構成を巡る問題

この問題はPCオーディオ黎明期から語られてきた課題です。
音楽再生に使うPCはできる限り低スペックのものを使い、CPUもメモリも電源も、PCが動くぎりぎりの状態にした方が音質的にはベストだと語られてきました。
しかし、その後PCの性能が飛躍的に向上していく中で、あまりそんなことは考えなくても、逆にPCの馬鹿力をフルに活用した方がいいのではないか、と言う意見も出てきました。確かに、低スペックのノートパソコンをバッテリ駆動で動作させるというやり方で再生させるのと、パワフルなデスクトップ機で再生するのでは、明らかにデスクトップ機の方が音がいいのです。パソコン内部の電磁波ノイズが音楽再生に悪影響を及ぼすという「公理」に従うならあり得ない結果なのですが、私の経験でもノートパソコンで再生させる音はあまりよろしくありませんでした。
そんなこんなで、パソコン内部の電磁波ノイズなんてそれほど気にしなくてもいいのではないか、等という大胆な意見も出てきます。
もちろん、ノートパソコンにはノートパソコン特有の課題があって、それが悪さをしているという指摘もあります。

また、「音楽再生のみならそれ程マシンーパワーは必要ない」というのももっともな意見なのですが、これも実際にやってみると、パワーのあるパソコンで再生した方が音質的には良好なことが多いようにも思われます。
そんなわけで、音楽再生に求められるベストなPC環境とはどのようなものなのか、私自身もよく分からないのです。
そして、ネット上の情報をあれこれ探ってみても、そのあたりの問題を実際に比較して検証した情報はあまり存在しないのです。

ですから、これは二通りのパソコンに「MPD」をインストールして実際に聞き比べてみないと、個人的には「結論」は出ないと思っています。

最後の余談

話は少しばかりそれますが、今ほどユーザーサイドとお店側の意識がずれた時代はかつてなかったように思います。
私が注目している手作りSPの工房である「ウッドウイルのブログ」にこんな述懐が綴られていました。

「何やら最近のオーディオの新しい風というのはPCオーディオらしい。・・・つい最近、家電量販店と呼ばれる都内の本店を数店出かけてその動きを覗いて来ました。結果はそれらしい機材などは置いてありますが、初心者や一般の方が見ても気が付かない程度の物でした。

売り場担当に聞いて見ますとオーディオコーナーにはパソコンが無い(家電量販店の本店なんですけど不思議?)のでシステムを設置出来ないとの事。
関連書籍や解説書は?と問いかけると売り場が違うのそちらに置いていますと。
今寄って来たけど有りませんでしたが?と言うとそうですか、そこへは行った事が無いので...PCオーディオにはソフトウエアが必要なんですが、そんなソフトも売り場には無かった。」

全くその通りで、このガラパゴス状態は何とかならないものかと溜息が出てしまいます。そして、そんなガラパゴスなオーディオショップ店員の金科玉条が「PCなんて電磁波ノイズの固まりなので、それをしっかりシールドしないとピュアオーディオでは使い物になりませんよ」です。
大阪は日本橋の大きなショップでも、ほとんどが判子で押したようにこの言葉が返ってきますから、「PCなんて電磁波ノイズの固まり」と言う言葉は、彼らがガラパゴスするための「お守り」「護符」となっているようです。
ただし、私は結構底意地が悪いので、「その電磁波ノイズというのは具体的にはどんなものなのですか?」等と突っ込んでみたりすると大部分の店員さんは急に用事ができたりするので、ホントに困ってしまいます。(^^;
つまりは、ショップ側の大多数はPCオーディオに真面目に取り組んだことだことがないようなのです。そして、十年一日のごとく、「あのSPにはあのアンプ・・・」みたいな組み合わせの「蘊蓄」だけで勝負をされています。
私も「そんなアンプではスピーカーの実力は全く出し切れてませんよ。少なくとも、このくらいのアンプは使ってもらわないと。」という言葉を何度言われたことか!!その度に、うんざりした思いで何度もお店をあとにしたものです。

オーディオというほとんど「死に体」の業界に「新しい風」が吹くというのは大変なことです。それも、自力ではなく全くの他力で吹いてくれた風なのです。もしも、真っ当な感覚が残っているなら、この風に乗らない手はないと思うのですが、現実はこの「風」がまるで自分たちの世界を侵略してくる「邪魔者」のように感じるらしくて、ひたすら頭を砂の中に突っ込んで「悪霊退散」を念じているだけのように見えて仕方がありません。
オーディオメーカーの技術力を持ってすれば、音楽再生に最適なパソコンなんて、簡単に比較検証して納得のいくものを作ることなどいとも容易いことのように思えます。そして、それを分かりやすくアピールして妥当な価格設定でリリースすれば十分受け入れられると思うのです。
トップページのアンケートでも、自分のシステムで一番強化したいのは「パソコン」か「スピーカー」とこたえる人が圧倒的に多数なのです。つまり、ユーザーはきわめて真っ当なのです。その現実を見ない限り、本当にオーディオという仕事は死に絶えてしまいます。


7 comments for “「Vine_MPD」と「Voyage MPD」の比較(続編)

  1. 2010年12月24日 at 9:08 AM

     初めまして。こちらも長年WindowsでPCオーディオをやってきていますが、ようやく時代の流れが変わってきたように思います。PCに必要とされるの性能も試してみるとユングさんの考えに同意するようになって来ました。

     最近Linuxに目覚めて乗換えようとは思っているのですが、何せ門外漢なので中々進みません。微力ながら皆さん先進的な活躍にエールを送ります。

  2. 2010年12月25日 at 6:28 PM

    ユング君さん、こんにちは。
    いつもながら楽しくご拝見させていただきました。
    使用メモリがどんどん増える件は
    apt-get remove pptpd [Enter] である程度、解決できると思います。
    但し、pptpサーバを使わない条件付きですが、、^^;
    では、、

  3. ユング君
    2010年12月25日 at 11:50 PM

    >使用メモリがどんどん増える件は
    apt-get remove pptpd [Enter] である程度、解決できると思います。

    なるほど、暗号化通信がメモリ食いに関わっているんですね。貴重な情報、ありがとうございます。
    そんなものはおそらく使わないでしょうから、即刻「remove」しましょう。

    それから。今日「アクサンチュス」のCDが届いたので、改めて「Vine_MPD」と「Voyage MPD」で聞き比べてみました。こういう新しい録音で、しかも合唱という結構シビアな音源になると、やはり「Voyage MPD」の方が一歩上のようですね。
    音楽専用に作りこまれいるのは伊達ではないようです。

    さて、どうしたものか・・・うれしい悩みです。

  4. yan
    2010年12月26日 at 12:30 AM

    はじめまして、私もvoyage mpdで音楽を楽しんでいます。
    ちょっと気になったことがあるのでコメントさせていただきます。

    まず、優先度ですが、数字の大きいほど優先度は小さくなります。
    そして、優先度が負の数字を持つプロセスはリアルタイム属性の
    プロセスだそうです。これはリアルタイムカーネル特有の物のようです。

    次にメモリに関してですが、linuxの場合空きメモリはキャシュとして
    使われます。空きメモリがなくなると、キャッシュ上の不必要なデータ
    を破棄してキャッシュからメモリを割り当てます。
    従って、free + cachedがプログラムから使えるメモリとなります。
    mpd自体はメモリをリークしていないと思います。
    topで確認するとmpdのVIRT(仮想イメージ)とRES(常駐サイズ)は殆ど変化
    しません。

    自動起動について
    mpdはrootで起動されると mpd.conf のuserで指定したユーザの権限で
    走行します。
    本来ならば、自動起動は/etc/rc*.dにスクリプトをおいて行うのですが、
    スクリプトを作るのが面倒なら/etc/rc.localに/usr/local/bin/mpd
    を記述しておけば自動起動します。多分run level 3でも5でも起動します。
    .bash_profileに書くやりかたは、そのユーザでloginするたびにmpd
    が起動するのであまりいいやりかたとは思いません。
    rc.localから起動した場合は、shutdown プロシジャーでmpdを終了する
    事が出来ないのでドライブのアンマウントに失敗するかもしれません。
    終了もきれいに行うなら/etc/rc*.dにスクリプトを置かなければなりません。

  5. ユング君
    2010年12月26日 at 9:45 AM

    yanさん、コメントありがとうございます。linuxに詳しい方が参戦してくれると得るものが増えるのでありがたい限りです。

    >まず、優先度ですが、数字の大きいほど優先度は小さくなります。

    えー、大きいほど優先度が上がるんじゃなかったのですか?私は固くそう信じてきました。それから、linuxのメモリ管理については少し勉強しないといけないですね。
    もしも、メモリを食いつぶしていないとすると、「再生・停止を繰り返すとフリーズする」という報告の原因は何なのでしょうか?

    自動起動の仕方については、パソコンの電源の「オン」「オフ」しかしないという「オーディオ機器的な使い方」をするという前提ですので、お洒落ではないけれど最も簡便なやり方ということで現実的には「有り」かなと思っています。
    いかがなものなのでしょうか?

  6. 2010年12月26日 at 2:09 PM

    メモリに関してですがカーネルは要請があればフリーメモリを割り当てようとしますが足りなければキャッシュメモリを回収して要請されたプロセスに割り当てます。それでも駄目ならswap-outが呼び出されます。最悪スワップメモリ確保に失敗すれば’Out Of Memory Error’が発生します。voyage MPDにはswap 領域がありませんので恐らくですがここでフリーズするなりのトラブルを起こした可能性があります。勿論、原因は他にも有り得ますが、、もしこれが原因ならメモリを増やすかスワップ領域を作れば解決になると思います。

    それ以外にも、、
    cacheの管理はカーネルがやってるのでカーネルのコンパイルし直しなどの手もありますが他にvm_passes、vm_cache_scan_ratio、bdflush などを触って見るのも一つの手かなとも思いますが、、あまりやりたくはありません。

    以上から反応速度から見ればフリーメモリが必要十分にあった方がよく、特に音楽再生中に時間の掛かるような割り込み動作は音質上あまりよろしくないようですので私はもっぱら必要ないものを削るなど単純な方法に頼ることにしました。^^;

    では、、

  7. yan
    2010年12月28日 at 12:14 AM

    こんばんは、

    >だとすると、「Voyage MPD」の優先度はどうしてあんなことになっているのでしょう。もっとも、・・・

    音楽再生時のmpdの動作は極論すれば音楽ファイルをエンコードしてドライバーに渡すだけなので、ドライバーのバッファーに空きが出来ない程度に動ければいいんじゃないんですかね。
    それより、mpdから渡されたデータをデバイスに送るのはドライバーの仕事で、デバイスからの割り込みに対する応答をなるべく早くする、デバイスからの割り込みに対する処理中に他のデバイスに乱されないのが重要だと思います。その為にvoyage mpdはリアルタイムカーネルを採用したんじゃないかと想像しています。
    割り込みに対する応答をなるべく早くするという意味ではハイスペックのCPUの方が有利で、処理を乱さないという観点からはプロセスの数を減らすのが有利に働くのかもしれません。

    >そして、「Ubuntu」や「Fedora」のようなメジャーなディストリビューションではこの「PulseAudio」がデフォルトで設定されるので、これを回避するのは一汗かかされそうです。事情は「Vine_MPD」も同様です。

    PulseAudioのデーモンが起動されていても、mpd.confのaudio_outputにalsaの設定をしalsaに出力すれば、pulseaudioを経由せずにalsaに直接出力されます。
    但し、mpd再生中にpulseaudioから音がでるとおかしくなります。

    >もしも、メモリを食いつぶしていないとすると、「再生・停止を繰り返すとフリーズする」という報告の原因は何なのでしょうか

    これはわかりません。坂本さんのコメントからはmpdやlinuxがフリーズしているとは判断できませんし、クライアントの問題も考えられます。
    しかし、mpdがメモリーをリークしていない事は断言できます。

Comments are closed.