
Escuelade Ingenieríay Arquitectura Proyecto Fin de Carrera de Ingenier´ıa en Inform´atica Estudio Comparativo de Frameworks de Instrumentaci´on Din´amica de Ejecutables Juan Antonio Artal Lozano Director: Ricardo J. Rodr´ıguez Fern´andez Ponente: Jos´eJavier Merseguer Hern´aiz Departamento de Inform´atica e Ingenier´ıa de Sistemas Escuela de Ingenier´ıa y Arquitectura Universidad de Zaragoza Abril de 2012 Curso 2011/2012 A mi mujer, Conchita. Those types are not ’abstract’; they are as real as int and float. Doug McIlroy Agradecimientos A mis padres, hermanos y abuela. A todos mis compa˜neros de promoci´on. A Ricardo y su paciencia conmigo. A Jos´eMerseguer. A mis compa˜neros de trabajo. GRACIAS. Estudio comparativo de frameworks de Instrumentaci´on Din´amica de Ejecutables RESUMEN La Instrumentaci´on Din´amica de Ejecutables (Dynamic Binary Instrumentation, DBI) es una t´ecnica muy potente que permite analizar el comportamiento, en tiem- po de ejecuci´on, de cualquier aplicaci´on. DBI se puede usar, por ejemplo, para contar el n´umero de instrucciones que ejecuta o contar todas las transferencias (lectura y/o escritura) a memoria que realiza un determinado programa. DBI tiene diferentes usos seg´un sea el perfil de la persona que lo use. Por ejemplo, para un programador, DBI ayudar´aa identificar las partes cr´ıticas del c´odigo; para un desarrollador de un procesador nuevo, DBI simular´aesta nueva arquitectura; y para un programador de compiladores en una nueva arquitectura, DBI ayudar´aa la colo- caci´on de las instrucciones para mejorar el paralelismo o c´omo preparar profile-guided optimizacions (PGO). Un framework de DBI es una plataforma software que incluye programas, librer´ıas, do- cumentaci´on y una API para manipulaci´on de instrucciones en tiempo de ejecuci´on. Exis- ten diferentes frameworks de DBI (p.e., Pin, Valgrind, DynamoRIO, Paradyn/Dyninst), que proporcionan APIs muy extensas para que cada ingeniero pueda desarrollar sus pro- pias herramientas de an´alisis din´amico, llamadas herramientas DBA (Dynamic Binary Analysis). Las herramientas DBA permiten analizar, generar optimizaciones y monito- rizar el comportamiento de programas. El objetivo de este PFC es realizar un estudio comparativo centrado a nivel de im- pacto en rendimiento (performance) de diferentes frameworks de DBI. Es decir, se com- probar´ael rendimiento de una aplicaci´on ejecutada de forma nativa, sin instrumentar, y se comparar´acon esta misma aplicaci´on instrumentada por herramientas programadas bajo diferentes frameworks de DBI. De esta forma se obtiene el impacto en rendimiento de cada uno de los frameworks. Para poder llevar a cabo este estudio, se han seleccio- nado un conjunto de aplicaciones para crear un benchmark, que nos dar´ainformaci´on de rendimiento de cada framework de DBI. Adem´as, se pretende comparar cada framework de DBI atendiendo a las siguientes caracter´ısticas: plataformas y tipos de ejecutables que aceptan, necesidad de disponer del c´odigo fuente, API proporcionada, facilidad de programaci´on de herramientas DBA, licencia/coste y la posibilidad de vincular a un proceso en ejecuci´on. ii ´Indice 1. Introducci´on 1 1.1. Objetivo..................................... 2 1.2. Motivaci´on ................................... 2 1.3. Organizaci´on del documento . .... 3 2. Conocimientos previos 5 2.1. GranularidadenDBI. .. .. .. .. .. .. .. .. .. 6 2.2. OrigendeDBI ................................. 7 3. Frameworks de DBI 9 3.1. Pin........................................ 10 3.2. Valgrind..................................... 11 3.3. DynamoRIO .................................. 11 3.4. Similitudes y diferencias entre estos frameworks . ........... 12 4. Trabajo relacionado 15 5. Creaci´on de benchmark 17 5.1. Alternativas estudiadas . 17 5.2. Definici´ondebenchmark. 17 5.3. Descripci´ondelbenchmark . 20 5.4. Herramientasparaelbenchmark . 21 5.5. Medicionesenelbenchmark. 21 5.5.1. Tiempo ................................. 21 5.5.2. Memoria................................. 22 6. Experimentos 23 6.1. Entornodepruebas............................... 24 6.2. Resultados.................................... 24 7. Conclusiones y trabajo futuro 29 A. Fases de Desarrollo 35 A.1. Diagrama de Gantt ............................... 35 iii ´INDICE ´INDICE B. Problemas encontrados 37 B.1. Cuentadeinstrucciones . 37 B.2. Falloenejecuci´on. 40 C. Aplicaciones usadas en el benchmark 43 C.1.bzip2....................................... 43 C.2.GNUgo ..................................... 44 C.3.hmmer...................................... 44 C.4.libquantum ................................... 44 C.5.h264ref...................................... 45 C.6.ripemd...................................... 45 C.7.aes........................................ 46 C.8.whirlpool .................................... 46 C.9.memtester.................................... 46 C.10.ffmpeg...................................... 47 C.11.milc ....................................... 47 C.12.povray...................................... 48 C.13.mlucas...................................... 48 C.14.namd ...................................... 48 C.15.linpack...................................... 49 D. Resultados del benchmark 51 D.1.bzip2....................................... 52 D.2.GNUgo ..................................... 53 D.3.hmmer...................................... 54 D.4.libquantum ................................... 55 D.5.h264ref...................................... 56 D.6.ripemd...................................... 57 D.7.aes........................................ 58 D.8.whirlpool .................................... 59 D.9.memtester.................................... 60 D.10.ffmpeg...................................... 61 D.11.milc ....................................... 62 D.12.povray...................................... 63 D.13.mlucas...................................... 64 D.14.namd ...................................... 65 D.15.linpack...................................... 66 D.16.Tiempo de ejecuci´on de los benchmarks . ...... 67 E. C´odigo fuente aplicaciones usadas en el benchmark 69 E.1. Instrumentaci´on por instrucciones . ....... 69 E.1.1. Pin.................................... 69 E.1.2. DynamoRIO .............................. 70 E.1.3. Valgrind................................. 71 iv ´INDICE ´INDICE E.2. Instrumentaci´on por bloques b´asicos . ........ 73 E.2.1. Pin.................................... 73 E.2.2. DynamoRIO .............................. 73 E.2.3. Valgrind................................. 74 v Indice de figuras 6.1. Tiempo de ejecuci´on de la aplicaci´on h264ref con instrumentaci´on por instrucciones y optimizaciones. 25 6.2. Slowdown en el benchmark de ffmpeg con instrumentaci´on por instruc- cionesyoptimizaciones. .. .. .. .. .. .. .. .. 25 6.3. Slowdown medio en el benchmark usando instrumentaci´on por instrucciones. 26 6.4. Consumo medio de memoria de las aplicaciones. ....... 27 6.5. Slowdown en instrumentaci´on por instrucciones y por bloques b´asicos por frameworksyoptimizaciones. 28 A.1.Diagramadegantt................................ 35 A.2.Horasdedicadas. ................................ 36 vii Indice de tablas 3.1. S.O./Arquitecturas soportadas por framework. ......... 12 3.2. Granularidades soportadas por framework. ........ 14 3.3. Similitudes y diferencias entre frameworks. .......... 14 5.1. Aplicaciones de c´alculo entero. ...... 19 5.2. Aplicaciones de c´alculo real. ...... 19 5.3. Aplicaciones con gran demanda de entrada/salida. ......... 19 5.4. Aplicaciones de acceso a memoria. 20 6.1. Hardware utilizado en las pruebas. ..... 23 6.2. Software utilizado en las pruebas. ...... 23 6.3. ConsumomediodememoriaporFramework. 27 6.4. Slowdown relativo entre instrucciones y bloques b´asicos. 28 A.1.Horasdedicadas. ................................ 36 B.1. Instrucciones contadas por framework de DBI. ....... 37 B.2. Instrucciones contadas para las aplicaciones whirlpool y memtester . 39 ix Cap´ıtulo 1 Introducci´on El t´ermino de instrumentaci´on se refiere a la inserci´on de c´odigo adicional sobre un de- terminado software. Principalmente, hay dos tipos de instrumentaci´on: de c´odigo fuente, cuando el programador a˜nade l´ıneas de c´odigo antes de la compilaci´on; y de ejecutable, si hay otra aplicaci´on que modifica el programa una vez compilado. La instrumentaci´on permite incorporar al programa desarrollado c´odigo adicional para recoger informaci´on en tiempo de ejecuci´on, que principalmente tiene dos usos diferentes: para estudio de arquitecturas, donde se puede hacer modelado de cach´es y simulaci´on de instrucciones nuevas de procesadores; y para an´alisis de c´odigo, donde se puede generar informaci´on para an´alisis de rendimiento, p.e., para averiguar cu´ando, d´onde y por qu´enuestro c´odigo tarda tanto en ejecutar cierta tarea. Hay diferentes tipos de instrumentaci´on, como la manual, en la que el programador a˜nade directamente las l´ıneas de c´odigo que le interesan; como por ejemplo, para calcular tiempos de ejecuci´on, contar eventos o llamadas a una interfaz de programaci´on de aplicaciones (API). Hay herramientas tipo automated source level que modifican el c´odigo fuente para a˜nadir instrumentaci´on de acuerdo a una determinada configuraci´on. Existen otros tipos de instrumentaci´on como la asistida por el compilador, que es a˜nadida en tiempo de compilaci´on, y binary translation, donde se modifica el software con llamadas a una API de instrumentaci´on para que la propia aplicaci´on genere informaci´on en tiempo
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages92 Page
-
File Size-