Por que o envio de dados é mais pesado para a CPU do que o recebimento de dados?

3

Eu tenho um servidor Samba configurado no meu PC.

Quando outros PCs na LAN baixam dados do servidor, o comando top mostra que smbd ocupa 75% da CPU. Enquanto transferem dados para o servidor, o comando top mostra smbd ocupa 30% da CPU.

Acho que isso ocorre porque, para o recebimento de dados, o servidor não precisa calcular o cabeçalho ou a soma de verificação.

Existe alguma explicação mais precisa para isso?

Outra questão é por que o smbd não ocupa mais CPU?

Como a conexão em minha LAN é de 1 Gbit e a taxa para ambas as direções atinge apenas 90 Mbit / s. Então, por que não smbd leva mais CPU para alcançar uma taxa mais alta? Durante o recebimento, os resultados do perfil mostram que a CPU tem até 30% de tempo sem nada para fazer (default_idle ()).

@Mircea Vutcovici O arquivo de teste é um 690MB .avi. A versão do Samba é 3.0.24. O sistema de arquivos é FAT e o arquivo é armazenado em um disco rígido externo USB2.0 (> 200 Mbit / s). Não há nenhum mecanismo de descarregamento. A CPU gasta a maior parte do tempo no espaço do kernel, por exemplo, o smbd consome 75%, onde cerca de 40% é consumido pela pilha de rede do Linux. Sendfile é ativado mas sem suporte a SG, então na verdade é tcp_sendmsg usado ao invés de tcp_sendpage.

    
por sliter 16.12.2011 / 15:22

2 respostas

1

the server does not need to compute the header or the checksum.

Na verdade, tem que. De que outra forma pode verificar se a soma de verificação está correta?

Because, the connection in my LAN is 1Gbit and the rate for both directions only reach 90Mbit/s

MBit ou Megabyte. Se você vê uma velocidade de megabyte - como você faz, por exemplo, no explorador de wnidows - que está praticamente cheio.

    
por 16.12.2011 / 15:35
1

este é um problema conhecido com o samba, o uso da CPU pode ser bastante alto, particularmente, quando o samba tem que procurar por arquivos de pastas grandes que não estão em seu cache. Isso também é causado por vários compartilhamentos de rede e processos em execução que consomem o tempo e os recursos da CPU.

    
por 16.12.2011 / 16:03