Вот тут надо написать демона который из shared memori данные сохраняет в файл каждые N секунд. Вроде всё тривиально open()
write()
fsync() nanosleep()
и опять на write. Если пора заканчивать работу то close().Хочется чтобы данные точно были на носителе, поэтому и вызываю fsync().Написал я демона, но только совсем смешной поток получаю, при записи данных на файловую систему. dd выдает поток в:
dd if=/dev/zero of=/mnt/mmcblock0/test count=100 bs=1024
100+0 records in
100+0 records out
102400 bytes transferred in 0.018828 seconds (5 438 698 bytes/sec)
моя же прога при тех же условиях работы count=100 bs=1024 выдает 65 282 bytes/sec
Посмотрев на strace dd видно что fsync() не вызывается не разу а время окончания операции копирования отмечается после close() над дискриптором файла куда копировали. Тоесть, данные сидят в кеше файловой ситемы, а dd показывает ,с какой скоростью он туда их запихивает.
Возник вопрос а честно ли вобще мерить поток данных на вайловую систему утилитой dd. А если нет то тогда чем??