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

12

Click here to load reader

description

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.

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

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

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

[email protected], [email protected], [email protected]

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad 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ándarModo 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

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

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_CYCSin 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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 /wmod C (1)

Para 800: SetStride A , i =800 /16mod 4096=50, MCD 50,4096=2 (2)

Para 900: SetStride A , i =900 /16mod 4096=57, MCD 57,4096=1 (3)

Para 1024: SetStride A , i =1024 /16mod 4096=64, MCD 64,4096=64 (4)

Para 1200: SetStride A , i =1200 /16mod 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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

800 900 1024 1200

0

5000

10000

15000

20000

25000

30000

Fallos Caché L2

Tamaño Matriz

Fa

llos

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba

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

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 EPSEscuela Politécnica Superior – Universidad de Córdoba

Córdoba, 17 de marzo de 2010

Escuela Politécnica SuperiorUniversidad de Córdoba