Qual é a configuração de hardware com melhor desempenho?

35

Sei que os números exatos de referência variam entre os fabricantes, mas, em geral, se você considerar apenas unidades flash de ponta, cartões SD e HDDs USB e o seu Raspberry Pi estiver conectado a uma rede por meio de um comutador Ethernet, qual é a configuração mais rápida de uma rede ponto de vista de transferência de dados? Só estou procurando respostas nas quais as pessoas realmente tentaram as configurações listadas abaixo e têm resultados reais, não teoria.

Obviamente, um cartão SD deve ser usado porque é necessário para pelo menos parte do ciclo de inicialização, mas vamos supor que você tenha uma partição de dados adicional em cada um dos dispositivos listados abaixo, com as maiores velocidades de transferência de rede no Raspberry Pi?

  1. O cartão SD
  2. Uma unidade flash USB
  3. Um disco rígido USB

Essa pergunta não é trivial porque, em algum momento, a sobrecarga de processamento associada a um dos dispositivos de armazenamento acoplados à comunicação Ethernet pode afetar a taxa de transferência, também a porta Ethernet no Raspberry Pi é controlada pelo barramento USB, portanto, em geral, a taxa de transferência deve ser afetada por a coordenação da transferência de dados Ethernet e transferência de dados de mídia USB. Não sei se o cartão SD está no mesmo barramento USB compartilhado que as portas USB e a porta Ethernet, mas se não estiver, suponho que seria um benefício bastante grande em termos de desempenho.

Editado para incluir transferência de rede como requisito para benchmark

Dan B
fonte
11
Para sua informação, os respondedores podem usar sudo hdparm -t /dev/sdxcomo uma ferramenta útil para o benchmarking.
Jivings
2
Não tenho benchmarks, mas é do conhecimento geral: ssd> hdd> flash> sd> mídia óptica
Alexander - Reinstate Monica
+1 - Bom argumento sobre a porta SD - ela está no mesmo barramento que o USB / Ethernet? O compartilhamento de carga no SD e no armazenamento USB conectado funciona melhor?
Jon Egerton
@XAleXOwnZX Se os barramentos em que esses dispositivos estão podem corresponder ao desempenho máximo do dispositivo, essa é a ordem, mas aposto que, como o Raspberry Pi tem apenas USB, seu pedido será mais como ssd = hdd = flash> óptico e SD podem residir em qualquer lugar dessa lista, com base em se tiver seu próprio barramento separado das portas USB.
Dan B
Esse é um bom argumento, mas com certeza HDD> Flash. Meu disco rígido USB recebe 30 MB / s em comparação com o meu flash drive 5-10
Alexander - Reintegrar Monica

Respostas:

35

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 insira a descrição da imagem aqui

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,

insira a descrição da imagem aqui

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).

insira a descrição da imagem aqui

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.

  1. Com que rapidez o USB interno lida com dados do SD?
  2. Quanta CPU é usada para ler / gravar no SD e depois na LAN?
  3. Quanta CPU é usada para ler / gravar em um pen drive USB?
  4. A cópia de quaisquer dados influencia diretamente o uso da CPU?
  5. 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?
  6. 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.

insira a descrição da imagem aqui

Piotr Kula
fonte
11
+1 ótima resposta. Embora você possa fornecer fontes para suas imagens?
31412 Jivings
11
Esta resposta faz um excelente trabalho ao adicionar detalhes à pergunta, explicando por que cada uma das diferentes mídias de armazenamento pode ter números de desempenho muito diferentes. Obrigado pelas informações adicionais que eu deveria ter acrescentado à pergunta em primeiro lugar.
Dan B
11
O USB ainda tem cerca de 30 MB / s, ou seja, muito o que sobra para uma rede de 100 Mbit.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen sim, isso é verdade. Mas uma das minhas perguntas está relacionada ao desempenho do hub usb incorporado. Haw rápido é realmente? e isso depende da CPU do ARM - também o que acontece quando você copia as fontes do formulário 2 via LAN. Isso é algo que vale a pena comparar. Não estou dizendo que não fará isso, mas certamente poderia ser um problema em algumas situações.
Piotr Kula
Parece que você tem experiência em campo. Você poderia fazer medições reais?
Thorbjørn Ravn Andersen
3

Obviamente, o desempenho mais alto seria com um ramdisk.

Isso não será muito útil para um dispositivo de armazenamento conectado à rede, mas o pi não é necessariamente a melhor opção para esse aplicativo fixo.

Para algumas coisas em que a flexibilidade do pi é adequada de maneira única, os requisitos reais de armazenamento podem ser pequenos o suficiente para serem executados explicitamente a partir de um ramdisk, ou talvez implicitamente a partir do ram através do mecanismo de cache de disco (os ramdisks linux são apenas caches de disco sem um disco de backup).

Você ainda precisaria de um cartão para inicializar, mas como um benefício adicional da execução do ram, você poderia manter o cartão somente leitura e minimizar o risco de corrompê-lo.

Chris Stratton
fonte
Você não precisa de um cartão para inicializar. O sistema operacional / carregador de inicialização exige isso! Você pode inicializar a partir da interface serial ou LAN se tiver alterado o gerenciador de inicialização para fazer isso. Se você fosse técnico o suficiente, poderia adicionar 3 GB de RAM ao RPI - mas isso é completamente fora de tópico. O fato é que tudo passa por um hub USB estúpido! bleeeh
Piotr Kula
O gerenciador de inicialização, pelo menos o que você pode alterar, não está localizado no cartão SD? Você poderá obter uma ROM de inicialização interna para carregar de outra fonte, se você alterar algumas correias dos pinos de configuração.
31412 Chris Stratton
Estou quase certo de que o chip BCM .. o mesmo como o arduino, por exemplo, possui um gerenciador de inicialização .. (como o BIOS no PC) Deve haver algum programa inicial para carregar o próximo programa e assim por diante. alterando o bootlaoder no RPi .. aguarde um ano ou dois.
Piotr Kula
O ATMEGA de um arduino é um exemplo de um microcontrolador projetado para funcionar sozinho, com flash interno. Um booloader existe usuário personalizável. O SOC do pi, por outro lado, parece pertencer à classe de partes maiores do sistema que requerem memórias externas. Normalmente, eles têm um gerenciador de inicialização, mas é uma máscara de rom que não pode ser alterada depois que eles saem da fábrica. Em um produto tradicional baseado em algo assim, haveria um chip flash externo de 4-8 MByte. Mas o pi parece usar o cartão SD removível, evitando o problema de alguém corromper um flash de solda.
Chris Stratton
Isso é interessante. Então, é a partição FAT que contém esses dados de inicialização? ou é armazenado em outro lugar em uma parte oculta do SD? Em theroy você poderia, então, em uma tentativa ainda mais fácil, tentar redirecionar o processo de carregamento para outro "cortado" no dispositivo ...
Piotr Kula
0

O HDD USB ou o SSD USB devem oferecer o desempenho mais rápido. Os cartões SD gravam cerca de 12 MB / s para dispositivos da classe 10 e o USB pode chegar a 30 MB / s.

Não concordo que o hub USB esteja estrangulando a Ethernet no RPi, porque o HUB pode sustentar 400 Mbit / se a Ethernet é 100. Portanto, teoricamente, ele pode suportar até 4 portas Fast Ethernet de 100Mb / s.

Angel Genchev
fonte
CADA SD da classe 10 que eu já testei é> 19mb / s de gravação. Eu tive uma classe 6 que fez 14mb / s. Os SanDisk Extreme SD que afirmam 45mb / s atingem 50mb / se leem 47mb / s, o que foi uma surpresa. Os SD Lexar 400x são os mais rápidos que eu testei na leitura de 70mb / s, mas com gravação de cerca de 30mb / s. No USB 2.0, praticamente não há diferença entre cartões SD rápidos, HDDs e SSDs. Todas as interfaces USB 2.0 que eu mexi com tampa a cerca de 35mb / s. Eu já vi pen drives USB 2.0 que custam cerca de 10mb / se alguns ainda mais baixos. Muitos pen drives USB 3.0 têm velocidades de gravação limitadas em 10-20 mb / s, mesmo nas portas USB 3.0!
precisa saber é o seguinte
0

Recebo no máximo 4 Mb / s usando uma unidade flash USB e o mesmo para USD HDD. Isso enquanto simplesmente solta os arquivos através do 'grupo doméstico' da rede do Windows no dispositivo conectado ao Raspberry.

Eu esperava pelo menos dez vezes isso, mas não consegui acelerar a transferência. Tentei transferir FTP diretamente para um HDD USB (este dispositivo é transferido a + 60Mb / s quando conectado ao meu laptop), mas os resultados são muito baixos. 100KiB / s! Resultando em horas de tráfego para apenas alguns 100 MBs.

Agora passo o HDD entre o laptop e o Raspberry Pi para transferência de dados :-(

NookaV
fonte
Eu acho que você tem um problema de configuração / rede, porque eu posso carregar um arquivo diretamente no meu pendrive de até 24 Mbps. E acho que poderia fazer melhor com Ethernet, em vez de Wi-Fi. Eu tenho usado vsftpd.
Morgan Courbet