PX-MLT8PEでトラブル発生
simplelife0530 opened this issue · 3 comments
トラブルが発生していますが、PX-MLT8PEが原因かMirakurunが原因かわかりません。
1.トラブル内容
PX-MLT8PE、Mirakurun、EPGStation、Ubuntu20.04の構成で録画サーバーを運用。
地上波6チャンネルの全録を行うと、12~24時間でMirakurunのメモリ利用が600MBを越え、
エンコード処理が8倍速から4倍速へ低下。
PX-Q3PE4で同じ構成のマシンでは、地上波4チャンネル、BS2チャンネルで全録を行っても
メモリ利用は180MB程度で安定しています。エンコード処理は、6倍速以上で安定。
2.原因
何らかのメモリーリークが発生している。Mirakurun 3.5.0で共通であるにも関わらず、
挙動が大きく異なっている。PX-MLT8PEのドライバの可能性はないか。
同時に6チャンネルで行わない場合は、特に問題なく動作していたように思う。
MirakurunかPX-MLT8PEドライバのどちらかに原因があるように考えられますが、
切り分ける何か方法はありますか?
切り分け方法というよりも改善案になってしまいますが、考えてみました。
考察
まず前提として、PX-MLT5PEやPX-MLT8PEなどのデバイスが出力するTSには、PX-Q3PE4などと比較してNULLパケットが多く含まれるため、ビットレートが高くなります。(MLT系の地上波は30Mbps程度, U4・PE4系の地上波は16~18Mbps程度)
恐らく、この高ビットレートなTSをMirakurunが処理するとNode.jsのGCが消極的になり、メモリ使用量が増加するのではないかと思います。
(そして、ドライバにおけるTS受信処理や受信後のTSデータなどに関して、NULLパケット以外に両者の差異が思い当たりませんでした。)
改善案
この問題はTSをMirakurunへ渡す前にNULLパケットを除去することによって改善する可能性がございます。
以下の手順にて、px4_drvへNULLパケット除去の設定が可能ですので、お試しください。
-
以下の1行を記述したファイルを「/etc/modprobe.d/px4_drv.conf」へ保存する
options px4_drv discard_null_packets=Y
-
px4_drv.koを再ロードする or システムを再起動する
回答ありがとうございます。
毎日録画するたびに、nns779さんへ感謝して使わせていただいています。
以下の改善案、試してみます。
- 以下の1行を記述したファイルを「/etc/modprobe.d/px4_drv.conf」へ保存する
options px4_drv discard_null_packets=Y- px4_drv.koを再ロードする or システムを再起動する
2日ほどで結果は出ると思いますので、また報告させていただきます。
パケット除去、実行してみました。
いくらか改善されたように見えましたが、午前1時頃にはエンコード速度が1倍まで低下しました。
Mirakurunは、最初メモリ使用量100MB程度でしたが、6チャンネル全録予約で、280MBになりました。
そして、午前1時には、4.7GBで、スワップが2GBと100%になってしまいました。
この時iowaitは、45%でした。
朝8時には、エンコード待ちが30番組くらいになりました。そこで、予約を全部取り消すと
エンコード速度は7倍程度になり、Mirakurunのメモリ使用量は、3.1GBになりました。
やはり、PX-MLT8PEとPX-Q3PE4では、Mirakurunの動作がかなり違います。
まずは、Mirakurunの作者に、情報を入れてみます。