Linux read() システムコールのサンプリングレート、ジョブスケジューリング、RT_PREEMPT

Linux read() システムコールのサンプリングレート、ジョブスケジューリング、RT_PREEMPT

私はMeasurementComputing PCIe-DAS1602/16 DAQを使用しています:

https://www.mccdaq.com/pci-data-acquisition/PCIe-DAS1602-16.aspx

Warren Jasperによって作成されたLinuxデバイスドライバの使用:

https://github.com/wjasper/Linux_Drivers/tree/master/PCI/pci-das1602-16

一部の微分方程式を解くための情報を読み、その情報を書き換えています。タイミング統計を実行してみると、96%の時間がread()に費やされたことがわかりました。正確に言えば48マイクロ秒です。ボードの待ち時間は10マイクロ秒ですが、さらに38マイクロ秒が発生するのは私にとってはやや大きいようです。私は仕事をスピードアップしたかったので、(1)優先順位の予約や(2)RT PREEMPT Linuxカーネルの使用はすべて読み取り()時間に影響を与えないことがわかりました。私は今「バグ」がデバイスドライバ自体にあると思います。 read() へのより速い選択肢があるか、パフォーマンスを向上させるために使用できるオプションがあるかどうかを知りたいです。

ベストアンサー1

I / Oはイベントベースなので非常に遅いです。ここで、ボトルネックはカーネルよりも実際のデバイスである可能性が高いです。

おすすめ記事