
Rendimiento gráfico Raspberry Pi
Información del documento
Escuela | Universitat Politècnica de València |
Especialidad | Ingeniería Informática |
Lugar | Valencia |
Tipo de documento | Trabajo de Fin de Grado |
Idioma | Spanish |
Formato | |
Tamaño | 2.58 MB |
Resumen
I.Metodología de la Investigación Optimización del Rendimiento Gráfico de la Raspberry Pi
Este trabajo de investigación analiza el rendimiento gráfico de la Raspberry Pi (modelos 1 B+ y 2 B+), buscando la configuración óptima para maximizar sus capacidades. Se utilizaron diferentes distribuciones Linux, incluyendo Raspbian y Arch Linux, y se experimentó con el overclocking para mejorar el rendimiento del procesador y la GPU VideoCore IV. Se emplearon diversos benchmarks como herramientas de evaluación, incluyendo pruebas de Java, OpenGL ES, y Gtkperf, para medir los FPS y el tiempo de respuesta en diferentes escenarios. Se variaron parámetros clave en el archivo boot/config.txt
, como arm_freq
, sdram_freq
, core_freq
, gpu_mem
(asignando diferentes cantidades de memoria RAM a la GPU, como 64MB, 128MB y 256MB), cma_lwm
, y cma_hwm
(para gestión dinámica de memoria), y over_voltage
para explorar el impacto del overclocking en el rendimiento gráfico. La investigación también consideró la influencia de los entornos de escritorio LXDE, XFCE y KDE en el rendimiento.
1. Selección de Hardware y Software
La investigación se centró en la optimización del rendimiento gráfico de la Raspberry Pi, utilizando dos modelos principales: la Raspberry Pi 1 B+ (un solo núcleo ARMv6 a 700 MHz) y la Raspberry Pi 2 B+ (cuatro núcleos ARMv7 a 1 GHz). Ambas comparten la GPU Broadcom VideoCore IV a 250 MHz, con la posibilidad de overclocking hasta 500 MHz. Se trabajó con diferentes distribuciones Linux, destacando Raspbian (basada en Debian) como la distribución recomendada, aunque se exploraron otras como Arch Linux para comparar su rendimiento gráfico. La elección de los lenguajes de programación se basó en la compatibilidad con la arquitectura ARM, utilizando ejemplos como Python, Java, C, entre otros, para el desarrollo de las pruebas de rendimiento o benchmarks. Se seleccionaron entornos de escritorio como LXDE, XFCE y KDE para evaluar su impacto en el rendimiento gráfico de la Raspberry Pi, considerando que LXDE se perfila como ideal para sistemas con recursos limitados. La selección del lenguaje de programación para los benchmarks fue crucial, con Java destacando por su amplio uso y la existencia de benchmarks específicos para Raspberry Pi, creados por Roy Longbottom. Además, se incorporó un script del mismo autor para monitorear la temperatura y la frecuencia de la CPU en MHz.
2. Diseño y Ejecución de Benchmarks
Para medir el rendimiento gráfico, se utilizaron distintos benchmarks, adaptados y optimizados para la arquitectura ARM de la Raspberry Pi y su GPU VideoCore IV. El proceso involucró la búsqueda y selección de bancos de pruebas compatibles, centrándose en Java, OpenGL ES, y Gtkperf. Para los benchmarks de Java, se utilizaron pruebas diseñadas por Roy Longbottom, que incluían la manipulación de imágenes PNG, pruebas de renderizado de gráficos 2D y la simulación de escenarios de uso de entornos de escritorio y conversión de video. Para complementar la evaluación en Java, se utilizaron además el benchmark Gtkperf para el análisis de entornos de escritorio y el benchmark avconv para la conversión de video. Las pruebas de OpenGL ES incluían el renderizado de cubos con diferentes niveles de complejidad (número de triángulos), la adición de texturas y efectos como sombras. Para el análisis de entornos de escritorio se empleó el benchmark Gtkperf, ejecutando 200 iteraciones por prueba. Para asegurar la consistencia de los resultados, las pruebas se realizaron en un entorno con condiciones ambientales controladas (temperatura, humedad, luz), y se ejecutaron las mismas pruebas con tres diferentes versiones de máquinas virtuales Java (JVM 6, 7 y 8), creando enlaces simbólicos en usr/bin para facilitar la gestión. La automatización de las pruebas se logró mediante un script en Python, que permite modificar parámetros clave del archivo boot/config.txt, como arm_freq, sdram_freq, core_freq, over_voltage y gpu_mem.
3. Análisis de Parámetros y Variables
La metodología implicó la manipulación de varios parámetros en el archivo boot/config.txt para optimizar el rendimiento. Se modificaron variables como arm_freq (frecuencia del procesador), core_freq (frecuencia de la GPU), sdram_freq (frecuencia de la RAM), y over_voltage (voltaje). Particularmente importante fue la variable gpu_mem, que permitía asignar diferentes cantidades de RAM a la GPU (64MB, 128MB, 256MB), explorando tanto la asignación estática como la dinámica mediante cma_lwm y cma_hwm. El análisis se enfocó en cómo la asignación de memoria RAM a la GPU, la frecuencia del procesador y la GPU, así como el overclocking, afectan el rendimiento gráfico. Se realizaron pruebas con diferentes distribuciones de Linux para ver su compatibilidad y su impacto en el rendimiento de los benchmarks. También se analizó el efecto de los entornos de escritorio LXDE, XFCE y KDE sobre el rendimiento gráfico. Se recogieron datos de temperatura antes y después de cada ejecución de benchmarks para considerar la influencia del calor en los resultados y asegurar que la Raspberry Pi no sobrepasase su límite térmico de 72°C, que podría llevar a errores internos. El análisis de resultados incluyó el cálculo de medias de 15 ejecuciones mínimas por benchmark, buscando un coeficiente de variación menor a 0.1 para obtener resultados representativos. La selección de muestras para el análisis gráfico se hizo mediante un filtro, seleccionando valores específicos de cada parámetro para facilitar la comparación y la interpretación de los resultados.
II.Hardware y Software Utilizados
El estudio se realizó utilizando diferentes versiones de la Raspberry Pi, comparando el rendimiento gráfico entre el modelo Raspberry Pi 1 B+ (un core ARMv6 a 700MHz) y el Raspberry Pi 2 B+ (cuatro cores ARMv7 a 1GHz). Ambos comparten la GPU Broadcom VideoCore IV a 250MHz (con opción a overclocking a 500MHz). Se utilizaron varias distribuciones Linux, siendo Raspbian la recomendada y se probaron otras como Arch Linux. Los lenguajes de programación utilizados incluyeron Java y C. Los benchmarks (pruebas de rendimiento) se ejecutaron en diferentes máquinas virtuales Java (versiones 6, 7 y 8) para evaluar las variaciones en el rendimiento. La investigación también analizó el uso de diferentes entornos de escritorio como LXDE, XFCE, y KDE en la Raspberry Pi.
1. Hardware de la Raspberry Pi
La investigación utilizó dos modelos de Raspberry Pi: la Raspberry Pi 1 B+ y la Raspberry Pi 2 B+. La Raspberry Pi 1 B+ es un sistema de un solo núcleo con arquitectura ARMv6, funcionando a una velocidad de reloj de 700 MHz y con 512 MB de RAM. Por otro lado, la Raspberry Pi 2 B+ cuenta con un procesador de cuatro núcleos con arquitectura ARMv7, operando a una velocidad de 1 GB de RAM. Ambas comparten la misma GPU, la Broadcom VideoCore IV, con una frecuencia de 250 MHz, aunque la posibilidad de overclocking se exploró en el estudio, aumentando su frecuencia hasta 500 MHz. Las características comunes a ambos modelos son la GPU Broadcom VideoCore IV y una alimentación de 5V a 2A. Se detalla la posibilidad de alimentar la Raspberry Pi a través de USB, pero con una limitación de corriente de 0.5A. La compatibilidad de lenguajes de programación con la Raspberry Pi se basa en su soporte de instrucciones ARM; se mencionan lenguajes como Python, Java, C, Perl, PHP, Ruby, Groovy, BBC Basic, Gambas, Scratch y Kturtle como ejemplos de compatibilidad.
2. Software y Entornos de Escritorio
En el ámbito del software, el estudio se centró en diferentes distribuciones Linux compatibles con la Raspberry Pi, siendo Raspbian (basada en Debian) la recomendada. Aunque se emplearon otras distribuciones, la compatibilidad entre versiones de Raspberry Pi y distribuciones Linux se tuvo en cuenta. El proyecto también consideró la influencia de diferentes entornos de escritorio, evaluando el impacto de LXDE (Lightweight X11 Desktop Environment), XFCE y KDE en el rendimiento gráfico. LXDE, descrito como un entorno minimalista, rápido y simple, desarrollado sobre GTK, se presenta como una opción ideal para equipos con recursos limitados. En cuanto a las distribuciones de Linux, se utilizaron Raspbian Jessie (Debian 8), compatible solo con la Raspberry Pi 2, y Ubuntu, también compatible solo con la Raspberry Pi 2. Se aseguró que en todas las distribuciones se instalaran las mismas librerías y programas necesarios para el desarrollo del proyecto, garantizando la uniformidad del entorno de pruebas. Para la medición del rendimiento en Java, se utilizaron benchmarks desarrollados por Roy Longbottom, y adicionalmente, un script de este mismo autor fue utilizado para medir la temperatura y la frecuencia (en MHz) de la Raspberry Pi. Este script fue añadido a la carpeta bin.
III.Resultados y Análisis del Rendimiento Gráfico
Los resultados de los benchmarks (Java, OpenGL ES, y Gtkperf) se analizaron para determinar la configuración óptima para el rendimiento gráfico de la Raspberry Pi. Se consideró la influencia de la asignación de memoria a la GPU, el overclocking, la distribución Linux, y el entorno de escritorio. Los datos recopilados se procesaron calculando las medias y se analizaron las variaciones para identificar las configuraciones que producen mejor rendimiento gráfico. Se encontró que la asignación dinámica de memoria RAM a la GPU no presentó una mejora significativa en comparación con la asignación estática. Los resultados indicaron que una Raspberry Pi 2, con un entorno de escritorio ligero como LXDE, y con la GPU configurada en modo overclocking, alcanzó el mejor rendimiento gráfico en varias pruebas.
1. Análisis de Benchmarks de Java
Los resultados de los benchmarks de Java, desarrollados por Roy Longbottom, mostraron una pequeña diferencia en el rendimiento entre las diferentes versiones de la máquina virtual Java (JVM 6, 7 y 8). Las versiones JVM 7 y JVM 8 mostraron un rendimiento ligeramente superior (0.3% y 0.8% respectivamente) en comparación con JVM 6, pero las diferencias fueron mínimas. La mejor configuración para estos benchmarks, según el análisis realizado, fue una Raspberry Pi 2 con el entorno de escritorio LXDE, con 256 MB de RAM asignados a la GPU y funcionando en modo overclock. Se destaca que se recopilaron al menos 15 resultados para cada benchmark, calculando la media para reducir la variabilidad. Un coeficiente de variación menor a 0.1 indica la fiabilidad de las medias obtenidas como indicador del rendimiento. La metodología incluyó la ejecución de los benchmarks en un entorno con condiciones ambientales controladas (temperatura, humedad y luz) para minimizar el impacto de factores externos. Cada prueba del benchmark de Java duraba aproximadamente 10 segundos, y la métrica utilizada fue Frames por segundo (FPS).
2. Análisis de Benchmarks OpenGL ES y Gtkperf
Para los benchmarks OpenGL ES, la mejor configuración encontrada fue la combinación de una Raspberry Pi 2 en modo overclock. Estos benchmarks consistían en pruebas de renderizado gráfico 3D con diferentes niveles de complejidad, variando el número de triángulos (900, 9000, 18000 y 36000) y añadiendo texturas y efectos como sombras. Se observa que el análisis se centró en determinar la configuración que optimiza el rendimiento gráfico para esta tarea específica, considerando la relación entre el hardware (Raspberry Pi 2), el modo de funcionamiento (overclock), y el tipo de prueba (OpenGL ES). En cuanto a los benchmarks Gtkperf, dirigidos al análisis del rendimiento del entorno de escritorio, la configuración óptima resultó ser una Raspberry Pi 2 con la distribución Arch Linux, asignación dinámica de memoria a la GPU, entorno gráfico XFCE y el procesador en modo overclock. Se realizaron 200 ejecuciones para cada test de Gtkperf, midiendo el tiempo en segundos para cada prueba. La asignación dinámica de memoria, a través de los parámetros cma_lwm y cma_hwm en el archivo config.txt, no mostró una variación significativa en el rendimiento (menos del 1% entre el mejor y peor dato).
3. Consideraciones Finales sobre el Rendimiento
El documento reconoce las limitaciones del proceso de benchmarking, destacando que es complejo y que los algoritmos de las pruebas son simplificaciones de tareas más complejas en el mundo real. Se recalca la influencia de factores externos, principalmente la temperatura, en los resultados obtenidos. El análisis de los datos implicó el cálculo de medias, descartando parte de la información individual de cada medición para obtener resultados más representativos. La imposibilidad de probar todas las combinaciones posibles de variables se atribuyó a limitaciones de tiempo y al riesgo de sobrecalentamiento, especialmente al realizar overclocking en la Raspberry Pi 1 con Arch Linux y el benchmark OpenGL ES. A pesar de estas limitaciones, el estudio concluye que la configuración óptima es repetible en otras Raspberry Pis, ofreciendo un punto de referencia para la optimización del rendimiento gráfico. Se concluye que la asignación dinámica de memoria no ofreció una mejora significativa en el rendimiento.
IV.Conclusiones y Trabajo Futuro
El estudio demostró que la optimización del rendimiento gráfico de la Raspberry Pi requiere una cuidadosa consideración de diferentes factores, incluyendo el modelo de Raspberry Pi, la distribución Linux, el entorno de escritorio, la asignación de memoria a la GPU, y el overclocking. Se identificaron las configuraciones que ofrecen el mejor rendimiento en cada tipo de benchmark. Se concluye que el overclocking mejora considerablemente el rendimiento gráfico, pero implica un aumento de temperatura que debe ser controlado. Se propusieron mejoras para el proyecto, incluyendo la exploración de más combinaciones de parámetros y la utilización de benchmarks más complejos.
1. Configuraciones Óptimas de Rendimiento
El estudio concluye que la configuración óptima para el rendimiento gráfico de la Raspberry Pi varía según el benchmark utilizado. Para los benchmarks de Java, la mejor configuración fue una Raspberry Pi 2 con el entorno de escritorio LXDE, 256 MB de RAM asignados a la GPU y en modo overclock. En las pruebas OpenGL ES, la mejor configuración se logró con una Raspberry Pi 2 en modo overclock, sin especificar la asignación de memoria RAM a la GPU ni el entorno de escritorio. Finalmente, para los benchmarks Gtkperf, la configuración óptima consistió en una Raspberry Pi 2 con la distribución Arch Linux, asignación dinámica de memoria a la GPU, entorno gráfico XFCE y el procesador en modo overclock. Estos resultados sugieren que el overclocking y la elección del entorno de escritorio influyen significativamente en el rendimiento gráfico. La asignación dinámica de memoria, sin embargo, no mostró una mejora sustancial en comparación con la asignación estática.
2. Limitaciones y Trabajo Futuro
Se reconocen varias limitaciones en el estudio. La primera es la imposibilidad de probar todas las combinaciones posibles de parámetros debido a la explosión combinatoria y al riesgo de sobrecalentamiento, especialmente en escenarios de overclocking. La temperatura, como factor externo, tuvo un impacto significativo en los resultados. Además, la naturaleza de los benchmarks utilizados, basados en algoritmos sencillos, presenta limitaciones al extrapolar los resultados a escenarios de uso más complejos y reales. El procesamiento de datos, basado en la media de múltiples ejecuciones, descarta cierta información que podría ser relevante para análisis más profundos. Como trabajo futuro, se propone ampliar el número de combinaciones probadas, siempre considerando el límite térmico de la Raspberry Pi. También se sugiere la utilización de benchmarks más complejos y representativos de las cargas de trabajo reales para obtener resultados más precisos y aplicables a diferentes escenarios de uso. Finalmente, se podría profundizar en el análisis del impacto de la asignación dinámica de memoria RAM y explorar otras distribuciones Linux para una evaluación más exhaustiva.
Referencia de documento
- Benchmarks en Gtkperf