Confuso por sinalizadores de cache de gravação

1

Estou procurando maximizar o desempenho do meu disco rígido, ativando o cache de gravação. Eu entendo os riscos em fazer isso, mas acredito que eles sejam insignificantes para como eu vou usá-lo.

Na guia HD Properties no Windows, as duas últimas opções são um pouco confusas:

Enable write caching on device - ok, mas como isso funciona em conjunto com a opção anterior? Ele substitui o armazenamento em cache do Windows ou trabalha com ele?

Turn off Windows write cache - Ok, mas por que eu faria isso? E se eu assinalar essa caixa, a opção Melhor desempenho ainda estará selecionada, contradizendo a si mesma.

Alguém pode ajudar a esclarecer exatamente o que esses sinalizadores fazem e como eles afetam / dependem um do outro.

    
por userSteve 27.04.2017 / 11:25

3 respostas

1

Você precisa entender como os dados são gravados no disco.

Você tem alguns subsistemas envolvidos no processo de gravação dos dados do processo para o disco físico.

Normalmente, os processos estão pedindo ao kernel (o SO) para gravar algo no disco. O próprio kernel também pode gravar alguns dados no disco, e. como uma operação de troca.

As páginas de memória que precisam ser gravadas no disco são mantidas em uma região da memória física chamada cache do sistema de arquivos e são chamadas de páginas sujas e serão gravadas no disco se uma das condições for verdadeira:

  • o processo está pedindo ao kernel para gravar os dados no disco usando FlushFileBuffers chamam
  • depois de um certo tempo desde a última gravação disco
  • se não houver memória livre para o cache do sistema de arquivos (é uma decisão complexa feita pelo kernel se ele deve descartar páginas não sujas, gravar em discos sujos, trocar páginas de memória inativas, etc ...)

Agora os dados vão para o disco, mas o subsistema de disco tem dois componentes que são importantes para essa explicação:

  • o controlador de disco, que é a placa eletrônica no disco
  • a memória permanente que pode ser discos magnéticos ou memória flash
controladores de disco modernos têm alguns módulos de memória que são chamados buffer de disco . Se isso for ativado, os dados liberados para o subsistema de disco serão gravados no buffer de disco e a operação será considerada concluída pelo SO e pelos programas, mas os dados ainda não estão no disco. O problema é que, se você reinicializar sua máquina, você tem chances muito altas de perder dados. Você pode não perceber isso até ter uma corrupção do sistema de arquivos ou corrupção do banco de dados.

Aqui estão alguns motivos pelos quais processos ou SO precisam liberar os dados no disco:

  • eles têm um diário para um sistema transacional como um banco de dados ou sistema de arquivos e precisam impor consistência e integridade para o dados gravados no disco.
  • eles concluíram uma operação importante, como a criação de um arquivo e um buffer de disco, para garantir que o arquivo inteiro esteja no disco
  • programação ruim

A configuração atual é o melhor compromisso entre desempenho e segurança, a menos que você tenha um no-break (fonte de alimentação ininterrupta).

    
por 10.05.2017 / 06:04
1

A segunda opção não é "cache do windows", como você diz, mas a inibição da chamada do sistema "flush": Turn off Windows write cache buffer flushing

Esta opção desabilitaria o comando flush chamado por algum aplicativo (e no desligamento da máquina), cuja finalidade é efetivamente gravar o cache de disco no disco.

Não desabilitará o cache de gravação.

Você pode tentar ativar essa opção, com risco de perda de dados, mas, dependendo do contexto, o ganho de desempenho pode não ser perceptível.

    
por 04.05.2017 / 19:04
1

Realmente, a diferença é destacada nas Políticas de Remoção. Isso parece uma pergunta semelhante para: link

    
por 06.05.2017 / 01:17