Путать флаги кэша записи

Я рассчитываю увеличить производительность моего жесткого диска, включив кэширование записи. Я понимаю риски, связанные с этим, но считаю, что они незначительны для того, как я буду это использовать.

На вкладке " Свойства HD " в Windows последние два параметра немного сбивают с толку:

Enable write caching on device - хорошо, но как это работает в сочетании с предыдущим вариантом? Он перекрывает кэширование окон или работает вместе с ним?

Turn off Windows write cache - Хорошо, но зачем мне это делать? И если я поставлю галочку в этом поле, то опция Better Performance все равно будет выбрана, что противоречит самому себе.

Может кто-нибудь помочь понять, что именно делают эти флаги и как они влияют / полагаются друг на друга.

3 ответа

Решение

Вы должны понимать, как данные записываются на диск.

У вас есть пара подсистем, участвующих в процессе записи данных из процесса на физический диск.

Обычно процессы просят ядро ​​(ОС) что-то записать на диск. Также само ядро ​​может записать некоторые данные на диск, например, в качестве операции выгрузки.

Страницы памяти, которые должны быть записаны на диск, хранятся в области физической памяти, называемой кэш- памятью файловой системы, и называются грязными страницами, и они будут записаны на диск, если выполняется одно из условий:

  • процесс просит ядро ​​записать данные на диск с помощью вызова FlushFileBuffers
  • через определенное время с момента последней записи на диск
  • если нет свободной памяти для кэша файловой системы (это сложное решение, принятое ядром, если оно должно отбрасывать не грязные страницы, записывать на грязные диски, заменять неактивные страницы памяти и т. д...)

Теперь данные будут отправлены на диск, но дисковая подсистема имеет 2 компонента, которые важны для этого объяснения:

  • контроллер диска, представляющий собой электронную плату на диске
  • постоянная память, которая может быть магнитными дисками или флэш-памятью

Современные контроллеры дисков имеют некоторые модули памяти, которые называются дисковым буфером. Если это активировано, данные, сброшенные в дисковую подсистему, будут записаны в дисковый буфер и операция будет считаться завершенной ОС и программами, но данные еще не находятся на диске. Проблема в том, что если вы перезагрузите компьютер, у вас очень высокие шансы потерять данные. Вы можете не заметить этого, пока у вас не будет повреждена файловая система или база данных.

Вот несколько причин, почему процессы или ОС должны сбрасывать данные на диск:

  • у них есть журнал для транзакционной системы, такой как база данных или файловая система, и они должны обеспечивать согласованность и целостность данных, записанных на диск.
  • они завершили важную операцию, такую ​​как создание буфера файла и диска, который они хотят убедиться, что весь файл находится на диске
  • плохое программирование

Текущая конфигурация - лучший компромисс между производительностью и безопасностью, если у вас нет ИБП (источник бесперебойного питания).

Второй вариант не "кэширование окон", как вы говорите, а запрет системного вызова "сбросить":Turn off Windows write cache buffer flushing

Эта опция отключает команду сброса, вызываемую некоторым приложением (и при выключении компьютера), целью которого является эффективная запись дискового кэша на диск.

Это не отключит кэш записи.

Вы можете попытаться включить эту опцию, рискуя потерять данные, но в зависимости от вашего контекста прирост производительности может быть незаметным.

На самом деле разница выделена в Политике удаления. Это похоже на вопрос, подобный следующему: https://superuser.com/questions/215372/what-does-write-cache-buffer-flushing-mean

Другие вопросы по тегам