Quem sou eu e o que este blog.

quarta-feira, 6 de novembro de 2019

O mito da redução de velocidade do adaptador SD-MicroSD

Em uma discussão no Facebook algumas pessoas desaconselharam o uso de cartões Micro SD com adaptadores alegando que o adaptador reduzia a velocidade o cartão. Eu respondi que só vi redução em um caso, o do ez Share, que não é exatamente um adaptador. Eu não tinha visto indício nenhum de alteração de velocidade.

O adaptador é simplesmente contatos e fios em uma distância bem curta, e não via motivo que sustentasse a afirmação que o adaptador reduzia a velocidade do cartão.

Então resolvi testar. É isto que costumo fazer quando surge uma dúvida.

O sistema onde fiz o teste é o meu computador rodando FreeBSD:

FreeBSD SUPER 12.0-STABLE FreeBSD 12.0-STABLE r348980 SUPER  amd64

Usei o leitor de cartões Kingston FCR-HS4 já mencionado em outros dois artigos (este e este). Aliás, o segundo destes artigos já deixa bem patente que o adaptador não altera a velocidade de leitura.

Para este teste eu criei o script abaixo:

#!/bin/sh

echo
echo Montando $1

mount_msdosfs $1 /mnt/umass

echo
echo 'Escrevendo 512 MB'
echo

dd if=/dev/zero of=/mnt/umass/teste.dat bs=1048576 count=512

# Destruição de buffers
umount /mnt/umass
mount_msdosfs $1 /mnt/umass

echo
echo 'Lendo 512 MB'
echo

dd if=/mnt/umass/teste.dat of=/dev/null bs=1048576 count=512

rm /mnt/umass/teste.dat

umount /mnt/umass


Ele monta do dispositivo passado como parâmetro em um ponto de montagem, escreve um arquivo de 512 MB, desmonta, monta de novo, lê este mesmo arquivo, e depois o remove, desmontando ao final.

O desmontar e montar no meio é para anular qualquer cache de disco que o sistema tenha feito.

O script foi feito para uniformizar o teste, para facilitar ele ser refeito, e para mostrar como fiz. Para fazer o teste em outro sistema Unix Like pode ser necessário mudar algumas coisas, entre elas o ponto de montagem (/mnt/umass).
Conforme os dispositivos que tenho no meu sistema, o parâmetro do script muda, mas no momento é /dev/da10s1 para a porta SD do leitor, e /dev/da12s1 para a Micro SD.

O sistema não foi colocado como dedicado ao teste, isto é, estou com navegadores, programa de catalogação de fotos, uma planilha etc, abertos, mas a carga do sistema está baixa. São 4 núcleos de processador com duas Threads cada.

$ uptime
23:37  up 42 days, 39 mins, 33 users, load averages: 0,49 0,45 0,54


Então vamos aos testes.

Sony Micro SDHC 32 GB UHS-1 70 MB/s

Para a porta SD, isto é, com adaptador.

Montando /dev/da10s1

Escrevendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 33.749341 secs (15907597 bytes/sec)

Lendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 9.149255 secs (58679191 bytes/sec)


Para a porta Micro SD, isto é, sem adaptador.

Montando /dev/da12s1

Escrevendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 33.158427 secs (16191085 bytes/sec)

Lendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 9.158906 secs (58617361 bytes/sec)


Note que não houve diferença significante entre com e sem adaptador neste caso.

SanDisk Micro SDHC 32 GB UHS-1 48 MB/s

Para a porta SD, isto é, com adaptador.

Montando /dev/da10s1

Escrevendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 41.821036 secs (12837341 bytes/sec)

Lendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 14.240209 secs (37701056 bytes/sec)


Para a porta Micro SD, isto é, sem adaptador.

Montando /dev/da12s1

Escrevendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 41.561215 secs (12917594 bytes/sec)

Lendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 14.235834 secs (37712643 bytes/sec)


Note que não houve diferença significante entre com e sem adaptador também neste caso.

SanDisk Micro SDHC 32 GB UHS-1 98 MB/s

Para a porta SD, isto é, com adaptador.

Montando /dev/da10s1

Escrevendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 25.436249 secs (21106528 bytes/sec)

Lendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 9.109097 secs (58937888 bytes/sec)


Para a porta Micro SD, isto é, sem adaptador.

Montando /dev/da12s1

Escrevendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 25.305341 secs (21215715 bytes/sec)

Lendo 512 MB

512+0 records in
512+0 records out
536870912 bytes transferred in 9.099612 secs (58999319 bytes/sec)


Note que não houve diferença significante entre com e sem adaptador também neste caso.

Conclusões

Com os 3 modelos de cartões Micro SD que possuo não consegui reproduzir a afirmação de que o adaptador muda a velocidade do cartão. Em todos os testes, tanto as taxas de leitura e escrita permaneceram basicamente inalteradas entre usar ou não o adaptador.

Uma coisa foi mostrada é que existe uma diferença muito grande entre a taxa de leitura e a de escrita, mas elas não mudam em relação a usar ou não o adaptador. Isto é conhecido, e pode até mesmo acontecer em HDs.

Se isto acontece em alguma outra situação, ela tem que ser mostrada, mas aqui está provado que não se pode afirmar que o adaptador sempre reduz a velocidade do cartão. Tudo até o momento indica que não muda.

Pretendo fazer o teste na câmera, mas outro artigo deve entrar na frente. Ele é sobre algo que observei enquanto fazia o teste com a câmera.

Nenhum comentário:

Postar um comentário