sirakawa
2022年4月18日 22時35分
お世話になっております。
Armadillo-810にてカメラ動画を外部に出力する機器を開発中です。
基本的に以下の2つのアプリケーションを動作させています。
(a)10ms周期で外部とシリアル通信をするアプリケーション(SCHED_FIFO)
(b)gstreamer(SCHED_OTHER)
(a)のシリアル通信周期を守るため、カッコ内のリアルタイムポリシーとしています。
定常状態であれば(a)の通信は問題無いのですが、
(b)の起動時、停止時に(a)の通信が不安定となって困っています。
(b)のどんな処理が高負荷なのか、確認する方法はありますでしょうか?
コメント
sirakawa
コメントありがとうございます。
> 実行時にnice値を変更して
> (a)の優先度を上げてみるとどうなりますでしょうか?
(a)のnice値を変更しても動作に変化はありませんでした。
カメラ入力などの負荷が重たく、スケジューラ動作に影響があるのだと想定しています。
> また、ご使用のユーザーランドはAtmark-Distでしょうか、Debianでしょうか。
> ご確認よろしくお願いいたします。
Atmark-Distを使用しています。
設定として、Kernel Configの「Kernel HZ (jiffies per second)」を「128」から「1024」に変更して使用しています。
at_mizo
sirakawa
at_mizo
溝渕です。
> 確認結果としては
> v4l2src → fakesink だけで高負荷となっているようでした。
> 以下の想定の動きになっていそうですね。。。
> >カメラ入力などの負荷が重たく、スケジューラ動作に影響があるのだと想定しています。
負荷にも色々あるので、まず最初に切り分けるのが良いかと思います。
バス/メモリ負荷であれば、取得する画像サイズを小さくすると挙動が変化すると思います。
CPU負荷やソフトウェアのバグであれば、画像サイズを小さくしても挙動に変化は無いはずです。この場合はGstreamer以外のキャプチャアプリケーションを用意して、userland/kernelのどちらが問題かを切り分けるのが良いかと思います。
at_akihito.irie
2022年4月19日 14時52分
入江です。
直接的な回答でなく申し訳ございませんが、実行時にnice値を変更して
(a)の優先度を上げてみるとどうなりますでしょうか?
また、ご使用のユーザーランドはAtmark-Distでしょうか、Debianでしょうか。
ご確認よろしくお願いいたします。