0

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

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

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

我假设这个问题是由内核中的某些东西引起的,而不是我的应用程序,但我不知道从哪里开始寻找。非常感谢您解释我的问题最可能出在哪里。

谢谢

马特

4

1 回答 1

1

检查 linuxpdflush可调参数:http ://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 回答