(Ou - Samba Performance)
Historiadores acreditam que, em Ter 14 Jan 2003 17:29, Henrique Cesar
Ulbrich disse:
> O problema é a minha estação rodando Linux. Não sei o que fazer, mas o
> smbclient demooooooooora pra fazer qualquer coisa na rede.
Olá pessoal.
Este email tem 3 objetivos:
1. Descrever a solução para o problema que eu estava enfrentando
(e pelo menos mais um aqui na lista, o Gustavo Moda);
2. Apresentar outro problema, sobre MTU;
3. Dar um puxão de orelha em todos, com relação àquela história
do peixe x ensinar à pescar.
1. A Solução
Talvez vocês lembrem, eu estava com problemas de desempenho na minha estação
Linux Red Hat 8. Qualquer operação na rede Samba congelava o gerenciador de
arquivos ou o prompt do shell por vários minutos.
Resolvi analisar (com tcpdump depois com ethereal) o tráfego. Descobri que o
smbclient no Linux estava fazendo rescans do volume montado com diferença
de tempo entre eles menor que 1s (um segundo). Aí ficou fácil. Bastou
montar cada volume com a opção TTL=10000, onde o número é o intervalo de
tempo entre rescans, em milissegundos.
O comando, então, para montar os volumes Windows ficou assim:
smbmount //HOST/share /home/henrique/mnt/HOST/share/ -o
username=henrique%senha,... outras opções ...,TTL=10000
Não pesquisei o porque disso, mas pode ser que a Red Hat tenha comido bola e
mexido nos pacotes do smb-clients. Segundo a documentação, o default para o
valor do TTL (ou seja, o que é assumido quando o parâmetro não é passado na
linha de comando) é de 1000 (ou seja, um segundo). Acredito que o default
esteja erroneamente setado em 100 ou mesmo em 10, mas não tenho a mínima
idéia onde configura isso ou se é hardcoded no programa. Eu sei que o
sambaclient (e smbmount e smbumount etc) se utilizam do arquivo
/etc/smbclient.conf, se existir, mas no meu sistema este arquivo não
existe.
De qualquer forma, taí uma solução.
2. O problema co o MTU
Descobri isso analisando o tráfego para o problema do item 1, e acabei
descobrindo outra diferença estranha. Não sei por que diabos acontece isso.
O teste foi o seguinte: eu copiava um arquivo grande (> 1Mb) pela rede e
verificava a saída do ethereal. Descobri que, durante a cópia, o Windows XP
fazia apenas um rescan do diretório, no final da cópia, enquanto o
samba-client fazia mais de um por segundo. Isso gerava trafego montruoso e,
óbvio, deixava a minha conexão SMB lentíssima, embora atrapalhasse pouco
outras conexões IP.
Mas descobri também que o frame ethernet no Windows XP tinha 1514 bytes,
enquanto o frame ethernet no Linux possuia apenas 258 bytes. O pacote IP no
WinXP possuía 1500 bytes; no Linux, 244 bytes. (Em tempo: RH8)
A saída do ifconfig é
[root@EST201 root]# ifconfig
eth0
Encapsulamento do Link: Ethernet Endereço de HW 00:08:74:B5:64:95
inet end.: 192.168.1.11 Bcast:192.168.1.255 Masc:255.255.255.0
UP BROADCASTRUNNING MULTICAST MTU:1500 Métrica:1
RX packets:22401 errors:0 dropped:0 overruns:1 frame:0
TX packets:11357 errors:0 dropped:0 overruns:0 carrier:0
colisões:0 txqueuelen:100
RX bytes:10688452 (10.1 Mb) TX bytes:1338813 (1.2 Mb)
IRQ:11 Endereço de E/S:0xec80
Portanto, o MTU configurado na interface é mesmo 1500. Por quê os pacotes
estão, então, saindo com tamanho seis vezes menor? Isso significa que para
a mesma quantidade de dados o Linux está enviando seis vezes mais pacotes
IP que o WinXP e, portanto, seis vezes mais overhead.
Alguém pode me dar alguma luz?
3. O puxão de orelha (peixe vs pescaria):
- Em quem pergunta sem antes procurar.
Olhem só, perguntei na lista sobre meu problema. Eu até procurei antes,
depois perguntei na lista mas ninguém sabia. Então fui fuçar até encontrar.
Todos deveriam fazer isso, escarafunchar até encontrar, se não a solução,
pelo menos algum dado a respeito. É um ótimo aprendizado, auxilia quem
talvez possa te ajudar e você não fica com fama de sanguessuga.
- Nos gurus e partidários do RTFM.
Por outro lado, muitos aqui sabem a resposta (não desse meu problema em
especial, mas de alguns outros que rolam por aqui). Já passaram por
problemas parecidos e sabem o caminho das pedras para a solução. Não há
problema em repassar a "receita de bolo" para a lista, caso já a tenha
pronta. Mas muitos aqui não o fazem; em vez disso, RTFM. Cadê o espírito de
comunidade? Vamos repartir conhecimento, gente!
Não estou dizendo que você tem que parar tudo pra procurar a resposta para
outro listeiro que seja preguiçoso. Estou dizendo que, se você JÁ TEM a
resposta, não custa nada consultar seus alfarrábios e ajudar os mais novos.
Espero
1. Ter ajudado quem teve o mesmo problema;
2. Que a solução seja fácil e ninguém me mande RTFM (porque eu já li...);
3. Que minha opinião a respeito não ofenda ninguém
(o pessoal daqui é sensível, às vezes).
Abraços
--
Henrique Cesar Ulbrich
[EMAIL PROTECTED]
"Once the rockets are up,
who cares where they come down?
That's not my department,
says Werner von Braun."
Tom Lehrer
Assinantes em 03/02/2003: 2237
Mensagens recebidas desde 07/01/1999: 199850
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]