Como faço para acelerar e armazenar em cache o acesso ao arquivo mmap através do NFS no Linux?

4

O servidor e o cliente são ambos Ubuntu 10.04 LTS de 64 bits.

O aplicativo em questão é um aplicativo personalizado que usa mmap() para acesso rápido a arquivos aleatórios. Seu estado ideal é quando o arquivo inteiro é armazenado em cache na RAM.

As conexões de rede são realmente rápidas em 10Gb Ethernet. É uma configuração de blade de servidor virtual.

Não são as conexões de rede que atrapalham as coisas, porque tudo funciona de forma soberba ao usar um disco virtual (iSCSI para a SAN). Mas quando executamos o aplicativo em uma montagem de diretório base do NFS, o desempenho vai para os cães.

Parece que o kernel do Linux não está armazenando em cache qualquer coisa . Por isso, está lendo cada bloco de disco necessário por mmap() acessos repetidas vezes.

A montagem do NFS é feita através do autofs, que possui apenas configurações padrão. /proc/mounts mostra que a montagem do NFS é feita com as seguintes opções:

rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.11.52,mountvers=3,mountproto=tcp,addr=192.168.11.52

Como posso fazer o Ubuntu 10.04 armazenar em cache o arquivo em vez de recarregá-lo o tempo todo?

    
por Zan Lynx 13.12.2011 / 01:36

1 resposta

2

Você ajustou suas exportações ou montagens NFS? Quais são as suas opções atuais de montagem? Qual sistema de arquivos você está usando no servidor NFS?

Eu sei que você está usando o Ubuntu, mas este guia de ajuste NFS da Red Hat pode seja um bom começo, especialmente se você tiver uma boa métrica de desempenho para testar com configurações diferentes. Algumas das dicas do documento abrangem a limitação de alterações de metadados ao acessar arquivos via NFS e estender o cache de atributos.

O armazenamento em cache do NFS (FS-Cache, CacheFS) é uma opção neste caso?

    
por 13.12.2011 / 02:08

Tags