Cache ARC do ZFS e contenção do cache Linux Buffer (Ubuntu 16.04)

3

A configuração do meu sistema de teste é um simples disco raidz de 5 discos (8 TBs cada) com 256 GB de RAM. O desempenho começa bem, alcançando uma taxa de transferência de cerca de 650 MB / s. Eventualmente, o cache Buffer do Linux é preenchido e começa a fazer com que o cache do ARC do ZFS diminua até atingir o tamanho de 32 MB. Quando isso ocorre, o rendimento cai para cerca de 60 MB / s.

Eu tentei algumas opções de ajuste do kernel, como a configuração de vm.vfs_cache_pressure para 200, mas não alterei o problema.

Minha solução atual é definir / sys / module / zfs / parameters / zfs_arc_min para 128 GB e zfs_arc_max para 252 GB. Por causa do cache de buffer do Linux, o ARC nunca cresce acima de 128 GB, mas o desempenho fica em um nível de throughput de 650 MB / s para toda a transferência de dados.

Idealmente, gostaria de poder desativar o cache de buffer Linux todos juntos e permitir que o cache do ARC do ZFS fique entre 0 e 256 GB de memória, deixando o restante da memória disponível para a carga de trabalho do aplicativo. Se fosse possível dar ao cache ARC do ZFS uma prioridade maior que o cache de buffer do Linux, isso também seria uma resposta aceitável, pois desabilitaria efetivamente o cache de buffer do Linux.

Obrigado Zack

Editar 1: O problema que estou tentando resolver é o cache de buffer do Linux que expulsa o ARC do ZFS da memória. Eu gostaria que a carga de trabalho do aplicativo pudesse usar toda a memória eo ARC do ZFS reduzisse proporcionalmente. Como solução alternativa, tive que definir o tamanho mínimo do ARC do ZFS como um valor grande, pois o cache de buffer do Linux removeria o ARC da memória, se o tamanho mínimo fosse definido como 0.

    
por user1492285 22.06.2017 / 21:31

2 respostas

3

Defina um valor mínimo de ARC. Isso é tudo que é necessário.

O ARC aumentará / diminuirá conforme necessário. O que estiver comendo o cache de buffet não deve estar em um sistema de arquivos ZFS. O que este servidor está fazendo?

    
por 22.06.2017 / 21:53
1

Tente montar seu diretório NFS com a opção sync mount.

Além disso, para limitar o uso de pagecache no Linux, você pode executar periodicamente echo 3 > /proc/sys/vm/drop_caches

EDITAR: como no comentário eewhite, o último comando parece deixar cair não apenas o pagecache, mas também o ARC. Então, publique com cuidado e somente quando necessário.

echo 1 >/proc/sys/vm/drop_caches tocará no cache de buffer do Linux, mas deixará o ARC sozinho

    
por 23.06.2017 / 00:10