[FUG-BR] Melhorar a performance do servidor de NFS

Ari Arantes Filho ari em dd.com.br
Segunda Setembro 8 16:29:49 BRT 2008


Pessoal,

Estamos com algumas dúvidas de como melhorar a performance do servidor de
NFS.

Seguem os testes feitos:

- 2 servidores IBM x3550 com HD SAS

Servidor 1: FreeBSD 7 atualizado como NFS Server
Servidor 2: FreeBSD 7 atualizado como NFS client

As placas de rede são gigabit e existe 1 switch também giga da 3COM
utilizado nos testes.

Vejam os tempos de gravação e iostats p/ a gravação local:

[root em ibmx3550vm01 ~]# time mkfile 500m /hd/teste.tmp

real    0m4.394s
user    0m0.008s
sys     0m0.854s

/hd é uma partição exportada no NFS server.

Resultado do iostat enquanto o comando acima era executado:

[root em ibmx3550vm01 ~]# iostat -c 1000
      tty           aacd0             cpu
 tin tout  KB/t tps  MB/s  us ni sy in id
   2   47  0.00   0  0.00   0  0  0  0 100
   0  130  0.00   0  0.00   0  0  0  0 100
   1   46 63.12 457 28.14   0  0  4  0 96
   0   43 63.92 1887 117.80   0  0  6  0 94
   0   45 63.87 1895 118.21   0  0  5  0 95
   0   45 63.90 1875 117.01   0  0  7  1 92
   0  114 63.86 1874 116.88   0  0  5  0 94
   0   45 62.22   9  0.55   0  0  0  0 100
   0   44 55.00  18  0.97   0  0  0  0 100
   0   44  0.00   0  0.00   0  0  0  0 100

via NFS
=======
resultado de:
[root em ibmx3550vm02 ~]# time mkfile 500m /mnt/storage/teste.tmp

real    0m17.661s
user    0m0.000s
sys     0m1.017s

O /mnt/storage é o ponto de montagem do NFS do servidor 01 (/hd).

Resultado da máquina NFS Server (01) enquanto era criado o arquivo pela
rede:

[root em ibmx3550vm01 ~]# iostat -c 1000
      tty           aacd0             cpu
 tin tout  KB/t tps  MB/s  us ni sy in id
   0   44  0.00   0  0.00   0  0  0  0 100
   0   44 16.00 292  4.56   0  0  4  0 96
   0   43 16.00 1969 30.77   0  0  6  2 92
   0   44 16.00 1857 29.02   0  0  5  2 93
   0   44 16.00 1852 28.94   0  0  3  2 96
   0   44 16.00 1851 28.92   0  0  3  2 95
   0   44 16.00 1849 28.89   0  0  4  2 93
   0   44 16.00 1855 28.99   0  0  4  2 95
   0   44 16.00 1867 29.17   0  0  5  2 93
   0   44 16.00 1965 30.70   0  0  5  2 94
   0   44 16.00 1853 28.96   0  0  5  2 94
   0   44 16.00 1884 29.44   0  0  5  3 92
   0   44 16.00 1947 30.42   0  0  6  2 92
   0   44 16.00 1852 28.94   0  0  6  2 92
   0   44 16.00 1959 30.61   0  0  6  2 93
   0   44 16.00 1877 29.33   0  0  5  2 93
   0   44 16.00 1923 30.05   0  0  5  2 92
   0  130 16.00 1911 29.86   0  0  6  2 92
   0   44 16.00 1848 28.88   0  0  5  3 92
   0   44 16.00 530  8.29   0  0  3  0 97
   0   43 16.00   1  0.02   0  0  0  0 100


Vejam que a taxa de IO pelo NFS não passa de 30 MB/s, enquanto localmente
faz mais de 110 MB/s. O número de tps estão semelhantes.

Como podemos fazer para melhorar a performance do NFS? Existem 4 daemons do
NFS e está configurado usando UDP. A configuração está default.

Alguma dica para melhorar os tempos de gravação pelo NFS? Sei que melhor que
localmente não fica, mas a diferença é grande. Tem espaço de processamento
de disco sobrando e não está sendo consumido, fazendo com que os tempos
fiquem piores.

Obrigado,

Ari


Mais detalhes sobre a lista de discussão freebsd