Conexão cruzada entre dois PCs Ubuntu usando o samba muito lento

0

Eu tenho um cabo cruzado Cat5e para trocar arquivos entre meu PC e o Notebook rapidamente, mas a taxa de transferência é de 1,3 MB. Usando USB 2.0 eu estou muito mais rápido colocando arquivos no meu disco rígido externo. Isso não pode estar certo, pode? Ambos os PCs executam 12,04 64bit.

    
por H3R3T1K 30.03.2013 / 10:54

2 respostas

2

Lendo sua pergunta Primeiro pensei: por que samba? é uma maneira muito ineficiente para transferir arquivos.

Algumas explicações:

o protocolo CIFS "consome" muita da sua largura de banda. É o pior caso senario é um monte de pequenos arquivos. Se for o caso, então é uma velocidade normal. (pequeno é algo abaixo de 10MB)

se for o caso, por que:

Tudo depende da sua camada de transporte. Você comparou o protocolo Ethernet + CIFS com o protocolo USB2 + NTFS (OR FAT32).

Primeiramente, temos dois tipos distintos de gerenciar seus arquivos aqui. O primeiro (CIFS) está no nível do arquivo e o segundo (NTFS) é um nível de bloco.

Em um ponto de vista de desempenho, isso significa que o CIFS tem menos desempenho porque ele precisa usar algum gerenciador de nível de bloco para funcionar corretamente (se o seu Ubuntu é instalado com padrões, ele passa por EXT4).

Conclusão: No nível do sistema, o CIFS precisa passar por mais camadas do que um disco rígido USB2 (e é por isso que, com a mesma largura de banda disponível, você nunca terá a mesma velocidade)

Depois, sobre o "lote de efeitos de arquivos pequenos": Como eu disse no começo, o CIFS é mal projetado. Para cada arquivo ou pasta, o CIFS precisa fazer mais de 10 comunicações (varia de acordo com as circunstâncias) entre os dois computadores. Vamos imaginar que você tenha 5000 arquivos de 1KB cada e a latência entre os dois PC é de 1ms. Isso significa que sua taxa de transferência vai durar: 5000 arquivos * 1ms * 10 = 50000 ms ou 50 segundos, o que significa que sua velocidade é: 5000 KB / 50 segundos = 500 KB / s

Agora, no caso real, a latência é menor que 1 ms e você usa arquivos acima de 1 KB. Uma maneira mais realista seria (para arquivos de 1MB):

5000 arquivos * 0.1ms * (10 + (2 * 1048576/1500)) = 704051 ms ou 705 segundos, então 7MB / seg

1500 são os dados máximos padrão que você pode enviar (o MTU). Então seus arquivos são cortados por múltiplos de 1500.

Claro que estas são teorias e devem ser consideradas como ideais e não levam em consideração a largura de banda disponível (1Gbps, 100Mbps, etc)

No seu caso específico:

você tem um resultado extremamente lento. Espero que você possa explicá-lo através das explicações dadas no começo.

Se você não precisa verificar alguns problemas na camada de rede de um dos seus ubuntu.

Primeiro, verifique o resultado do ifconfig para ambos (abra um terminal e digite ifconfig). Aqui está o meu:

eth0      Link encap:Ethernet  HWaddr 00:15:c5:5f:9e:be
          inet addr:192.168.0.14  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4392375 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3493073 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4910280244 (4.9 GB)  TX bytes:757387998 (757.3 MB)
          Interrupt:16

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:629 errors:0 dropped:0 overruns:0 frame:0
          TX packets:629 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:39732 (39.7 KB)  TX bytes:39732 (39.7 KB)

Minha interface padrão é eth0. Você tem que cuidar de "erros, queda, excesso e colisões" que ficam em 0.

Se não for o caso e você não tocou no MTU da interface (1500 é o padrão), então você pode ter

  • um problema com o cabo ou uma ou ambas as interfaces da máquina. (principalmente se erro ou queda for diferente de 0)
  • um problema com a configuração da interface nas duas máquinas

Para o primeiro, tente mudar o seu cabo Para o segundo, considerando que é eth0 e não mais que eth0 está conectado, digite isto:

  • Máquina A: sudo ifconfig eth0 172.16.10.1
  • Máquina B: sudo ifconfig eth0 172.16.10.2

acesse suas ações usando o IP de cada máquina em vez de nomes (por exemplo, 172.16.10.2 quando estiver na máquina A)

Você também pode colocar esteróides em seu samba (aprimorando seu smb.conf ou habilitando quadros jumbo). Mas eu aconselho você a não fazê-lo, porque ele irá esconder e não consertar seu problema de desempenho. (você pode ir mais rápido, mas ainda assim mais devagar)

Pode haver muitas outras coisas. Essas são as regulares. por favor me atualize com necessidade de mais informações.

    
por Antoine Rodriguez 07.04.2013 / 17:47
1

Se os dois computadores tiverem giga -etsets, você poderá ativar quadros Jumbo.

Aqui está um rápido como:

link

    
por VasPle 02.04.2013 / 19:12