У меня есть файловый дескриптор, к которому я всегда пишу два поплавка. Обратите внимание, что я всегда вызываю rewind(), прежде чем писать что-либо в файл, а это значит, что я всегда пишу в первую строку. В принципе, подумайте об этом как о поддержании «текущего состояния» внутри файла. Я также вызываю fflush() после записи на него. Я столкнулся с латентными всплесками в моем приложении, и когда я проверил, я обнаружил, что fflush() занимает обычно около 2-3 микросекунд (да, у меня есть злой быстрый сервер), но в другое время (после примерно 6-7) нормальная запись -flush cycles ") Я вижу, что время, затраченное на тысячи раз (15000+ микросекунд)Почему fflush() принимает переменное количество времени, очищая одну и ту же часть данных
Можете ли вы рассказать мне, что я должен проверить в этом сценарии? Как исправить/отладить эту проблему?
Ну, вы пишете на хранение какой-то, возможно (вы не сказали) HDD. Два локальных механизма хранения, о которых я могу думать (жесткие диски и твердотельные накопители), будут иметь разное время отклика, основанное на том, что еще они должны делать. 150000 * микро * секунд по-прежнему * очень короткий период времени *. –
Помогло ли использование файла с отображением памяти? – Chani
@Wildling * Использовал бы файл с отображением памяти? * Прочитайте [этот пост] (http://marc.info/?l=linux-kernel&m=95496636207616&w=2) из Linux Torvalds. 'mmap()' is ** NOT ** какая-то магия, которая делает все быстрее. –