Назад | Перейти на главную страницу

Смущает запись флагов кеша

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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