В настоящее время я запускаю raspbian на малине pi, в рамках которой я запускаю приложение, которое производит выборку необработанных данных с частотой 400 Гц с датчика и регистрацию его в файл. Моя проблема заключается в том, что программа зависает от 500 мс до 1 с каждые 10-15 секунд из-за того, что на SD-карту записана некоторая внутренняя запись буфера.Задержка во время записи диска при записи данных
Я попытался установить буфер 0, используя следующий код, но это, кажется, не сделали никакой разницы, и ни при использовании флеш()
std::fstream Log;
Log.rdbuf()->pubsetbuf(0, 0);
Я предполагаю, что эта проблема вызвано чем-то в ядре в отличие от моего приложения, но я понятия не имею, с чего начать искать. Было бы весьма полезно получить объяснение того, где моя проблема, скорее всего, ложь.
Благодаря
Matt
Каков фактический объем данных, записываемых в файл в секунду? – us2012
Я вижу это, как правило, из-за буферизации в ОС при записи в файлы на диске. Я использую 'flush' после каждой записи. Lookup 'stdbuf', это может стать полезным. –
@Aater Я тоже об этом думал, но с потоком данных, написанных с постоянной скоростью, грязные страницы истекали непрерывно, верно? Разве это не приводит к более частым, но коротким зависаниям, а не к 1 с каждые 10? – us2012