Posso usar o Nand flash como memória de troca no Embedded Linux?

2

Eu tenho 128 MB de RAM em um dos meus produtos, o que foi suficiente quando lançamos a primeira versão do produto. Mas agora adicionamos alguns recursos extras, portanto, essa quantidade de RAM pode causar um problema de OOM.

Tenho 64 MB de memória Flash, dos quais mais de 50% não são utilizados. Posso usar a memória restante como memória de troca?

Estamos usando o kernel Linux versão 3.4.56 neste produto.

Agradecemos antecipadamente por suas sugestões.

nyk_mat
fonte

Respostas:

2

Se o flash suportar o nível de desgaste (dependerá), a troca poderá ser viável, depende de quanto tempo você deseja que esses dispositivos durem. Existem outros fatores - qual a classificação da memória flash em termos de gravação, quanto tempo ela está em uso até agora e qual a sua atividade em termos de gravação.

O nível de desgaste é um processo em que o controlador mantém uma contagem constante de quantas vezes cada célula foi gravada e tenta manter as coisas para que todas as células tenham gravações iguais para elas.

Com isso funcionando perfeitamente e um dispositivo classificado para 100.000 gravações (por exemplo), algumas matemáticas muito precisas nos dizem que você pode esperar uma vida de pouco mais de 2,5 anos com desgaste perfeito e 10 MB / s. Realisticamente, você provavelmente não verá desgaste perfeito, mas provavelmente também não verá esse nível de escrita constante.

Sem o nível de desgaste, todas as apostas estão desativadas, você não tem idéia de quantas vezes um dado pode ser sobrescrito e sem algo para espalhá-lo pelas células flash, você pode começar a matar células em horas / dias / semanas, dependendo do seu uso .

Portanto, você pode usar seu dispositivo flash para troca, mas se você deve ou não depender dos fatores acima e por quanto tempo deseja que os dispositivos sejam viáveis.

Outra observação: a velocidade geralmente será LENTA para gravações aleatórias neste dispositivo; portanto, você verá uma enorme penalidade de desempenho ao pressionar a troca de flash ao configurá-lo. Você evitará situações de OOM, mas pode ser tão ruim se tudo diminuir a velocidade de rastreamento, então, definitivamente, são necessários alguns testes para verificar se vale a pena.

Adam C
fonte
1

O Linux não se importa em qual dispositivo de bloco o swap vive. Usando o swaponcomando de um shell, você pode colocá-lo onde quiser.

Pode ser uma partição do disco rígido sda1, sda2etc., um dispositivo iSCSI, um dispositivo criptografado ou LVM'ed em /dev/mapper, ou um mtdblockdispositivo.

Se o seu flash já estiver formatado, convém usar um arquivo de troca em vez de um dispositivo de bloco.

LawrenceC
fonte
Obrigado Adam e ultrasawblade pela sua resposta rápida. Mais tarde, passei pelas limitações do uso do flash como memória de troca e também encontrei um parâmetro interessante em / proc / meminfo, ou seja, memória inativa. Meu status atual do sistema mostra os 8 Mb de memória livre, mas quando libero manualmente a memória inativa, ele mostra cerca de 50 Mb de memória livre. Então agora estou procurando a maneira pela qual o sistema pode limpar a memória inativa por si só. Portanto, meu problema de memória será resolvido facilmente.
Nyk_mat