próximo acima anterior sumário índice
Next: Segurança e NFS Up: Como Fazer um Sistema Previous: Otimizando NFS   Sumário   Índice Remissivo


NFS Sobre Linhas de Baixa Velocidade

Linhas de baixa velocidade incluem modems, ISDN e praticamente todas as ligações de longa distância possíveis.

Esta seção é baseada no conhecimento dos protocolos usados, mas não em experiências de campo. Meu computador pessoal esteve inativo por um longo tempo e caso você tenha alguma experiência adicional, por favor informe.

A primeira coisa para se lembrar sobre NFS é que ele é um protocolo lento e tem ainda um alto número de informações adicionais. Usar NFS é o mesmo que se utilizar o kermit para transferir arquivos. É lento. Praticamente qualquer coisa é mais rápida que NFS. FTP, HTTP, rcp, ssh por exemplo.

Ainda quer tentar? Ok.

Os parâmetros padrões do NFS são para linhas rápidas com baixa latência. Caso se esteja usando estes parâmetros para linhas de alta latência, certamente o NFS reportará alguns erros, encerrará operações, imaginará que arquivos são menores do que eles sejam na realidade e agirá estranhamente em alguns casos.

A primeira coisa a não fazer é usar a opção de montagem soft. Ela provocará ultrapassagem dos tempos de espera e retornos de erro para o software, o qual, na maior parte do tempo, não saberá lidar corretamente com eles. Essa é uma maneira rápida de se obter erros misteriosos. Ao invés disso deve ser usada a opção de montagem hard, que gera infinitas tentativas em caso de estouro de tempo de espera, ao invés de encerrar a solicitação, independentemente do que o software deseja fazer. Isso será realmente necessário nestes casos.

A próxima providência é mudar as opções de montagem timeo e retrans. Elas são descritas na página de manual do nfs(5), mas segue aqui uma cópia:


timeo=n
O número de décimos de segundo antes de enviar a primeira 
retransmissão após findo o tempo de  espera de uma RPC. O 
valor padrão é de 7 décimos de  segundo.  Após a primeira 
espera, o tempo é dobrado após cada espera sem respostas,
até um  máximo  de  60 segundos  ou  um  número máximo de 
retransmissões  ser  atingido.  Então,  caso o sistema de 
arquivos esteja montado com a opção hard, cada novo tempo 
de  espera  começa   com  o dobro do tempo  da  anterior, 
novamente dobrand o a cada  retransmissão. O tempo máximo 
de espera é sempre de 60 segundos. Uma melhor performance 
pode  ser  atingida  ao se incrementar o tempo de espera, 
quando se está montando sistemas sobre uma rede com muito
tráfego,  utilizando-se  servidores  lentos  ou  usando o 
sistema   através  de  diversos  roteadores  e  portas de 
entrada.

retrans=n
O  número  de  tempo  limite  e  retransmissões que devem 
ocorrer  antes que um alarme  de  tempo de  resposta seja 
acionado. O padrão é de 3 ocorrências.  Quando  um alarme
de tempo de espera maior ocorre, a operação é interrompida
ou  uma  mensagem  de ``servidor não está respondendo'' é 
apresentada no console.

Em outras palavras: se uma resposta não for recebida no tempo de espera de 0,7 segundos (700 ms), o cliente NFS irá repetir e dobrar o tempo de espera para 1,4 segundos. Caso a resposta não seja recebida neste tempo, a requisição será enviada novamente com um tempo de espera alterado para 2,8 segundos.

A velocidade da linha pode ser medida com um ping com os mesmos parâmetros das opções rsize/wsize.


$ ping -s 8192 lugulbanda
PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes
8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms
8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms
8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms

--- lugulbanda.uio.no ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 14.9/15.1/15.9 ms

O parâmetro time aqui mostra quanto tempo o pacote ping levou para chegar a e retornar da máquina denominada lugulbanda. 15ms é bastante rápido. Sobre uma linha de 28.800 bps pode-se esperar algo como 4000-5000ms e, caso a linha esteja carregada, um tempo maior, chegando facilmente ao dobro. Quando o tempo é muito alto nos referimos como uma linha de alta latência. Geralmente para pacotes maiores e linhas mais carregada, a latência tende a aumentar. Deve-se aumentar o parâmetro timeo para se adequar a esta realidade. Deve-se atentar que a latência tende a aumentar ainda mais quando se usa a linha para outros serviços como por exemplo FTP e NFS simultaneamente. Neste caso deve-se medir as respostas do comando ping ao se efetuar transferências de arquivos.


próximo acima anterior sumário índice
Next: Segurança e NFS Up: Como Fazer um Sistema Previous: Otimizando NFS   Sumário   Índice Remissivo
Cyro Mendes de Moraes Neto 1999-12-30