Distribución de Linux para la evaluación de rendimiento en sistemas computacionales modernos

  • 225 views
Uploaded on

Performance measurement is crucial in the development of efficient software. It becomes even more important in applications designed to run in embedded and real-time systems, where a fast response or …

Performance measurement is crucial in the development of efficient software. It becomes even more important in applications designed to run in embedded and real-time systems, where a fast response or high performance is required. This article describes the development of a deterministic application for performance measurement, which has been successfully used in a Computer Engineering Processor Design and Configuration Assessment course at Higher Technical School from the University of Córdoba.

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
225
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
7
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. CAADE 2010 Karma GNU/Linux – Distribución de Linux para la evaluación de rendimiento en sistemas computacionales modernos Fernando García Aranda, Pedro Navajas Modelo, Ignacio Orta Caamaño i42gaarf@uco.es, i12namop@uco.es, i42orcai@uco.es Resumen. La evaluación de rendimiento es un procedimiento fundamental en el desarrollo de software eficiente, siendo de especial interés en aplicaciones enfocadas a la ejecución en sistemas de empotrados y de tiempo real, donde se requieren altas prestaciones y respuestas casi instantáneas. Este artículo aborda el desarrollo de una herramienta de evaluación determinista de rendimiento, utilizada con éxito en el desarrollo práctico de la asignatura “Diseño de Procesadores y Evaluación de Configuraciones”, englobada en la titulación de Ingeniería Informática de la Escuela Politécnica Superior de la Universidad de Córdoba. Palabras Clave: Medición de rendimiento, RTAI, PAPI, GNU/Linux Abstract. Performance measurement is crucial in the development of efficient software. It becomes even more important in applications designed to run in embedded and real-time systems, where a fast response or high performance is required. This article describes the development of a deterministic application for performance measurement, which has been successfully used in a Computer Engineering Processor Design and Configuration Assessment course at Higher Technical School from the University of Córdoba. Keywords: Performance measurement, RTAI, PAPI, GNU/Linux 1. Introducción La evaluación de rendimiento es un procedimiento fundamental a la hora de desarrollar software de garantías. Este proceso será especialmente importante en el desarrollo de aplicaciones para la ejecución en sistemas de tiempo real o empotrados, donde la limitación de recursos implica un esfuerzo extra en la optimización de código. En este sentido, la información acerca de ciclos de CPU dedicados a la ejecución o el número de accesos y fallos en la memoria caché, serán de gran ayuda a la hora de evaluar los cambios a realizar en el programa. I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 2. CAADE 2010 Este artículo aborda el desarrollo de una serie de aplicaciones y modificaciones al kernel Linux1 que presentadas en forma de distribución de GNU/Linux, permitirán una medición determinista detallada de aplicaciones, y el tratamiento estadístico y gráfico de sus ejecuciones. Karma GNU/Linux ha sido utilizado con éxito en el desarrollo de la parte práctica de la asignatura “Diseño de Procesadores y Evaluación de Configuraciones”, perteneciente al segundo curso de la titulación Ingeniería en Informática, impartida en la Escuela Politécnica Superior de la Universidad de Córdoba. 2. Conceptos Previos 2.1. Planificación y Linux A la hora de realizar una medición de rendimiento determinista se requiere que la tarea en ejecución se vea afectada por la menor cantidad de ruido posible como, entre otros, el ruido proporcionado por lo cambios de contexto. En la mayoría de sistemas operativos actuales una tarea, una vez enviada a la agenda del sistema es cuantificada y tratada según la política de planificación con la que ha sido insertada. La mayoría de estas agendas de planificación poseen diferentes políticas que asignan prioridades a dichas ejecuciones. En el caso que nos ocupa, el núcleo Linux implementa tres políticas de planificación [1]: SCHED_RR, que representa una planificación no apropiativa de tipo Round-Robin; SCHED_FIFO, que inicia la planificación en modo apropiativo, lo que implica que puede se puede ser expulsado tanto por una tarea de mayor prioridad, como por una tarea que se ejecute en el espacio kernel en el caso en que nuestra tarea FIFO se ejecute en el espacio de usuario; y SCHED_OTHER, que es la política usada por defecto en cualquiera de las tareas que se ejecuta como usuario. Una primera aproximación para conseguir que un proceso se ejecute con el menor número de interferencias sería establecer su política de planificación a SCHED_FIFO [2]. No obstante, como se mencionó anteriormente, nuestra tarea podría seguir siendo eliminada de la agenda debido a alguna interrupción generada por el sistema, un proceso crítico de mayor prioridad, etc. 1 A lo largo del artículo nombraremos a Linux como kernel y no como sistema operativo completo, al que denominaremos GNU/Linux. I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 3. CAADE 2010 2.1.1. RTAI RTAI es un conjunto de parches y herramientas que dotan a Linux de baja latencia en su planificación haciendo que ésta sea similar a la de algunos sistemas operativos en tiempo real comerciales. La principal característica de RTAI, que la hace parte importante de nuestro sistema, es que para conseguir reducir el tiempo de latencias y conseguir de esta manera un sistema operativo en tiempo real, ejecuta el núcleo Linux tratando a éste como un proceso de baja prioridad [3]. Gracias a esto, cualquier tarea que se ejecute utilizando la API de RTAI será capaz de interrumpir los procesos manejados por el núcleo del sistema que se hayan apropiado del planificador. Por lo tanto, un proceso de Linux nunca podrá desplazar de la cola de planificación a un proceso lanzado por RTAI, ya que la prioridad de éste último será siempre mayor. 2.2. Herramientas para la medición de rendimiento Con el objetivo de obtener información sobre el rendimiento en la ejecución de programas y procesadores, se han desarrollado gran cantidad de herramientas destinadas a la toma de datos de eventos a través de los contadores hardware que proporciona la arquitectura en examen. Uno de los principales problemas que aparecieron en el uso de este tipo de herramientas para la medición fueron los errores cometidos en la cuantificación de la tarea a medir. El motivo de estos errores es que, además de los cuantos que ocupa la ejecución de nuestra tarea, pueden introducirse durante su ejecución tareas de mayor prioridad (por ejemplo, cualquier tarea en modo kernel) que reemplazarán nuestra tarea de forma que estaremos midiendo no sólo la ejecución de nuestro proceso, sino también la de varias tareas externas. En el caso que nos ocupa, se utilizará como herramienta para la medición de eventos PAPI. Esta herramienta consigue eliminar gran parte del problema expuesto anteriormente accediendo a los contadores a través del “Subsistema de Contadores de Rendimiento” del kernel [4], lo que permite que la medición se realice únicamente cuando el proceso con el que se inició el contador está dentro del contexto de ejecución. Sin embargo, aunque esto evita gran parte del ruido introducido al medir nuestra I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 4. CAADE 2010 aplicación, ésta seguirá cometiendo más fallos en la memoria caché de los que debería, incrementado igualmente el número de ciclos, instrucciones, etc. 3. Objetivos El desarrollo de Karma GNU/Linux persigue la obtención de un sistema de medición determinista del rendimiento de aplicaciones. De esta manera, se pretende proporcionar al programador una herramienta que permita localizar los posibles cuellos de botella y detalles del código a optimizar, intentando resolver problemas inherentes a la medición de rendimiento en entornos multitarea como el planificador de Linux. 3.1. Fiabilidad El sistema deseado necesita un entorno especial con control total sobre la cola de procesos, el objetivo de esto es aislar la tarea a examen y realizar una medida de rendimiento fiable sin ruido. 3.2 Sistema Autónomo Se busca por lo tanto un planificador que garantice de forma autónoma y transparente al usuario ejecuciones de tiempo real, permitiendo por supuesto el uso del planificador estándar del kernel Linux para tareas que no requieran ejecución exclusiva. 3.3. Medición no intrusiva El sistema debe presentarse en un entorno sencillo. Esto implica que no debe de ser necesario recompilar, ni modificar el código fuente de las aplicaciones que se deseen medir. De esta manera, un usuario debe poder realizar medidas de programa disponiendo simplemente de su fichero ejecutable. 4. Desarrollo El sistema de medición fiable, autónomo y no intrusivo propuesto está compuesto por una serie de módulos independientes, de forma que sea posible adaptarlo a diferentes plataformas hardware y aumentar su funcionalidades de forma sencilla. La Figura 1 describe la integración de los diferentes módulos en el sistema. 4.1. ADEOS – RTAI ADEOS (Adaptative Domain Environment for Operating Systems) es una capa de acceso al hardware que se sitúa entre la capa hardware y el sistema operativo. El I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 5. CAADE 2010 objetivo es proveer un entorno flexible para compartir los recursos hardware entre diferentes sistemas operativos o diferentes peticiones desde el mismo sistema operativo [5]. ADEOS maneja un conjunto de núcleos, denominados dominios, que trabajan de forma simultánea sobre el mismo hardware. Estos dominios sólo necesitan conocer la existencia de ADEOS, siendo por lo tanto transparente a los mismos la existencia del resto de núcleos. RTAI (Real Time Application Interface) es un entorno de tiempo real para Linux que utiliza ADEOS. De esta manera, RTAI permite la ejecución del núcleo Linux como un proceso de baja prioridad, que ejecutará cuando no se procesen tareas de tiempo real. Gracias a esto es posible obtener el control absoluto de procesos e interrupciones, realizando la ejecución de un proceso sin que éste sea desplazado por una tarea del sistema de mayor prioridad. La utilización de esta herramienta permitirá establecer las bases por lo tanto de un sistema fiable y autónomo de medición. Figura 1. Estructura de Karma GNU/Linux 4.2. PAPI PAPI (Performance Application Programming Interface) especifica una interfaz de programación sencilla para el acceso a contadores hardware de gran cantidad de plataformas [6], para ello utiliza prácticamente las mismas rutinas y argumentos, haciendo su programación independiente de la arquitectura. El acceso a los contadores hardware por parte de PAPI se realiza, como mencionamos anteriormente, a través del denominado “Subsistema de Contadores de Rendimiento” del kernel. En versiones I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 6. CAADE 2010 anteriores a la inclusión de este subsistema se hacía uso del driver perfctr, lo que implicaba aplicar un parche al núcleo a la hora de realizar su instalación. El funcionamiento de perfctr se basa en el acceso por parte de cada proceso a un conjunto de contadores de rendimiento virtuales propios, lo que permite evitar los problemas descritos en el apartado 2.2. 4.3. Lperfex y Glperfex Para combinar las funcionalidades de acceso al procesador de modo exclusivo, proporcionado por ADEOS-RTAI, y la medición de contadores de eventos a través de PAPI, se ha diseñado la herramienta Lperfex. Lperfex proporciona una interfaz sobre línea de comandos para la evaluación de rendimiento de aplicaciones, permitiendo al usuario: • Visualizar y seleccionar un conjunto de contadores hardware para su medición en la ejecución de un programa, proceso que se realizará de forma transparente a través del uso interno de PAPI. • Seleccionar diferentes tipos de ejecuciones para la prueba, permitiéndose tanto la ejecución exclusiva del programa sobre cualquier procesador disponible en la máquina, como el uso del planificador por defecto del kernel. El funcionamiento de Lperfex sigue un planteamiento “vírico” no intrusivo. La biblioteca estándar de C de GNU, glibc, parte los procesos en una serie de llamadas a sistema divididas en funciones y estructuras entre las que se encuentran: una función que se ejecutará en el contexto del proceso como inicialización del mismo y en la que se pueden colocar, entre otras cosas, constructores; y otra que se ejecutará al final del proceso pero dentro de su contexto, es decir, antes de que un proceso muera definitivamente [1]. De esta manera, Lperfex se encarga de interceptar el inicio del proceso que se desea medir, introducir el código correspondiente a la inicialización de los contadores hardware a medir al inicio del mismo y recoger los resultados interceptando el final de la ejecución. El programa a medir deberá ser de un fichero ejecutable que siga el formato de enlazado ELF2 , enlazado con la glibc. Esto nos 2 El formato ELF (Executable and Linkable Format) es un formato de archivo para ejecutables, de código abierto, bibliotecas compartidas y vocablos de memoria. I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 7. CAADE 2010 permite cumplir el objetivo de una medición no intrusiva, que no requiere la recompilación ni la modificación del código fuente. Con objeto de proporcionar a los usuarios un entorno de prueba sencillo, se ha desarrollado también una interfaz intuitiva que maneja toda la funcionalidad de Lperfex de forma gráfica, permitiendo también el almacenamiento de estadísticas y gráficas de las ejecuciones del programa de forma que se pueda hacer un estudio exhaustivo del rendimiento de la tarea que a evaluar, esta aplicación denomina Glperfex. 4.4 Live CD La puesta en marcha del sistema propuesto es compleja. Las herramientas de medición Lperfex y Glperfex necesitan previamente el parcheo del núcleo y la instalación y configuración de bibliotecas externas. Esto puede ser un proceso complejo para usuarios no iniciados y limita a su vez el uso de la herramienta con fines docentes, donde será difícil mantener un aula con equipos configurados con tales características. Por lo tanto, se ha escogido la presentación del sistema en un Live CD preparado con todas las configuraciones necesarias. Karma GNU/Linux es una distribución basada en Ubuntu que proporciona, sin la necesidad de realizar ninguna modificación en el ordenador, un entorno propicio para la realización de medidas: ofrece una configuración automática independiente de la máquina (en arquitecturas x86), herramientas de compilación y depuración, herramientas de edición de textos, software de oficina y la posibilidad de realizar una instalación permanente en el equipo. 5. Resultados A continuación se presentan los resultados obtenidos a través de una serie de pruebas realizadas sobre Karma GNU/Linux. El primer test utilizará el benchmark NAS con el objetivo de comparar la variación en la medición de rendimiento de programas sobre un entorno con ruido. Se utilizará para ello el planificador estándar de Linux y el planificador exclusivo incluido en Karma. El resto de pruebas forman parte de una selección de las actividades prácticas propuestas a los alumnos de la asignatura “Diseño de Procesadores y Evaluación de Configuraciones”, impartida en la titulación de Ingeniería Informática de la Escuela Politécnica Superior de la Universidad de Córdoba. Buscamos demostrar cómo Karma GNU/Linux puede utilizarse para comparar la influencia de distintas optimizaciones software sobre la ejecución de programas, I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 8. CAADE 2010 siempre a través de los datos obtenidos de los distintos contadores hardware del procesador. Las mediciones han sido realizadas sobre una máquina Dell XPS M1330 con procesador Intel Core 2 Duo T9300 (6MB Caché L2, 2.50 GHz, 800 MHz FSB) y 4GB de memoria principal. 5.1. Tests de NAS, comparación de la ejecución exclusiva con el entorno estándar de Linux Con el objetivo de medir la mejora en la utilización de la ejecución exclusiva para la medición de rendimiento utilizaremos el benchmark NAS [7], disponible en la carpeta de /home/ubuntu/Tests del Live CD. Se realizarán dos baterías de diez mediciones sobre los ciclos de CPU invertidos en la ejecución del test (contador PAPI_TOT_CYC), utilizando el planificador estándar de Linux para la primera, y la ejecución exclusiva sobre un procesador de la máquina para la segunda. Ambas medidas contarán con la presencia procesos de fondo que generarán ruido en la ejecución. Figura 2. Comparación del total de ciclos de ejecución (PAPI_TOT_CYC) a través de planificación exclusiva y estándar Podemos observar los resultados de esta prueba en la Figura 2. La ejecución exclusiva reduce sensiblemente los ciclos realizados en la ejecución del benchmark. La principal mejora que aporta la ejecución exclusiva es, no obstante, un fuerte decremento en la desviación típica de los resultados obtenidos. Por lo tanto, la eliminación de ruidos externos a través de la ejecución aislada del proceso sometido a examen, proporciona un I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba bt.S is.S lu-hp.S lu.S sp.S 0 500000 1000000 1500000 2000000 2500000 3000000 3500000 Desviación de las ejecuciones Planifica- ción Es- tándar Modo Exclusivo bt.S is.S lu-hp.S lu.S sp.S 0 50000000 100000000 150000000 200000000 250000000 300000000 350000000 400000000 Valor medio de ejecuciones
  • 9. CAADE 2010 sistema de medición de rendimiento más determinista. Se puede encontrar un estudio pormenorizado de las ejecuciones del benchmark NAS sobre Karma en [8]. 5.2. Permutación de Bucles A continuación se presenta el estudio de la “permutación de bucles”, técnica para la reducción del número de fallos de memoria caché. Para ello ejecutaremos el código de la Figura 3 compilado con el parámetro -O0 con el objetivo de no aplicar ninguna optimización previa. Posteriormente se ejecutará de nuevo el programa, permutando los dos bucles entre sí para comprobar la mejora producida a través de la optimización. for(i=0; i<600; i++) for(j=0; j<600; j++) A[i][j] = B[i][j]; Figura 3. Permutación de Bucles En la Tabla 2 se muestran resultados con y sin permutación de bucles. Podemos observar una diferencia abultada en los fallos de caché de ambas ejecuciones. Esta se debe a que en los bucles sin permutar, el Stride (el desplazamiento de dirección de memoria) en cada incremento de j es igual a 1, es decir, cada vez que se incrementa j se leerá de uno en uno de forma consecutiva evitándose reemplazos, mientras que el Stride con permutación es de 800, es decir, cada incremento de j provoca un fallo por acceso. Tabla 1. Comparación entre bucles sin y con permutación. PAPI_L1_DCM PAPI_L2_DCM PAPI_TOT_CYC Sin permutación 559,70 152,30 4206523 Con permutación 737698,31 1217,60 8868362 5.3. Cambio de Stride A continuación vamos a estudiar cómo afecta el cambio de tamaño de las matrices en la ocupación de la memoria caché, es decir, los cambios de Stride. Para el estudio utilizaremos el código que se muestra en la Figura 3 con ambos bucles permutados. De esta manera, se medirán los fallos de caché en L1 y L2 para 600 iteraciones de i y j, con matrices de 800×800, 900×900, 1024×1024 y 1200×1200. I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 10. CAADE 2010 Figura 4. Comparación de Fallos de caché según tamaño de la matriz. En la Figura 4 se muestran los resultados de las distintas ejecuciones, se puede observar que para la matriz de tamaño 1204×1024 se obtiene un número de fallos de caché L2 muy superior al resto. Estudiaremos este comportamiento analizando en primer lugar el Stride de cada una de ellas que, como vimos anteriormente, en el código permutado coincide con el tamaño de la matriz, es decir, 800, 900, 1024 y 1200 respectivamente. A continuación, estudiamos la ocupación de la caché en L2 con SetStride, ver Ecuación 1, y el MCD entre SetStride y el número de líneas. Con esto podemos obtener la ocupación de la caché para los distintos tamaños de matriz. SetStride A,i=StrideB , j/wmod C (1) Para 800: SetStride A,i=800/16mod 4096=50, MCD50,4096=2 (2) Para 900: SetStride A,i=900/16mod 4096=57, MCD57,4096=1 (3) Para 1024: SetStride A,i=1024/16mod 4096=64, MCD64,4096=64 (4) Para 1200: SetStride A,i=1200/16mod 4096=11, MCD11,4096=1 (5) Como puede observarse, para 1024 sólo se ocupa 1 de cada 64 líneas de la caché, es decir, 64 líneas de caché de las 4096, lo que indica que el número elevado de fallos de caché L2 se debe a la mala ocupación. Una forma de equiparar los resultados de ejecución de la matriz de tamaño 1024×1024 sería aplicar la técnica intra-array padding [9], donde se aumenta el tamaño de la matriz con el objetivo de realizar un mejor el uso de la caché L2. I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba 800 900 1024 1200 0 5000 10000 15000 20000 25000 30000 Fallos Caché L2 Tamaño Matriz Fallos
  • 11. CAADE 2010 6. Conclusiones Como hemos podido observar, Karma GNU/Linux proporciona un entorno sencillo y determinista para la medición de rendimiento en sistemas computacionales. Observados los resultados de la ejecución de programas en el sistema a través de diferentes pruebas y visto el desarrollo del sistema obtenido, podemos concluir que se han cumplido los objetivos de: • Sistema fiable, donde el ruido de la ejecución de los distintos programas en nuestro sistema no afecte a la fiabilidad de ejecuciones. • Sistema autónomo, que gestiona de forma transparente al usuario los cambios en los sistemas de ejecución tras la elección del planificador a utilizar durante la medición. • Medición no intrusiva, donde las aplicaciones Lperfex y Glperfex proporcionan una interfaz para la medición de rendimiento sin necesidad de hacer modificaciones ni recompilaciones del código fuente de las aplicaciones. Por último se destaca la flexibilidad de Karma GNU/Linux para su utilización con fines docentes. La comparación de ejecución de programas con diferentes optimizaciones software, a través del acceso a contadores hardware, permite al alumno comprobar de primera mano los efectos de la modificación de código en el procesador. Además, la presentación de Karma en forma de Live CD, permite el uso de la aplicación tanto en aulas de prácticas sin la necesidad de realizar modificaciones en los equipos, como en casa, donde descargando libremente la distribución el alumno podrá realizar ejercicios de refuerzo. 7. Bibliografía 1. R. Love, Linux Kernel Development, Sams Publishing, Estados Unidos (2005). 2. S. Venkateswaran, Essential Linux Device Drivers, Pretice Hall, Estados Unidos (2008). 3. P. Mantegazza, E. Bianchi, L. Dozio, M. Angelo, D. Beal, RTAI Programming Guide, Politecnico Di Milano, Italia (2000). I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba
  • 12. CAADE 2010 4. T. Gleixner, Announcement of Performance Counters for Linux, Linux Kernel Mailing List, http://lkml.org/lkml/2008/12/4/401, (2008). 5. K. Yaghmour, Adaptive domain environment for operating systems, http://www.opersys.com/ftp/pub/Adeos/adeos.pdf, (2001). 6. S. Browne, J. Dongarra, N. Garmer, K. London, P. Mucci, A Portable Programming Interface for Performance Evaluation on Modern Processors, The International Journal of High Performance Computing Applications, Vol. 4 (3) (2000) p. 189. 7. W. Shapir, A. Woo, M.Yarrow, The NAS Paralell Benchmarks 2.1 Results, NASA Ames Research Center, Estados Unidos, (1996). 8. F. García, Karma Linux: distribución de GNU/Linux para la medición de eventos en sistemas computacionales modernos (Proyecto Fin de Carrera), Escuela Politécnica Superior de la Universidad de Córdoba, (2008). 9. E. Herruzo, O. Plata, E.L. Zapata, Maximum and Sorted Cache Occupation Using Array Padding, IEEE International Conference. on Embedded Computer Systems: Architectures, Modelling and Simulation (IC-SAMOS), Samos (Grecia), (2007). I Congreso de Actividades Académicamente Dirigidas para Estudiantes de la EPS Escuela Politécnica Superior – Universidad de Córdoba Córdoba, 17 de marzo de 2010 Escuela Politécnica Superior Universidad de Córdoba