O Samba fica lento quando a RAM está cheia com o cache de disco

2

Recentemente notei que a velocidade de transferência com o samba (exclusivamente, mesmo com o loopback - iperf funciona muito bem) caiu para cerca de 5MB / s na minha rede gigabit. Antes que pudesse chegar facilmente a 70MB / se além.

Na verdade, eu escrevi uma longa descrição do problema aqui, mas decidi verificar tudo novamente e percebi que htop informa 100% de uso de RAM e a maior parte da barra era amarela, por exemplo reservado para cache.

Após limpar o cache com sync; echo 3 > /proc/sys/vm/drop_caches (encontrado em link ), as velocidades de transferência foram imediatamente de 5MB / s para 50MB / s.

Estou me dizendo que o Linux gerencia sua memória de forma eficiente e acho que usar RAM extra para acelerar o acesso ao disco é ótimo, então estou suspeitando que há algo errado com a minha configuração. É este o caso ou é uma peculiaridade do samba / linux?

Estou usando o samba 3.6.6 no Ubuntu 12.10.

    
por Pichan 30.05.2013 / 12:49

1 resposta

1

Quase tudo diminuirá quando o uso da memória atingir 100%. Tente verificar a atividade do disco e você pode achar que sua E / S de disco está sendo enfileirada. Caso contrário, a memória livre é usada para buffers e pode ser usada para impedir a gravação de dados para diretórios como /tmp no disco. Quando você não tem nenhuma memória livre, muitas coisas que seriam feitas na memória começam a se tornar atividades de disco.

É possível que o samba esteja sendo paginado para o disco entre as chamadas. Isso reduzirá significativamente o desempenho. Eu esperaria que o desempenho fosse ainda pior se isso acontecesse.

sar é uma boa ferramenta para ver o que está acontecendo. df é uma boa ferramenta para determinar o tamanho do conteúdo de \tmp e outros discos mapeados na memória. vmstat mostrará o uso e a atividade de troca.

Se você ficar sem espaço na troca em um caso como esse, provavelmente seu servidor falhará.

    
por 30.05.2013 / 15:03