¿Cuál es la división óptima de la memoria principal frente a la GPU?

73

Leí que es posible asignar 128 MB, 64 MB o 32 MB a la memoria de video de la Raspberry Pi.

Dado que mi caso de uso principal para esta máquina es educativo: ejecutaré scripts python ligeros y navegación web. ¿Es probable que sufra alguna pérdida de funciones al cambiar a solo 32 MB de memoria para mí?

No preveo querer usar ningún 3D o reproducir ningún video.

Salim Fadhley
fuente
2
Asegúrese de ajustar su intercambio : D
earthmeLon
1
Espera, esto tiene 42 votos. ¡No es una pregunta, es la respuesta!
El chico con el sombrero
Creo que el rango de valores ahora es más amplio que eso y, según la respuesta de @Krysztof Adamski, es posible especificar una división específica en config.txt para diferentes tamaños de memoria total para que la misma tarjeta pueda producir divisiones apropiadas cuando se coloca en RPis diferentes , lo cual es útil al preparar distribuciones, supongo ...
SlySven

Respuestas:

58

Esperaría que no experimente una diferencia notable a menos que esté haciendo tareas gráficamente pesadas, como reproducir videos.

Sin embargo, es difícil medir la configuración óptima, ya que los límites de rendimiento variarán según las aplicaciones que se estén ejecutando y las expectativas del usuario.

Lo mejor que puedes hacer es experimentar.

Si desea cambiar la división, existen dos métodos diferentes, según el firmware que tenga. Si es posible, asegúrese de tener el último firmware . Si no puede actualizarlo por cualquier motivo, he incluido las dos opciones a continuación:

Nuevo firmware (después de octubre de 2012)

  • Edite /boot/config.txty agregue o edite la siguiente línea:

    gpu_mem=16
    
  • El valor puede ser 16, 64, 128o 256y representa la cantidad de RAM disponible para la GPU.

Firmware anterior (antes de octubre de 2012)

Para alterar la memoria de video, debe reemplazar el start.elfarchivo en la /boot/partición de la imagen. Los posibles .elfarchivos deben estar en el /boot/directorio de su Pi. Realiza el cambio reemplazando el start.elfarchivo con uno de los otros.

Hay tres modelos de memoria, y aquí están las recomendaciones tomadas del panel de discusión de Raspberry Pi :

  1. 224 MB de RAM y 32 MB de VRAM para una distribución de escritorio de Linux, o para aplicaciones pesadas (sin GUI) que no necesitan reproducir video ni renderizar en 3D.  
  2. 192 MB de RAM y 64 MB de VRAM (predeterminado) para las distribuciones de escritorio que desean reproducir videos o tener efectos 3D.  
  3. 128 MB de RAM y 128 MB de VRAM para aplicaciones y juegos que hacen una gran cantidad de contenido multimedia o juegan juegos renderizados en 3D.  

 Y uno mas:

240 MB de RAM y 16 VRAM para una potencia gráfica casi nula. Hay suficiente memoria de GPU para renderizar la pantalla, pero no mucho más. Úselo cuando necesite un aumento adicional del rendimiento sin GUI.

Jivings
fuente
He actualizado la respuesta para los nuevos modelos de 512 MB.
Jivings
Los subtítulos parecen aumentar las necesidades de memoria ; para un video de 1080p con subtítulos, 64 MB no era suficiente.
Raphael
51

RAM es muy crucial para el rendimiento de Linux por un par de razones:

  • Cachés Linux se ejecuta sin memoria libre la mayor parte del tiempo. Si las aplicaciones no usan algo de memoria, se usa para cachés que acelera las cosas. Por lo tanto, no se desperdicia ningún recuerdo. Si las aplicaciones necesitan más memoria, las cachés se liberan para que las cachés nunca eviten que se ejecuten las aplicaciones que necesitan más RAM. Pero, por supuesto, cuanto más pueda almacenar en caché, mejor.

  • Muchas aplicaciones (especialmente las de escritorio) necesitan mucha memoria para ejecutarse hoy en día. Esto no es una sorpresa: la mayoría de los sistemas de escritorio (o incluso los teléfonos inteligentes) en estos días tienen mucha más memoria que Rapsberry Pi. Por ejemplo, los navegadores web, incluso livianos) usarán decenas de MB de memoria tan pronto como abra un sitio web más grande.

  • Todas y cada una de las aplicaciones necesitan cierta cantidad de memoria. Entonces, cuantas más aplicaciones ejecutes, más memoria usarán.

Por lo tanto, siempre desea tener tanta memoria ARM como sea posible. Pero la GPU tiene sus propias necesidades según las características que desee.

Versión de 256 MB

Para RaspberryPi anterior, con 256 MB de RAM, hay 4 divisiones disponibles:

  • 240/16 : el ARM de mayor tamaño de RAM puede obtener (240 MB) con memoria de GPU simétrica. Es lo mejor para la informática general cuando no necesita gráficos en 3D o aceleración de video por hardware. Tiene suficiente memoria para manejar una resolución de framebuffer de 1920x1200x16bpp. Si bien 32bpp también funciona, no se recomienda ya que deja una cantidad muy pequeña de memoria libre para la GPU.

  • 224/32 - Este está en desuso a favor de la división 240/16. Tiene una decodificación de video 3D y hardware incorporada, pero dado que no hay suficiente memoria para usarla realmente, no tiene mucho sentido usarla. A menos que tenga algunos problemas con la división 240/16 o quiera usar el framebuffer de 32bpp en la resolución más alta. Es posible que se elimine en el futuro.

  • 192/64 : necesita al menos 64 MB de GPU dividida para usar aceleración de video por hardware o gráficos en 3D. Es posible que no haya suficiente memoria GPU para la reproducción de video acelerada por hardware a la resolución más alta o si necesita mucha memoria GPU para cosas como texturas.

  • 128/128 : la mayor GPU RAM puede obtener. Úselo cuando necesite mucha memoria para la tarjeta gráfica 3D y la reproducción de video acelerada por hardware en alta resolución. Esta división es necesaria para que RaspBMC funcione correctamente o reproduzca contenido de video fullHD con omxplayer sin problemas.

Versión de 512 MB

Las nuevas versiones de RaspberryPi tienen 512 MB de RAM. Tiene 4 divisiones adicionales diseñadas para esta versión:

  • 496/16 y 448/64 - como 240/16y 192/64dividido por 256 MB respectivamente pero con 256 MB más de RAM disponible para ARM. Como la GPU tiene solo 16 MB / 64 MB o RAM, todas las limitaciones de 240/16/ 192/64todavía se aplican.
  • 384/128 : similar a la división 128/128 para 256 MB, debe obtener todas las funciones de chip gráfico pero con una cantidad razonable de memoria ARM. Esta será probablemente la división más universal en este momento.
  • 256/256 : memoria adicional de la tarjeta gráfica si realmente la necesita, como para texturas grandes y cosas similares. Si bien 256 MB de memoria ARM es más grande de lo que podrías tener en RaspberryPis anteriores, no creo que esta se use en muchas ocasiones.

Divisiones dinámicas

Las nuevas versiones del paquete de firmware eliminan la mayoría de los start_*.elfarchivos, dejando solo start.elfy start_cd.elf(también los fixup*.elfarchivos donde se agregaron). De ahora en adelante, no tiene que elegir manualmente el adecuado start_*.file. En su lugar, debe usar las gpu_mem*opciones en el config.txtarchivo para elegir cuánta memoria va a la GPU. La memoria restante se asignará a ARM. Debería ser posible utilizar un número arbitrario en el siguiente rango para estas opciones:

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

Si bien no hay valores divididos codificados en este momento, la mayoría de la información para el resto de esta respuesta aún debe ser válida cuando intente determinar cuánta memoria debe asignarse a la GPU.

start_cd.elfy los fixup_cd.elfarchivos son versiones reducidas de los archivos respectivos, solo se usan cuando gpu_mem=16.

Uso de una tarjeta SD en versiones de 256 y 512 MB

Si está utilizando una imagen de tarjeta SD para diferentes versiones de RaspberryPi, puede usar gpu_mem_256y gpu_mem_512opciones. El primero solo se usará en la versión de 256 MB, mientras que el segundo solo en la versión de 512 MB de la placa.

Krzysztof Adamski
fuente
Sí, la actualización vale la pena si desea usar XBMC y LXDE sin aburrir el cambio manual del archivo de configuración antes de cambiar, o si Pi es su computadora principal que desea usar a diario.
avra
66
Orientación útil Para aclarar, ¿cuál sería la división óptima para correr sin cabeza? ¿Por ejemplo, el módulo de cámara rpi tiene un requisito de GPU?
geotheory
Ahora hay un gpu_mem_1024para, no sorprendentemente, los 1024 MB RPis, que actualmente es el RPi 2 B (¿y supongo que A si sale uno?)
SlySven
De acuerdo con elinux.org/RPiconfig#Camera , el módulo de cámara requiere las siguientes líneas en /boot/config.txt: start_x=1y gpu_mem=128o más. Además, /usr/bin/raspi-configtiene una opción que habilita la cámara.
mpb