Qual é a melhor divisão da memória principal versus a memória GPU?

73

Eu li que é possível alocar 128 MB, 64 MB ou 32 MB à memória de vídeo do Raspberry Pi.

Dado que meu caso de uso principal para esta máquina é educacional: executarei scripts python leves e navegação na web. É provável que sofra alguma perda de recursos ao mudar para apenas 32 MB de memória para mim?

Eu não antecipo querer usar 3D ou reproduzir qualquer vídeo.

Salim Fadhley
fonte
2
Certifique-se de ajustar a sua swapiness : D
earthmeLon
11
Espere, isso tem 42 votos. Não é uma pergunta, é a resposta!
O cara com o chapéu
Acredito que a faixa de valores agora seja maior que isso e, conforme a resposta de @Krysztof Adamski, é possível especificar uma divisão específica no config.txt para diferentes tamanhos de memória total, para que o mesmo cartão possa produzir divisões apropriadas quando colocado em diferentes RPIS - o que é útil quando se prepara distribuições eu acho ...
SlySven

Respostas:

58

Eu esperaria que você não sentisse uma diferença perceptível, a menos que esteja executando tarefas graficamente pesadas, como reproduzir vídeo.

No entanto, é difícil avaliar as configurações ideais, pois os limites de desempenho variam dependendo de quais aplicativos estão sendo executados e das expectativas do usuário.

A melhor coisa que você pode fazer é experimentar.

Se você deseja alterar a divisão, existem dois métodos diferentes, dependendo do firmware que você possui. Se possível, verifique se você possui o firmware mais recente . Se não for possível atualizar por qualquer motivo, incluí as duas opções abaixo:

Novo firmware (após outubro de 2012)

  • Edite /boot/config.txte adicione ou edite a seguinte linha:

    gpu_mem=16
    
  • O valor pode ser 16, 64, 128ou 256e representa a quantidade de RAM disponível para o GPU.

Firmware antigo (antes de outubro de 2012)

Para alterar a memória de vídeo, você precisa substituir o start.elfarquivo na /boot/partição da imagem. Os .elfarquivos possíveis devem estar no /boot/diretório do seu Pi. Você faz a troca substituindo o start.elfarquivo por um dos outros.

Existem três modelos de memória, e aqui estão as recomendações tiradas do quadro de discussão do Raspberry Pi :

  1. 224 MB de RAM e 32 MB de VRAM para uma distro de desktop Linux ou aplicativos pesados ​​(sem interface gráfica) que não precisam reproduzir vídeo nem renderizar em 3D.  
  2. 192 MB de RAM e 64 MB de VRAM (padrão) para distros de desktop que desejam reproduzir vídeo ou ter efeitos 3D.  
  3. 128 MB de RAM e 128 MB de VRAM para aplicativos e jogos que utilizam multimídia extensiva ou reproduzem jogos renderizados em 3D.  

 E mais um:

240 MB de RAM e 16 VRAM para potência gráfica quase zero. Há memória GPU suficiente para renderizar a tela, mas não muito mais. Use isso quando precisar de um aumento adicional no desempenho da GUI.

Jivings
fonte
Atualizei a resposta para os novos modelos de 512 MB.
Jivings
Legendas parecem aumentar as necessidades de memória ; para um vídeo 1080p com legendas, 64 MB não eram estritamente suficientes.
Raphael
51

A RAM é muito crucial para o desempenho do Linux por dois motivos:

  • Caches. O Linux é executado sem memória livre a maior parte do tempo. Se alguma memória não for usada pelos aplicativos, ela será usada para caches que aceleram as coisas. Portanto, nenhuma memória é desperdiçada. Se os aplicativos precisarem de mais memória, os caches serão liberados para que eles nunca impeçam a execução de aplicativos que precisam de mais RAM. Mas é claro que quanto mais você puder armazenar em cache, melhor.

  • Muitos aplicativos (especialmente os de desktop) precisam de muita memória para rodar hoje em dia. Isso não é surpresa - a maioria dos sistemas de desktop (ou até smartphones) hoje em dia tem muito mais memória que o Rapsberry Pi. Por exemplo, navegadores da Web, mesmo que leves), usarão dezenas de MB de memória assim que você abrir um site maior.

  • Todo e qualquer aplicativo precisa de alguma quantidade de memória. Portanto, quanto mais aplicativos você executa, mais memória eles usam.

Então você sempre quer ter o máximo de memória ARM possível. Mas a GPU tem suas próprias necessidades, dependendo dos recursos que você deseja dela.

Versão de 256MB

Para RaspberryPi mais antigo, com 256 MB de RAM, 4 divisões estão disponíveis:

  • 240/16 - O máximo de ARM de tamanho RAM possível (240 MB) com memória GPU imitada. É o melhor para computação geral quando você não precisa de gráficos 3D ou aceleração de vídeo por hardware. Possui memória suficiente para lidar com a resolução de buffer de quadro de 1920x1200x16bpp. Embora 32bpp também esteja funcionando, não é recomendado, pois deixa uma quantidade muito pequena de memória livre para a GPU.

  • 224/32 - Este foi descontinuado em favor da divisão 240/16. Possui decodificação de vídeo em 3D e hardware, mas como não há memória suficiente para usá-lo, há pouco sentido em usá-lo. A menos que você tenha problemas com a divisão 240/16 ou queira usar o buffer de quadros de 32bpp na resolução mais alta. É possível que seja excluído no futuro.

  • 192/64 - Você precisa de pelo menos 64 MB de GPU dividida para usar a aceleração de vídeo por hardware ou gráficos 3D. Pode não haver memória GPU suficiente para a reprodução de vídeo acelerada por hardware na resolução mais alta ou se você precisar de muita memória GPU para coisas como texturas.

  • 128/128 - O máximo de GPU de RAM possível. Use-o quando precisar de muita memória para reprodução de vídeo acelerada por placa gráfica e hardware 3D em alta resolução. Essa divisão é necessária para que o RaspBMC funcione corretamente ou reproduza conteúdo de vídeo fullHD com o omxplayer sem problemas.

Versão de 512MB

Novas versões do RaspberryPi tem 512 MB de RAM. Você tem 4 divisões adicionais projetadas para esta versão:

  • 496/16 e 448/64 - como 240/16e 192/64dividido por 256MB respectivamente, mas com 256MB mais RAM disponível para ARM. Como a GPU possui apenas 16 MB / 64MB ou RAM, todas as limitações de 240/16/ 192/64ainda se aplicam.
  • 384/128 - Semelhante ao 128/128 dividido para 256 MB - você deve obter todos os recursos dos chips gráficos, mas com uma quantidade razoável de memória ARM. Essa provavelmente será a divisão mais universal no momento.
  • 256/256 - Um pouco de memória da placa gráfica de bônus, se você realmente precisar, como para texturas grandes e coisas semelhantes. Embora 256 MB de memória ARM sejam maiores do que você poderia ter nos RaspberryPis mais antigos, acho que este não será usado em muitas ocasiões.

Divisões dinâmicas

Novas versões do pacote de firmware removem a maioria dos start_*.elfarquivos, deixando apenas start.elfe start_cd.elf(também fixup*.elfarquivos onde adicionados). A partir de agora, você não precisa escolher manualmente corretamente start_*.file. Em vez disso, você deve usar gpu_mem*opções no config.txtarquivo para escolher quanta memória vai para a GPU. A memória restante será alocada para o ARM. Deve ser possível usar um número arbitrário no seguinte intervalo para essas opções:

**512MB of RAM**: 16M-448M
**256MB of RAM**: 16M-192M

Embora não haja valores de divisão codificados no momento, a maioria das informações para o restante desta resposta ainda deve ser válida quando você está tentando determinar quanta memória deve ser alocada para a GPU.

start_cd.elfe fixup_cd.elfarquivos são versões de corte dos respectivos arquivos, usados ​​somente quando gpu_mem=16.

Usando um cartão SD na versão de 256 e 512 MB

Se você estiver usando uma imagem de cartão SD para diferentes versões do RaspberryPi, poderá usar gpu_mem_256e gpu_mem_512opções. O primeiro será usado apenas na versão de 256 MB, enquanto o segundo apenas na versão de 512 MB da placa.

Krzysztof Adamski
fonte
Sim, a atualização vale a pena se você deseja usar o XBMC e o LXDE sem alterar a configuração manual do arquivo de configuração antes da opção eatch, ou se o Pi é o computador principal que você deseja usar diariamente.
Avra
6
Orientação útil. Para esclarecer - qual seria a divisão ideal para correr sem cabeça? Por exemplo, o módulo de câmera rpi tem um requisito de GPU?
Geotheory
Existe agora um gpu_mem_1024para, não surpreendentemente os 1024 MB RPIS - que atualmente é o RPI 2 B (e eu acho que um se sai?)
SlySven
De acordo com elinux.org/RPiconfig#Camera , o módulo da câmera requer as seguintes linhas em /boot/config.txt: start_x=1e gpu_mem=128ou mais. Além disso, /usr/bin/raspi-configpossui uma opção que habilita a câmera.
mpb