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?