Доброго времени суток!
Пишу прогу для тестирования скорости накопителей (многократные чтения и записи одного файла) под 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 ), — несколько итераций отрабатывает и потом читает из кэша (обращения к накопителям нет)
как это победить? по инету полазил, почитал, ничего путного не предлагают