5

おそらくバージョン 3.3 前後の arago ディストリビューションを使用して、組み込み Linux プロジェクトに取り組んでいます。

ミリ秒ごとにプロセスをウェイクアップする高解像度の Linux タイマーを構成しました。これは問題なく動作しますが、タイミングに関して 2 つの問題があります。

  1. 起床時間のジッター
  2. プロセスによって実行される処理が一定であるにもかかわらず、起きているときの処理時間の変動性。

これらの問題は、Linux のリアルタイム性に欠けるパフォーマンスに起因すると考えています。しかし、リアルタイムのパフォーマンスを改善する方法を調査する必要があります。

カーネルがリアルタイムに適した CONFIG_PREEMPT カーネル オプションで構成されていることを確認しました。

また、プロセスに SCHED_FIFO スケジューリング クラスを適用しました。

struct sched_param schedparm;
memset(&schedparm, 0, sizeof(schedparm));
schedparm.sched_priority = 1; // lowest rt priority
sched_setscheduler(0, SCHED_FIFO, &schedparm);

しかし、それは違いはありませんでした。

PREEMPT_RT パッチをカーネル ビルドに適用するのが論理的な手順だと思いますが、その方法はまだ特定できていません。

ジッター/持続時間の変動性を改善するために他にできることはありますか?

または、PREEMPT_RT パッチの適用方法に関するアクセス可能なチュートリアルを提案できる人はいますか?

4

2 に答える 2

1

PREEMPT_RT が論理的な次のステップのようです。このチュートリアルを試しましたか?

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

更新:他の人がプリエンプティブ カーネルを構築する方法を確認することをお勧めします。たとえば、こちら: https://aur.archlinux.org/packages/linux-rt/

PKGBUILD を読んで、何が行われたかを理解できます。

于 2012-12-05T12:11:30.730 に答える
0

Debian テストまたは LMDE を使用している場合、x86 および amd64 アーキテクチャ用のリポジトリにプリコンパイル済みの PREEMPT_RT カーネルがあります。

apt-get install linux-image-rt-686-pae

また

apt-get install linux-image-rt-amd64
于 2013-04-26T16:33:23.047 に答える