twlさん、tinkerさん
お二人のやりとりを拝見して、久しぶりにcuboxのカーネルビルドをやってみました。BBBがトラブルだらけだったもので、見落としていましたが、この件、BBBでfull-rtが指定出来ない件と関連していたのですね。もしかすると、dsd再生が途中で止まるのも関係ありかもしれませんね。
3.10.6+rt3ですが、僕の環境でもfull-rtで動きました。configは梅雨入り版の3.8用にcgroupを設定したものを使いました。手順はこの記事通りです。
http://www.symphonic-net.com/kubotayo/articles/articles014.html#007" target="_blank">http://www.symphonic-net.com/kubotayo/articles/articles014.html#007
これはいけるかなと思い使いはじめましたが、僕の環境ではmpdがハングしますね。wav(flac)、dsd(dff)の両方で発生します。使ったddcはuda3です。ハングする時間はwavだと10分~30分位。dsdは数分~10分位です。dsdハングの場合は「cannot submit urb (err = -18)」というメッセージがシリアルに出力されますが、wav再生では何も出ません。データはnfsのnasに置いてあります。
まだ確認を開始したばかりでnas環境の変更などはまだ試していません。とりあえずのご報告です。
こっちもトラブル。ウームですねぇ。
mpdのサイズの件は興味深いですね。調べてから書き込みます。0.17.5でしょうか ?
twlさん、みなさん
3.10.6+rt3のcuboxのカーネルビルド、3.8.13+rtで使用していた.configを使ってmake oldconfigでエラー無しで1発でビルドできました、3.10.4の時とはえらい違いです、情報ありがとうございました。
とりあえずMuboxの方に入れて1時間ほど連続再生させていますが、今のところは不具合は起きていません。
とは言え、例の"cannot submit urb(-18)"のエラーは、最低でも丸一日はテストしないとダメなので、まだわかりません。
ただ、自分の環境ではnasをcifsからnfsに変えてからは比較的早く現象が起こるようになったので検証しやすくなっています。
おはようございます。
3.10.9+rt5がリリースされているみたいです。
先のpatchも3.10.8でマージされていますので、urbのエラーは収まると思います。
私も夜に試してみます。
tinkerさんの情報に助けられ、3.10.9+rt5 を試してみました。状況は改善されましたが、問題点は残っています。
結論を書くと、僕の環境では、cuboxの3.10.9+rt5はBBBの3.8-rt(カーネルのレベルは3.8.13)とほぼ同じ状況となりました。BBBのdsd再生に問題がある(再生が中断する)という件はBBB特有の問題だと思っていましたが、間違いで、最新のrtカーネルで発生するようになったものだということです。
44.1/48KHzのwav(flac)ファイルは問題なく再生でき(只今確認中です、1hはok)、dsd再生は突然再生が中断します。dsd再生中断時にurb (err = -18)は発生せず、mpdもハングしません。dsd再生中断後、再開すると何事もなかったように再生再開できます。cuboxとBBBの違いはfull-rtで動くことができるかどうかだけです。
興味深いのは再生時のcpu負荷がどちらのrtカーネルでも大きくなっていることです。cuboxの場合、古いrtカーネルであればwavで1%~3%、dsdで4%~6%位だったのですが、新しいrtカーネルではそれぞれ4%~7%、8%~12%と倍増します(BBBのnone-rtカーネルとrtカーネルでも同じ)。またdsd再生時にはcpu負荷えらく不安定になることがあって、50%を超えることがあります。
他にも、nasを切り替えてみて、説明のつかない現象を観察しましたが、もう少し整理してから書きます。
tinkerさんからの情報で私も早速3.10.9-rt5をビルド、ついでにmpdも0.17.5に新装(non-rt)、かれこれ2時間ぐらいCuBoxで様子をみています。
URB関連のエラーの有無を見るにはもう少し時間が必要ですが、yoさんの状況とは異なり、現在までNAS経由(CIFS)の音楽ファイルの再生にはまったく問題ありません。DSD128, DSD64, PCMいずれも音質については従来通り高品位な再生音です。
BBBではpreemptのカーネル(3.8.13-bone26)でしかmpdを動かしていないので参考にはならないと思われますが、BBBでのDSD128/64の再生についてもこれまで中断その他の問題は経験しておりません。
twl
yoさん
flac24/192で、yoさんが書かれている音切れが発生しました。
twlさんのところでは発生していないことから、rtオプション無しのmpd(0.17.5)で再生したところ、上記音切れは発生しないようです。
mpdだけの問題ではないのでしょうが、この辺から攻めていくしかないかもしれません。
思いつく対策は、
・rt無しのmpdを使用する(効果あり)
・rt有りのmpdを使用し、chrt -f -p 53 `pgrep mpd`と設定する(未検証)
・rt有りのmpdを使用し、mpd.conf内のpriorityを見直す(未検証)
tinkerさん
3.10.9-rt5情報ありがとうございます、3.10.6-rt3は、やはり数時間でurbエラーが出ていたので、早速3.10.9-rt5をビルドしてみました。.configは3.10.6-rt3で作ったやつでいけました。今回はurbエラーも修正されている可能性が高いとのことなので、期待しつつテストしてみます。
また、現状自分の環境では3.8.xと比べて特にcpu負荷が高くなってはいないようです。
tinkerさん
アドバイスありがとうございます。さすがの難問もようやく解決したようです。二つのトラブルが同時に絡み合って発生したため幻惑されたというということですかね。
一つ目のトラブルは最新のrtカーネルでwav又はdsdを再生中にmpdハングアップが発生するというもの。urbエラーが出力されるものはこのトラブルです。この問題は3.10.9+rt5で解決されたようですね。
もう一つのトラブルは最新のrtカーネルで何らかの仕様変更があり、yanさんのrtoptパッチが対応出来ていないため、dsd再生が中断することがあるというもの。こちらは、当面、tinkerさんが提示された解決方法か古いrtカーネルを使うという方法で回避するしかないようです。
こちらはsyuさんのスレッドで話題になっているようにnasとネットワークをチューニングして解決するという手も有るようですね。
BBBからはじまって、悪戦苦闘しましたが、ようやく光が見えてきたようです。
yoさん
wandboardの場合、rtにできるVerが3.10.xしかないので必死(笑)で調べたのですが、USBのhigh speedの方にはいろいろ問題があるみたいですね。
こんなpatchもあるみたいで、先に紹介したpatchを当てる前に使っていました。
https://launchpadlibrarian.net/140553725/ehci-split-bugs" target="_blank">https://launchpadlibrarian.net/140553725/ehci-split-bugs
>rt有りのmpdを使用し、mpd.conf内のpriorityを見直す(未検証)
どのくらいが適切なのか分からないので、全体を-5したものと-10したもので試してみました。
-10だと試した時間内では音切れは出ませんでした。ただ何というか。。。息苦しさ?抑圧感?みたいな感じがあって、あまり好きになれないです。当然、環境によって異なるとは思いますが。
今回の成果はBBBの方にも反映できそうですね。
現在、3.10.8でマージされたpatchを当て、個人的に不要になった部分(swap、nfs)を削ったものを動かしています。
DSDの検証は出来ないので、yoさんが時間取れるときにでも、同様の仕様で検証をして頂ければと思います。
tinkerさん
> 現在、3.10.8でマージされたpatchを当て、個人的に不要になった部分(swap、nfs)を削ったものを動かしています。
これはNelson版の3.10.xを使い、対応するrtパッチをあてたという意味ですか。
実は古いカーネルに戻せば何とかなるかなと考え、Nelson版の3.6.x(xは11なので対応するrtパッチはあります)を使って試そうとしているところです。
yoさん
>これはNelson版の3.10.xを使い、対応するrtパッチをあてたという意味ですか。
BBBの3.8-rtに当てました。patchは3.8以上(もしかすると3.6でも使えるかも)で使えます。
twlさんが使われているmpd-dsdを試しています。本家の0.17.5より爽やかな感じです。
皆さん
3.10.9+rt5で24時間以上テストを続けましたが、urbエラーは起こりませんでした。
nfsにしてからはほぼ数時間でNGだったのを考えると私の環境ではもう起こらないでしょう。
音質は少なくとも3.8.X系に劣っていることは無いと思うので、3.8.11から移行いたします。
自分の環境を一応載せておきます。
MuboxないしArch linuxでmpd0.17.4の安定版+yanさんのrtパッチ
Javs X-DDC使用
ソースはalacが大半、全てPCMです(DSD環境はありません)
NAS(ReadyNas Ultra)をGigabit hub経由で有線接続、nfsでrsize=8192にしています。
fHIroさん
NFSでも大丈夫そうですね。
>NAS(ReadyNas Ultra)をGigabit hub経由で有線接続
ReadyNasはNFS4ですか?
私が使っているQNAP TS-212はNFS3で、Arch Linuxだとなんか設定しないといけないみたいで、面倒なので最近cifsを使っています。
ただArch Linuxはほとんど使ってなくて、定期的にUPDATEだけ動かしています(なかなか馴染めないです)
tinkerさん
別スレッドの話題ですが、
>QNAP TS-212はNFS3で、Arch Linuxだとなんか設定しないといけない
あら、そうなんですか。わたしはcifsとnfs、両方設定したらnfsが接続できなくなると誤認していました。archからはnfs4でなくnfs3で接続しなきゃいけなかったんですね。
スレ違い、ご容赦。
tinkerさん
Readynas ultraですが、NFS3のようです。マニュアルでもそうですし、nfsstat -mで見ても、vers=3でした。
nas側設定はNFSを有効にする以外は割り当てるスレッド数のみです。arch側はnfs関連に加えてrpcbindサービスを入れたと思います。(確かarch wikiを見てやりました)
今回バージョン確認でnfsstat -mを見て気づいたんですが、プロトコルがtcpになっていました。
udpの方が軽そうなので/etc/fstabで試しに明示的にudpを指定してみたところ、マウント不可でした。
tinkerさん
BBBの3.8-rtにdrivers/usb/host/ehci-sched.cのパッチをあて、mpdをmpd-dsdに入れ換えBBBで試してみました。カーネルビルドのコンフィグはtinkerさんのfeを使いました。
これで全て解決と期待して試したのですが、BBBはそんなに甘くないですね(^^;;;。見事に失敗、dsd再生の中断、mpd(カーネル)のハング、両方とも発生します。nas、dffファイルなどは全く同じ条件で(nfsです)、cubox 3.10.9+rt5でmpd-dsdに入れ換え試したら、こちらは全く問題なし。見事に再生できます。
面白いのは、例によってnexus7でcpu負荷状況をモニターしながら聴いたのですが、cuboxは問題が起こる以前の3%~6%位の負荷状況なのに、BBBは以前と同じく10%以上のcpu負荷となること。多分これが諸悪の頑強だと思います。何が原因でこうなるのかが分からないのですが。
ということで、BBBに関しては振出に戻るです。ウームだなぁ(^^;;;。
仰るように、mpd-dsdは素晴らしく音がいいですね。音の透明感が最高、とてもリアルです。これはお勧めですね。これでyanさんのパッチがかけられれば、鬼に金棒なのだけど。
fHiroさん
ReadynasもNFS3なんですね。
Archってこまめに見てないと、突然、設定が大幅に変更されるんですよね。
面倒くさがりなんで、もう全部Debianでいいよ~って感じに最近なってきています^^;
yoさん
検証ありがとうございます。
やっぱりBBBは手強いですね。
こちらは16/44.1専用って割りきってメインで使ってます。
wandboardもだいぶ良くなりましたが、まだまだBBBのほうが良いです。
3.10.10-rt7が出ていたので、cuboxに入れてみました。3.10.9-rt5で使った.conifgを使ってmake oldconfigで特に追加も無くビルドも滞りなく完了。とりあえずMuboxに入れましたがurbエラーが復活する事も無く、正常稼動しています。
urbエラーの出ないrtカーネルだと、nfsで基本OKなんですが、rsizeを65536にするとたまにノイズが乗るので8192にしています。
urbエラーの出るカーネルだと、65536は数分しか持たずに止まります、1024だとかなり粘る感じ(数時間程度)
いずれもPCM(44.1kh)の場合です。