Я пишу код C с некоторыми ограничениями в режиме реального времени. Я проверял скорость можно записать на диск с DD:Не удается достичь скорости dd
дд, если =/DEV/нуль =/DEV/SDB шс = 32K кол = 32768 Oflag = прямой
Об этом пишет 1 Гб нулями до/DEV/SDB в 32К блока размером
Я достигать около 103 Мбайт/с с этим
Теперь я программно сделать что-то подобное:
open("/dev/sdb",O_WRONLY|O_CREAT|O_DIRECT|O_TRUNC, 0666);
я получаю значение временной метки записывать из буфера 32 КБ в/dev/sdb 10 000 раз (в цикле for) получить другое значение времени сделать немного количества хрустов, чтобы получить скорость в МБ/с, и это около 49 МБ/с
Почему я не могу достичь той же скорости, что и dd? В strace показана ту же открытую команду, которую я использую.
Показать код или методику расчета скорости передачи. Я предполагаю, что вы ввернули один из двух ... –
Спасибо, это была проблема, я все-таки добиваюсь такой же скорости. Извините, чтобы тратить время на все. – dschatz