0

私は現在、ラズベリーパイでラズビアンを実行しています。その中で、センサーから400Hzで生データをサンプリングしてファイルに記録するアプリケーションを実行しています。私の問題は、SDカードへの内部バッファ書き込みが原因で、プログラムが10〜15秒ごとに約500ミリ秒から1秒ハングすることです。

次のコードを使用してバッファを0に設定しようとしましたが、これは何の違いもなかったようです。また、flush()の使用中も違いはありません。

std::fstream Log;
Log.rdbuf()->pubsetbuf(0, 0);

この問題は、アプリケーションではなくカーネル内の何かが原因で発生していると思いますが、どこから探し始めればよいのかわかりません。私の問題がどこにある可能性が高いかについての説明をいただければ幸いです。

ありがとう

マット

4

1 に答える 1

1

Linuxの調整可能ファイルを確認してくださいpdflushhttp ://www.westnet.com/~gsmith/content/linux-pdflush.htm

私が最初に試みることは、ページの有効期限を早くすることです。たとえば、に設定/proc/sys/vm/dirty_expire_centiseconds500ます。それがうまくいかない場合は、それと一緒に減らしてください/proc/sys/vm/dirty_writeback_centisecsdirty_expire_centiseconds

一般に、これによりシステムの全体的なパフォーマンスが低下する可能性があることに注意してください。積極的なキャッシングには理由があります。ただし、あなたの場合、これは書き込みをより規則的にすることで役立つ場合があります。

于 2013-02-20T23:25:50.003 に答える