No benchmarking, você deve sempre estabelecer quais são seus limites. Porque se você espera obter 100mbs dessa LAN, está enganando a si próprio!
Veja este design de bloco do RaspberryPI Model-B
Então, estabelecemos um fato muito importante aqui. A Ethernet é estrangulada pelo controlador USB, porque no digram de bloco que estabelecemos está conectada ao hub USB. (Nenhuma indicação clara é de que ele usa outro barramento ou simplesmente USB2?)
Ohh, olhe - outro diagrama de blocos,
Agora isso lança ainda mais luz sobre a situação. O controlador 10/100 está conectado ao hub USB - infelizmente, novamente, em nenhum lugar da especificação ele diz com que rapidez o hub se comunica com o controlador lan - espere pelo fato principal de que a velocidade e o lan USB são negociados para ambientes USB de velocidade mista.
Onde está o cartão SD?
Acontece que o cartão SD está diretamente conectado ao BCM2835 (página 65) e eles detalham como o desempenho é afetado por vários níveis de configuração. Uma coisa importante a ser observada é que, se o cartão SD tiver um Clock dedicado, ele poderá ser executado independentemente da CPU / GPU principal em velocidade máxima (de qualquer cartão e padrão usado - você poderá ver alguns padrões).
Então, o que isso significa?
Isso significa que, se você comparar o cartão SD mais rápido e o pen drive de baixa qualidade (4gb / 8gb), provavelmente obterá grandes diferenças de desempenho. Agora, isso levanta a questão: como a CPU / GPU lida com a comunicação com esse maravilhoso dispositivo embutido (chip usb / lan) e em que velocidade ele é capaz de se comunicar.
Você vê o quão longe a teoria pode realmente chegar antes de fazermos algum benchmarking? Outro ponto-chave aqui é - Como a CPU controla o fluxo de dados. Ele usa o canal do relógio separado, conforme recomendado?
Em um mundo ideal, você pensaria que essa LAN / USB lidaria com isso. Mas isso requer um MCU .. vemos um MCY em qualquer lugar desse diagrama de blocos? NÃO!
Portanto, a CPU precisa solicitar IO DATA para enviar a porta USB e depois a porta LAN (via Same HUB USB) Sim .. para que isso cause alguns problemas de velocidade em algum lugar.
Também é bom notar o que acontece quando você copia para um pen drive USB e do cartão SD, tudo via LAN .. isso causa algum tráfego.
Precisamos comparar vários aspectos
Ao estabelecer o que estamos tentando avaliar, podemos fazer uma pergunta do mundo real.
- Com que rapidez o USB interno lida com dados do SD?
- Quanta CPU é usada para ler / gravar no SD e depois na LAN?
- Quanta CPU é usada para ler / gravar em um pen drive USB?
- A cópia de quaisquer dados influencia diretamente o uso da CPU?
- Quão bem o chip USB / LAN incorporado lida com a leitura de dados de 2 fontes na porta LAN e afeta a CPU proporcionalmente?
- Não há necessidade de testar se a LAN ficará 10mb / s completa, pois está afunilada pelo estado em que o hub USB está.
Agora que você sabe pelo que está lutando, eu desafio você a responder a si mesmo.
Você pode achar esse um excelente ponto de partida.
Referências
Mas principalmente,
meus próprios conhecimentos técnicos e avaliações que fiz com base em minha própria experiência incorporada. O OP fez uma pergunta muito boa, mas falta entender que, sem a compreensão teórica de um sistema, você está condenado a tentar avaliar / resolver os problemas práticos.
Resultados
(4) Esta resposta mostra alguns testes piráticos realistas. E prova que realizar transações de dados intensas influencia diretamente a CPU (apenas não tenho certeza se é o cartão SD ou o processo de transferência de dados dentro do chip BCM para o chip USB / LAN)
(6) Foi provado que o único gargalo da garrafa será a fonte (por exemplo, um cartão SD lento). O hub USB consegue bombear dados a 90% +, mas as respostas às perguntas 4 e 5 podem influenciar diretamente esse desempenho.
Ao fazer algumas pesquisas e contribuições de outros usuários , estamos começando a estabelecer e obter resultados preliminares.
Aqui está um bom gráfico para ajudar a visualizar com o que estamos lidando.
sudo hdparm -t /dev/sdx
como uma ferramenta útil para o benchmarking.