Estou tentando entender como o cache de write-back em um controlador RAID pode continuar a gerar benefícios enquanto você escreve um enorme conjunto de dados aleatório.Deixe-me primeiro dizer que entendo como funciona um cache de write-back: o sistema operacional obtém uma conclusão de E/S em uma gravação quando os dados atingem o cache do controlador em vez do meio subjacente mais lento, e o controlador então grava os dados no meio o mais rápido possível. Então, sendo esse o caso,se você estiver gravando dados muito rapidamente, mais rápido do que a mídia de suporte pode gravá-los, eu esperaria explodir o cache do controlador e o ganho de desempenho de ter um write-back para desaparecer, e você acabaria com desempenho equivalente a um configuração de gravação?
O que descrevi acima é o que eu esperava, mas não é o que estou vendo. O servidor com suporte de cache de write-back tem consistentemente IOPS e taxa de transferência pelo menos 4x maiores e os sustenta; em comparação com um servidor idêntico que coloquei no modo write-through. Alguma idéia de como explicar esse comportamento?
E sim, estou escrevendo dados mais do que suficientes para saturar o cache do sistema de arquivos e muito rapidamente.
Responder1
O cache de write-back permite que o sistema operacional organize melhor os dados antes da gravação, aumentando assim o desempenho. Se você fizer muitas gravações relativamente pequenas, simplesmente juntar os dados de várias gravações consecutivas e gravá-los na mídia de uma só vez melhorará significativamente o desempenho.
Em menor grau, o cache de write-back pode ajudar o sistema operacional a corresponder ao tamanho do cluster durante as gravações. Por exemplo, se você gravar 10.000 bytes por vez e o tamanho do cluster for 8.192 bytes, o armazenamento em cache impedirá que o sistema operacional grave 1.808 bytes em um cluster parcialmente preenchido (o que exigiria a leitura do cluster primeiro).