A velocidade de gravação do cartão SD parece 14 vezes mais lenta que a velocidade de leitura

11

Esta noite eu estava escrevendo para um cartão SD a partir de um leitor de cartão interno do Mac Book Air, e o desempenho relatado foi de 1,4 MB / s. Mais tarde, li o teste no Raspberry Pi e obtive 20 MB / s. É uma placa de classe 6 e nenhuma dessas figuras parece realista!

Estou usando ddpara meus testes. Resultados de testes idênticos de leitura e gravação nos dois computadores:

Raspberry Pi: Leia 20 MB / s. Escreva 11 MB / s ...
Ar: Leia 3 MB / s. Gravação 1,4 MB / s

Usando estes comandos:

Teste de gravação:

sudo dd if=/dev/zero of=/dev/mmcblk0p3 bs=1M count=400

Leia o teste:

sudo dd of=/dev/null if=/dev/mmcblk0p3 bs=1M count=400

Isso indica que a anomalia percebida foi de fato um péssimo desempenho do leitor de cartão SD integrado Mac Book Air! Isso cria uma imagem muito lenta.

ScrollerBlaster
fonte
A Sandisk afirma que os cartões da classe 6 têm uma velocidade de leitura de 20 MBps, embora a Kingston alega que 15 MBps é a velocidade de leitura dos cartões da classe 6. Não sei se o Mac Book tem um leitor de cartão SD integrado ou não. Porém, para versões externas (USB 2.0), a qualidade do leitor de cartão SD (que chips usavam etc) também é importante para o desempenho geral. Mas ler sempre é mais rápido com esses dispositivos do que escrever.
Ikku 15/10/12
Obrigado. Está integrado. Muito bom desempenho de leitura. Desempenho de gravação realmente ruim.
ScratchBlaster

Respostas:

6

A classificação da classe de velocidade do cartão SD especifica o desempenho mínimo de leitura / gravação que o cartão deve ter ao gravar o vídeo. O número da classe é o limite de velocidade mais baixo em MB / s que você deve obter ao usar o cartão.

No entanto, lembre-se de que a leitura do cartão geralmente é muito mais simples (e, portanto, mais rápida) do que a escrita. É por isso que o cartão comum da classe 6 terá velocidade de gravação de 6 MB / s por 15-20 MB / s de velocidade de leitura (mas apenas 6 MB / s são garantidos).

A velocidade de leitura / gravação pode ser limitada não apenas por um cartão, mas também por diversos fatores, tanto de hardware quanto de software. Especialmente, pode ser limitado por alguns problemas com o leitor / gravador de cartões.

Portanto, na sua situação, parece que o seu cartão apresenta um desempenho realmente ruim no seu Mac Book Air, enquanto o desempenho do RaspberryPi é adequado (e realista). Entretanto, não podemos ter certeza, já que você testou a velocidade de gravação no Mac Book e a velocidade de leitura no RaspberryPi e, como mencionei anteriormente, elas não são comparáveis. Também é difícil comentar por que você está obtendo esses resultados, pois não especificou como está testando essas velocidades.

Krzysztof Adamski
fonte
Preciso testar a leitura e gravação nas duas plataformas. Eu estou usandodd
ScrollerBlaster
@ ScrollerBlaster: Você não pode comparar a velocidade de leitura e gravação entre si. Da mesma forma, ao testar praticamente qualquer coisa, uma boa regra é mudar apenas uma coisa de cada vez. Mas você mudou tudo (SO, computador host, leitor de cartão), mas uma coisa (cartão SD) na sua configuração, para que não lhe dê resultados significativos.
Krzysztof Adamski 16/10
Eu disse que vou comparar leitura vs gravação no mesmo sistema operacional. Você tem algum problema com essa abordagem?
ScrollerBlaster
@ ScrollerBlaster: Não, de jeito nenhum. Eu só queria deixar claro o que quero dizer dizendo que eles não são comparáveis ​​na minha resposta. Lembre-se de que esta resposta não é apenas para você, mas para todas as outras pessoas que possam ter problemas semelhantes no futuro, por isso tento tornar meus conselhos o mais genérico possível.
Krzysztof Adamski
Quando você apontou em seu post que meu teste não estava comparando maçãs e laranjas, esse era um ponto muito válido. No meu primeiro comentário, afirmei que refiz o teste, o que significa que refiz a leitura e a gravação nas duas plataformas. Depois disso, seu conselho subsequente para mim foi desnecessário. No futuro, quaisquer conclusões sobre Air versus PI ainda são prematuras. O teste mais relevante será um teste de leitura versus gravação no PI, já que este é um fórum do PI. Se você tiver ddcomandos para fazer um teste de gravação seguro, eu os usarei!
ScratchBlaster
10

Para obter a melhor velocidade do slot SD do seu MacBook, você precisa usar um dispositivo de 'disco bruto'.

Este é um cartão SanDisk Ultra Class 10:

~/Desktop/rpi $ sudo dd if=2012-12-16-wheezy-raspbian.img of=/dev/disk1 bs=8m
231+1 records in
231+1 records out
1939865600 bytes transferred in 1076.078932 secs (1802717 bytes/sec)

Compare isso com o uso em /dev/rdisk1vez de/dev/disk1

~/Desktop/rpi $ sudo dd if=2012-12-16-wheezy-raspbian.img of=/dev/rdisk1 bs=1m
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 129.712100 secs (14955163 bytes/sec)

1,8 MB / s em comparação com 14,9 MB / s - quase 10 vezes a melhoria!

Bert
fonte
qual é a diferença entre disco e rdisk?
valentt
"Eles estão mais próximos do disco físico do que do cache de buffer. Os nós / dev / disk, por outro lado, são dispositivos especiais de bloco com buffer e são usados ​​principalmente pelo código do sistema de arquivos do kernel". - Verifique a hidutilpágina do manual para mais informações.
31412 Bert
1
Isso é potencialmente enganador, pois o tamanho do bloco mudou entre os dois testes.
Nick
FWIW: Alterei o tamanho do bloco para 1m e o dispositivo / dev / rdisk1 e minha velocidade de gravação passaram de ~ 1,75MB / s para ~ 11,4MB / s com um cartão classe 10.
Gardner Bickford
Posso confirmar isso - gravar uma imagem no meu cartão RPi SD é 20x mais rápido quando uso o rdisk2. Eu mantive o tamanho do bloco constante para isso (4m). Usando / dev / disk2, o gdd grava em 197 kB / s. Usando / dev / rdisk2, ele grava em 10.6 MB / s
judepereira
1

Você também pode usar estes comandos para benchmarking sem influência do cache carregado na RAM:

referência de velocidade de leitura: $ sudo dd if = / dev / sdX1 de = / dev / zero bs = contagem de 1M = 400 iflag = direct

referência de velocidade de gravação: $ sudo dd se = / dev / zero de = / dev / sdX1 bs = contagem de 1M = 400 skip = 1000 oflag = direct

Certifique-se de sempre usar oflag = direct e iflag = direct ao fazer respectivamente testes de benchmark de gravação e leitura, ou corre o risco de obter resultados que realmente são tempos de gravação e leitura de arquivo de cache.

valentt
fonte
0

No meu MBP de 2015 com OSX 10.11.5, recebi as seguintes velocidades de gravação ao usar o dd:

ao gravar em / dev / disk: 1,80 MB / s ao gravar em / dev / rdisk: 12,80 MB / s

Pe. Austin
fonte