terça-feira, 18 de abril de 2017

É possível "aumentar" 16MB de RAM no Raspberry Pi 2 e 3. (experimental)


Um detalhe que deve ter passado despercebido por muitos (eu inclusive) é que no Raspberry Pi 2B/3B, ambos com 1GB de RAM, somente 1008MB são úteis ao contrário de 1024MB. Rodando os comandos abaixo por exemplo você saberá como a memória cpu/gpu estão divididas:

$ vcgencmd get_mem arm
arm=944M
$ vcgencmd get_mem gpu
gpu=64

No meu exemplo somando 944+64=1008MB.

Segundo o engenheiro dom o Raspberry Pi tem um registrador de memória de 30 bits. Essa quantidade de bits equivale à 2^30 endereços ou 1073741824 bytes (1024MB). O acesso da memória pelo ARM reservada para GPU é feita por uma MMU em forma de blocos de 16MB. Do total de 64 blocos (16MB*64=1024MB), 1 é reservado para "periféricos da GPU". Por causa da forma como foi implementado não era possível o ARM acessar essa porção de memória. Segundo ele o uso dessa memória pela GPU não era efetivamente utilizado pois a CPU precisa de acesso a partes da memória da GPU para controle de alguns periféricos (tela de toque por exemplo).

Uma atualização que utiliza algumas técnicas como por exemplo DMA está sendo liberada (de forma experimental) para liberar o acesso a essa memória.

Com o sistema atualizado é possível ativar o recurso adicionando a seguinte linha ao /boot/config.txt:

total_mem=1024

Caso a opção gpu_mem não esteja especificada a memória será aumentada para a GPU, de 64MB para 76MB e para o ARM de 944MB para 948MB.

Lembrando que sempre foi possível especificar a divisão de memória, basta configurar.

Segundo dom alguns usuários do kodi tem reportado problemas utilizando essa opção e os mesmos relataram que usando total_mem=1023 (aumentando somente 15MB) tornava o sistema estável.

Como o título diz, se trata por enquanto de uma opção experimental.

Fonte: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=180420

4 comentários:

  1. eu estou usando 1024...
    pi@raspberrypi3:~ $ vcgencmd get_mem arm
    arm=768M
    pi@raspberrypi3:~ $ vcgencmd get_mem gpu
    gpu=256M

    ResponderExcluir
  2. Isso ajuda no desempenho do emulador de 64?

    ResponderExcluir