[Core] Отключение кеширования файлов на ОС-уровне.
От: VladCore  
Дата: 15.05.19 18:13
Оценка:
В Windows кто не в курсе отключить кеширование и чтения и записи можно в конструкторе FileStream секретной опцией:

const int FILE_FLAG_NO_BUFFERING = 0x20000000;
using (var stream = new FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read, buffer.Length,
    (FileOptions) FILE_FLAG_NO_BUFFERING | FileOptions.WriteThrough))
{
   ....
}

Думаю это только и только в Windows.

Пока писал вопрос нагуглил что в линуксе нужно передавать O_DIRECT
# define O_DIRECT 040000

но есть ограничения: https://stackoverflow.com/a/4705680

Напомните кто gcc помнит 040000 — это по-нашему (шучу) будет 0x4000?

Интересно а в линуксе можно одновременно и FileOptions.WriteThrough и O_DIRECT передавать в опициях?

Для Windows лично проверял правда только в .NET Framework. Для линукса только что нашел.

P.S. И чтоб два раза "не вставать" на macOS все сложнее: https://stackoverflow.com/a/2307055
Отредактировано 15.05.2019 19:32 VladCore . Предыдущая версия . Еще …
Отредактировано 15.05.2019 18:39 VladCore . Предыдущая версия .
Отредактировано 15.05.2019 18:20 VladCore . Предыдущая версия .
Отредактировано 15.05.2019 18:17 VladCore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.