Desempenho de leitura do Samba

4

Sempre que leio um arquivo grande do meu servidor Samba, obtenho uma taxa de transferência de 40 MB / s. Se eu ler o mesmo arquivo novamente, a velocidade é repentinamente aumentada para 70 MB / s.

Por que não consigo obter 70 MB / s na primeira vez? Os discos executam facilmente até 95 MB / seg. O Samba precisa armazenar em cache o arquivo inteiro na RAM para obter desempenho ou algo do tipo?

Ao gravar arquivos no servidor, recebo 95+ MB / s a cada vez, uma grande diferença.

Eu tentei configurar algumas opções de socket (TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF = 65535 SO_RCVBUF = 65535), mas elas não parecem fazer muito para ajudar.

Então, alguma dica sobre como melhorar o desempenho de leitura no Samba?

Nota: Os discos são 2x1TB Samsung Spinpoint F1 7200 RPM configurado no software RAID 1.

Atualização: Parece que o cliente tinha tanto, se não mais, a ver com esse problema quanto o servidor. Eu estava usando meu fiel Comandante Total, que parece estar velho demais hoje em dia. Quando copio arquivos usando o Windows Explorer, até mesmo arquivos não armazenados em cache são lidos rapidamente. Obrigado pela sua ajuda.

    
por zidar 24.08.2009 / 14:49

4 respostas

1

Até agora, todas as respostas estão mais relacionadas aos discos do que à configuração RAID. Talvez as perguntas 19 e 4 deste guia possam ajudá-lo: Software RAID HOWTO .

Outra coisa é o lado da rede. Você tem o TOE ativado em sua NIC?

E a última coisa: você verificou se o seu gargalo não está do lado do cliente? Pode ser que o seu cliente FTP esteja mantendo mais dados na RAM do que o serviço CIFS. E essa talvez seja uma das razões pelas quais o FTP é mais rápido.

    
por 24.08.2009 / 23:21
2
Primeiro, as opções de soquete TCP foram feitas para os kernels 2.4 e na lista de discussão do Samba, os desenvolvedores disseram repetidamente que não fazem sentido em kernels 2.6.

Além disso, algo não está certo com seus números aqui. Não há como 2 drives SATA em uma configuração RAID1 (espelho) oferecerem velocidades de gravação de 95MB / se duvido que você também veja velocidades de leitura tão altas. Exceto, talvez, na faixa muito externa da unidade. Como você está marcando seu volume RAID? Tenha em mente que o dd não é um benchmark do sistema de arquivos.

As velocidades Gigabit também podem consumir uma quantidade significativa de ciclos de CPU se as NICs forem do tipo consumidor. Portanto, se você tiver uma CPU mais lenta no sistema, não descarte a CPU como um gargalo.

Lembre-se também de que os discos e a CPU do servidor e do cliente devem ser capazes de sustentar as velocidades que você está tentando alcançar, portanto, não olhe apenas para o servidor como a origem do gargalo da garrafa. é igualmente provável que esteja do lado do cliente.

    
por 24.08.2009 / 16:00
1

1.Tente aumentar a leitura

# /sbin/blockdev --getra /dev/sdb
256
# /sbin/blockdev --setra 16384 /dev/sdb

2.Tente alterar o IO Scheduler e encontre um com melhor desempenho em sua carga de trabalho

# cat /sys/block/hda/queue/scheduler
noop [anticipatory] deadline cfq
echo deadline > /sys/block/hda/queue/scheduler
    
por 24.08.2009 / 19:40
0

O cache de disco do Linux é a razão pela qual a segunda leitura é mais rápida, sem mencionar qualquer cache de disco H / W que possa estar envolvido.

Para melhorar o desempenho de leitura: Use distribuição de disco, aumente a RAM, vá para o próximo nível de interface de hardware (substitua SATA por SAS ou FC4), use discos mais rápidos (15K RPM em vez de 10K), adicione RAM à sua Cache RAID.

70 MB / s vai ser caro para melhorar, mas você deve ser capaz de melhorar a velocidade da primeira leitura alguns.

    
por 24.08.2009 / 14:55