记录数据时磁盘写入期间的延迟

时间:2013-02-20 22:58:18

标签: c++ linux raspbian

我目前正在树莓派上运行raspbian,我正在运行一个应用程序,它从传感器以400Hz采样原始数据并将其记录到文件中。我的问题是由于一些内部缓冲区写入SD卡,程序每隔10-15秒就会挂起500ms到1s左右。

我已经尝试使用以下代码将缓冲区设置为0,但这似乎没有任何区别,并且在使用flush()

期间也没有
std::fstream Log;
Log.rdbuf()->pubsetbuf(0, 0);

我认为这个问题是由内核中的某些内容引起的,而不是我的应用程序,但我不知道从哪里开始查找。我非常感激地解释我的问题最有可能存在的地方。

由于

马特

1 个答案:

答案 0 :(得分:1)

检查linux pdflush可调参数:http://www.westnet.com/~gsmith/content/linux-pdflush.htm

我要尝试的第一件事是让网页更快过期,例如将/proc/sys/vm/dirty_expire_centiseconds设置为500。如果这不起作用,请随之减少/proc/sys/vm/dirty_writeback_centisecsdirty_expire_centiseconds

请注意,一般情况下,这可能降低系统的整体性能 - 积极的缓存是有原因的。但是,在您的情况下,这可能有助于使写入更加规则。

相关问题