Чтение и запись без кеширования
От: MASReady  
Дата: 07.10.16 12:11
Оценка:
Доброго времени суток!

Пишу прогу для тестирования скорости накопителей (многократные чтения и записи одного файла) под debiah, нужно чтобы она могла писать и читать файлы на накопители (USB, SATA, IDE,...) с отключенным кешированием чтения и записи.
В Windows есть флаг FILE_FLAG_NO_BUFFERING для открытия файлов, есть ли что-нибудь подобное для linux?

Сейчас сделал так:
1) запись — open( glTestFilePath.toAscii( ), O_CREAT | O_WRONLY | O_SYNC ) +
write( fd, glWriteBuffer, BytesToWrite) +
fsync( fd ) +
lseek( fd, 0, SEEK_SET ), для записи вроде прокатило накопитель отрабатывает каждую операцию.
2) чтение — open( glTestFilePath.toAscii( ), O_RDONLY | O_SYNC | O_DIRECT ) или open( glTestFilePath.toAscii( ), O_RDONLY | O_SYNC ) или просто open( glTestFilePath.toAscii( ), O_RDONLY ) +
read( fd, ReadBuffer, BytesToRead)+
fsync( fd ) +
lseek( fd, 0, SEEK_SET ), — несколько итераций отрабатывает и потом читает из кэша (обращения к накопителям нет)

как это победить? по инету полазил, почитал, ничего путного не предлагают
Отредактировано 07.10.2016 12:11 MASReady . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.