Я использую эталон ввода-вывода для измерения производительности ввода-вывода в системе. Тест производительности записывает файл на диск с использованием различных примитивов ввода / вывода (write, pwrite, mmap и т. Д.) И сообщает о производительности. В документации этого теста указано, что во избежание нереалистичных результатов, которые могут возникнуть из-за эффектов кэширования, необходимо написать файл, который по крайней мере равен размеру основной памяти в системе.
Мой вопрос: если вы используете fsync
в своей программе, разве это не должно обойти эффекты кэширования, поскольку оно сбрасывает неписанные буферы ввода / вывода на диск? Я спрашиваю об этом, потому что наша система имеет 64 ГБ оперативной памяти, и запись файлов по 64 ГБ каждый раз для наших экспериментов занимает много времени. Если бы я мог написать файл меньшего размера, например 4G или 8G, тесты прошли бы быстрее.
Я использовал fsync в примере программы и убедился, что при использовании fsync эффекты кэширования обычно не видны, но мне любопытно узнать, что люди говорят, и почему авторы тестов не сделали то же самое.
Заранее спасибо.