Eu tenho um Raspberry Pi executando o Raspbian Wheezy sem cabeça com todos os softwares relacionados a gráficos desinstalados.
Eu tenho o bitcoind em execução, que consome a maioria dos recursos. Normalmente, quando verifico os processos via top
, percebo que apenas bitcoind
utiliza uma quantidade significativa de recursos, com sshd
e top
no segundo e terceiro lugares ou mais.
Por alguma razão, atualmente, um novo processo começa a atingir o pico de uso de recursos, chamado mmcqd/0
. Geralmente, usa até 55% da energia da CPU em picos e permanece constante em torno de 5%.
O que esse processo faz?
Li que isso pode ser causado por um cartão SD lento, mas testei minhas velocidades de leitura / gravação e obtive> 15 MB / s para ambos (recebi um cartão SD classe 10 de 32 GB).
mmcqd
não é um processo específico do Pi, mas existe para o Linux em geral.Respostas:
mmcqd
é um encadeamento do kernel, responsável pelo gerenciamento de operações de E / S em fila no cartão SD. Um alto uso de CPU desse processo indica que você tem um gargalo de E / S de disco.A velocidade de leitura / gravação seqüencial real nem sempre é significativa para cartões SD, o acesso aleatório é mais típico para um sistema operacional. Se você souber que
bitcoind
frequentemente grava dados não críticos no disco, considere usartmpfs
para armazenamento de dados. Em seguida, usando um trabalho cron, você pode sincronizar periodicamente os dados em tmpfs para o disco.Você também pode experimentar o uso de um HDD USB, que deve ter um desempenho melhor com o acesso de gravação (aleatório).
fonte
tmpfs
no cartão SD em vez de acessar diretamente o cartão SD?tmpfs
reside na RAM. Se um processo está constantemente alterando pequenas partes de um arquivo, pode valer a pena salvar essas alterações periodicamente. Basicamente, você está trocando segurança de dados por desempenho.Eu tive o mesmo problema em um sistema Linux incorporado, portanto, não exatamente um Raspberry Pi, mas não muito longe.
No meu caso, o problema era simplesmente que o disco estava cheio e houve um processo tentando gravar logs. Acredito que as repetidas falhas de gravação estavam fazendo com que o mmcqd tentasse novamente várias vezes e talvez mantivesse um thread em espera.
Depois de remover alguns arquivos de log, tudo estava bem.
fonte