Temos vindo aqui a analisar diferentes aspectos relacionados com o desempenho dos Raspberry, nomeadamente entre as versões Raspberry Pi model B e a Raspberry Pi model B versão 2.
Quando configurei o mais recente Raspberry Pi model B versão 2 cá em casa, a velocidade era bastante sofrível. Na verdade, o OSMC arrastava-se e ficava mesmo bloqueado. Foi então que me lembrei que não havia sido boa ideia utilizar o único cartão micro SD que então tinha à mão.
Na verdade, nem todos os cartões SD nasceram iguais! Muitas vezes podemos interrogar-nos porque custam uns bastante mais que outros? Na verdade, um dos factores que distingue vários tipos de cartões SD é a sua velocidade de escrita e de leitura. Há várias boas referências na Internet, sendo que destaco particularmente esta página.
Acabei por substituir o cartão micro SD por outro, com características diferentes. E realmente a mudança foi brutal! Olhando para os dois abaixo, podem parecer iguais, mas há um dourado, que por acaso (?) é o que se porta melhor:
Para averiguar as diferenças entre os dois, resolvi fazer alguns testes. Utilizei o comando hdparm (é preciso instalá-lo, pois não vem por defeito com o OSMC), bem como o dd. Ambos são comandos problemáticos, especialmente o dd, pelo que tenham sempre a certeza do que estão a fazer!
No cartão micro SD inicial, o hdparm deu valores de leitura com cache, ligeiramente superiores a 430 MB/segundo. A ler directamente do cartão, a velocidade ficou próxima dos 18 MB/segundo. O comando dd permite-nos averiguar a velocidade de escrita, e essa foi ainda inferior, entre os 8 e 9 MB/segundo. A velocidade de leitura com o dd foi ainda superior ao do hdparm:
osmc@osmc:~$ uname -a Linux osmc 4.3.0-10-osmc #1 SMP PREEMPT Sun Nov 29 14:06:50 UTC 2015 armv7l GNU/Linux osmc@osmc:~$ sudo hdparm -tT /dev/mmcblk0p2 /dev/mmcblk0p2: Timing cached reads: 878 MB in 2.00 seconds = 438.80 MB/sec Timing buffered disk reads: 54 MB in 3.06 seconds = 17.64 MB/sec osmc@osmc:~$ sudo hdparm -tT /dev/mmcblk0p2 /dev/mmcblk0p2: Timing cached reads: 864 MB in 2.00 seconds = 431.84 MB/sec Timing buffered disk reads: 56 MB in 3.11 seconds = 18.01 MB/sec osmc@osmc:~$ dd if=/dev/zero of=test bs=1048576 count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 23.2975 s, 9.0 MB/s osmc@osmc:~$ dd if=test of=/dev/null bs=1048576 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 0.437839 s, 479 MB/s osmc@osmc:~$ rm test osmc@osmc:~$ dd if=/dev/zero of=test bs=1048576 count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 26.4668 s, 7.9 MB/s osmc@osmc:~$ dd if=test of=/dev/null bs=1048576 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 0.420012 s, 499 MB/s |
No segundo cartão micro SD, o hdparm deu valores de leitura com cache de cerca de 380 MB/segundo. A ler directamente do cartão, a velocidade ficou ligeiramente acima dos 18 MB/segundo. Com o comando dd, a velocidade de escrita ficou entre os 45 e 50 MB/segundo, com a velocidade de leitura do dd a ser também superior à do hdparm:
osmc@osmc:~$ uname -a Linux osmc 4.3.0-10-osmc #1 SMP PREEMPT Sun Nov 29 14:06:50 UTC 2015 armv7l GNU/Linux osmc@osmc:~$ sudo hdparm -tT /dev/mmcblk0p2 /dev/mmcblk0p2: Timing cached reads: 762 MB in 2.00 seconds = 380.58 MB/sec Timing buffered disk reads: 56 MB in 3.02 seconds = 18.54 MB/sec osmc@osmc:~$ sudo hdparm -tT /dev/mmcblk0p2 /dev/mmcblk0p2: Timing cached reads: 756 MB in 2.00 seconds = 377.79 MB/sec Timing buffered disk reads: 56 MB in 3.01 seconds = 18.57 MB/sec osmc@osmc:~$ dd if=/dev/zero of=test bs=1048576 count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 4.57351 s, 45.9 MB/s osmc@osmc:~$ dd if=test of=/dev/null bs=1048576 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 0.476132 s, 440 MB/s osmc@osmc:~$ rm test osmc@osmc:~$ dd if=/dev/zero of=test bs=1048576 count=200 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 4.04712 s, 51.8 MB/s osmc@osmc:~$ dd if=test of=/dev/null bs=1048576 200+0 records in 200+0 records out 209715200 bytes (210 MB) copied, 0.489697 s, 428 MB/s |
Resumindo, a velocidade de escrita do segundo cartão micro SD parece ser a determinante na perceção de desempenho do OSMC. É aqui que entra a classe dos cartões, e se repararam o segundo cartão é da classe 10, enquanto o primeiro é de classe 4. As classes dos cartões estão relacionados com a sua capacidade de escrita, essencial na fotografia/vídeo. Notem até que a velocidade de leitura do primeiro é melhor!
Para que o OSMC tenha este comportamento, é em princípio porque está a escrever muita informação no cartão micro SD. Presumo que quando está a fazer streaming, que esteja a guardar informação temporariamente no cartão micro SD. Ainda assim, é uma dúvida que vou tentar esclarecer posteriormente…