carga da CPU, conexão USB vs. NIC

2

Em geral, e entendendo que a resposta pode variar de fabricante e modelo (e driver, e ...), em estações de trabalho consumidoras com NICs integradas, a NIC depende da CPU para muita ajuda (como é tipicamente o caso com um controlador USB, por exemplo), ou é bastante inteligente e capaz por si próprio (como, digamos, o típico controlador Firewire)? Ou a questão é geral demais para responder? (Se isso importa, você pode assumir o Linux.)

Antecedentes: Estou pensando em conectar um dispositivo (captura de televisão digital) que estará fornecendo ~ 20-50 Mbit / s de dados para uma estação de trabalho um pouco sub-potente. Eu posso obter um dispositivo USB 2 de alta velocidade, ou um dispositivo conectado à rede, e estou interessado em evitar o impacto da CPU sempre que possível. Obviamente, se é uma placa de rede de 100 Mbit, é aproximadamente metade de sua largura de banda de entrada teórica, enquanto que é apenas cerca de um décimo da interface de alta velocidade "USB 2" de 480 Mbit / segundo. Mas se o último exigir muito suporte à CPU e o primeiro não ...

Editar A pergunta de Andy me leva a expandir um pouco: a máquina será um computador de sala de estar e PVR. Os dispositivos são receptores de TV digital terrestre (DVB-T), e os dados são codificados em vídeo a partir do fluxo digital (possivelmente até dois fluxos de uma só vez, cada um estimado em ~ 20Mbit / seg). Como ele é pré-codificado, a CPU não precisa codificá-lo no recebimento, basta gravá-lo no disco (SATA-300). A CPU pode estar ocupada fazendo outras coisas não relacionadas aos dados que chegam, como (digamos) decodificação e exibição de outro vídeo ou áudio, ou fazendo uma varredura de vírus, ou uma chamada de vídeo ... OS será Ubuntu 10.04 LTS ou Windows 7. Mas a questão é mais apenas curiosa sobre a natureza das NICs versus controladores USB vs. controladores Firewire.

    
por T.J. Crowder 17.05.2010 / 14:39

4 respostas

2

A quantidade exata de utilização da CPU varia de acordo com o adaptador de rede (por exemplo, a Intel comercializa um cartão gigabit de desktop como tendo" aumentado o desempenho e reduzindo significativamente o uso da CPU ").

No entanto, com base em evidências, posso garantir que a sobrecarga do seu cartão de gigabit será insignificante em comparação com outras tarefas que consomem CPU - por exemplo, codificação / decodificação de vídeo. A cópia de arquivos de vários gigabytes em um link gigabit não é registrada no meu medidor de CPU, mesmo quando se copia a cerca de 400 Mbit / s. Também vale a pena notar que qualquer túnel criptografado que seus dados possam estar passando também consumirá muito mais CPU do que sua placa de rede - notei uma redução de 10x na cópia do SCP versus NFS ou Samba, com uma utilização de CPU notavelmente maior.

Não tenho certeza de quão rápido é a sua estação de trabalho "fraca potência", mas meu Athlon X2 4000+ com uma GeForce 6600 GT às vezes tem problemas para decodificar vídeo H.264 mesmo com uma resolução modesta de 480p. Dito isto, se você for afetado por uma limitação semelhante, talvez seja possível resolvê-lo instalando uma placa gráfica com a decodificação de hardware H.264.

    
por 25.05.2010 / 05:31
0

Uma máquina com um processador de 200MHz dos anos 90 pode saturar uma Ethernet de 100mbps. Eu não acho que você tenha alguma coisa com que se preocupar. Na verdade, acho que você tem duas ordens de magnitude por ter algo com o que se preocupar.

    
por 17.05.2010 / 23:34
0

Eu nunca vi o uso da CPU de copiar pelt completo de máquina para máquina ir acima de 5% de uso da CPU em qualquer sistema que eu possuí, exceto talvez em um antigo P200 que eu costumava ter. Eu não posso dizer que eu já notei a cópia de dispositivos USB para ser particularmente lento ou usar o tempo de CPU excessivo, as únicas vezes que tenho notado é quando algo como McAfee SystemCrippler é instalado e faz com que o sistema triture mais do que um moinho de farinha configurado para super-overdrive.

Como uma observação, sua escolha de proteção contra vírus pode afetar seriamente sua difícil drive performance e por inferência o desempenho de qualquer dispositivo de armazenamento.

Se você realmente se importa em fazer com que o NIC faça todo o trabalho, então você quer um KillerNIC mas eu realmente Não pense que o menor uso da CPU relacionado à rede vale o custo.

Como Rob observou e expandi na minha mensagem, você pode descarregar várias tarefas, como decodificação de vídeo, para componentes não integrados. Você também pode comprar software para descarregar a codificação h264 para cartões nVidia, bem como usando o Badaboom Media Converter .

    
por 28.05.2010 / 16:10
0

Pelo que entendi, a NIC normalmente lida apenas com as camadas mais baixas, o físico e o link de dados (na linguagem OSI). O restante da pilha TCP / IP é implementado no software. A exceção a isso são cartões com um Mecanismo de Descarregamento de TCP (TOE), em que toda a pilha é manipulada pelo próprio cartão. Ouvi opiniões divergentes sobre se isso é bom ou não, se a grande maioria está tendo recursos muito mais limitados no cartão em comparação com a máquina em geral. Mas o Q é sobre placas de rede m / board, e eu acho que o TOE é mais comum para placas de rede separadas no nível do servidor. Eu também entendo que uma má implementação da pilha no software pode ser um problema para os processadores de alta velocidade, mas meu palpite completo seria que a pilha do Linux é boa e eficiente!

Interessante citação da Computer Networks, Tanenbaum, 4e:

CPU Speed Is More Important Than Network Speed

Long experience has shown that in nearly all networks, operating system and protocol overhead dominate actual time on the wire.

Tenho certeza de que com um processador moderno e apenas ~ 50Mb / se nenhuma codificação, é improvável que você enfrente problemas de CPU. Talvez se você fizer outras coisas ao mesmo tempo e isso acabar debatendo o HD você pode transbordar seu buffer ...

    
por 28.05.2010 / 16:49