]> git.llucax.com Git - z.facultad/75.00/presentacion.git/blobdiff - presentacion.rst
Terminar sección de Resultados
[z.facultad/75.00/presentacion.git] / presentacion.rst
index 16f04540904f384c18621f28fa1f61c3577c29e9..86feffba2bee1ed3a635d909305cc4fdef295ecb 100644 (file)
@@ -17,7 +17,7 @@ Presentación
 Motivación
 ~~~~~~~~~~
 * Recolección de basura
 Motivación
 ~~~~~~~~~~
 * Recolección de basura
-* Lenguaje de programación **D**
+* Lenguaje de programación D
 * Utilidad → Software Libre → Contribución
 
 
 * Utilidad → Software Libre → Contribución
 
 
@@ -42,7 +42,7 @@ Introducción
 
 ¿Cómo?
 
 
 ¿Cómo?
 
-Algoritmos clásicos
+Algoritmos Clásicos
 ~~~~~~~~~~~~~~~~~~~
 * Conteo de referencias
 * **Marcado y barrido**
 ~~~~~~~~~~~~~~~~~~~
 * Conteo de referencias
 * **Marcado y barrido**
@@ -54,7 +54,7 @@ Algoritmos clásicos
 
 .. dummy: para que ande bien el raw de arriba
 
 
 .. dummy: para que ande bien el raw de arriba
 
-Estado del arte
+Estado del Arte
 ~~~~~~~~~~~~~~~
 * Medio siglo de investigación y desarrollo (3000+ publicaciones)
 * Objetivo
 ~~~~~~~~~~~~~~~
 * Medio siglo de investigación y desarrollo (3000+ publicaciones)
 * Objetivo
@@ -73,10 +73,10 @@ Estado del arte
   * Análisis estático
 
 
   * Análisis estático
 
 
-El lenguaje de programación D
+El Lenguaje de Programación D
 --------------------------------------------------
 
 --------------------------------------------------
 
-Características generales
+Características Generales
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 * Sintaxis tipo C/C++
 * Compilado
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 * Sintaxis tipo C/C++
 * Compilado
@@ -109,13 +109,13 @@ Paradigmas
 
 
 
 
 
 
-Recolector de basura de D
+Recolector de Basura de D
 ==============================================================================
 
 ==============================================================================
 
-Implementación actual
+Implementación Actual
 --------------------------------------------------
 
 --------------------------------------------------
 
-Organización del heap
+Organización del Heap
 ~~~~~~~~~~~~~~~~~~~~~
 *Heap* → *Pools* → Páginas → Bloques + Listas de libres
 
 ~~~~~~~~~~~~~~~~~~~~~
 *Heap* → *Pools* → Páginas → Bloques + Listas de libres
 
@@ -166,10 +166,10 @@ Algoritmo
   * Muy propenso a extender el tiempo de *stop-the-world* en la práctica
 
 
   * Muy propenso a extender el tiempo de *stop-the-world* en la práctica
 
 
-Lo bueno, lo malo y lo feo
+Lo Bueno, lo Malo y lo Feo
 --------------------------------------------------
 
 --------------------------------------------------
 
-Lo bueno
+Lo Bueno
 ~~~~~~~~
 * Anda :)
 * Organización del *heap* (*two-level allocation*)
 ~~~~~~~~
 * Anda :)
 * Organización del *heap* (*two-level allocation*)
@@ -178,7 +178,7 @@ Lo bueno
 
 (bueno != perfecto)
 
 
 (bueno != perfecto)
 
-Lo malo y lo feo
+Lo Malo y lo Feo
 ~~~~~~~~~~~~~~~~
 Lo malo
 
 ~~~~~~~~~~~~~~~~
 Lo malo
 
@@ -208,7 +208,7 @@ fork(2)
 * Comienza con un solo hilo (el que llamó a ``fork(2)``)
 * Muy eficiente
 
 * Comienza con un solo hilo (el que llamó a ``fork(2)``)
 * Muy eficiente
 
-Algoritmo principal
+Algoritmo Principal
 ~~~~~~~~~~~~~~~~~~~
 * Basado en el trabajo de Gustavo Rodriguez-Rivera y Vince Russo (*Non-intrusive
   Cloning Garbage Collector with Stock Operating System Support*)
 ~~~~~~~~~~~~~~~~~~~
 * Basado en el trabajo de Gustavo Rodriguez-Rivera y Vince Russo (*Non-intrusive
   Cloning Garbage Collector with Stock Operating System Support*)
@@ -228,7 +228,7 @@ Problemas
 
 → Tiempo de pausa en la práctica ~= tiempo total de recolección
 
 
 → Tiempo de pausa en la práctica ~= tiempo total de recolección
 
-Eager allocation
+Eager Allocation
 ~~~~~~~~~~~~~~~~
 * Crea un nuevo *pool* de memoria antes de lanzar el marcado concurrente
 * Devuelve memoria del nuevo *pool* al programa mientras termina el marcado
 ~~~~~~~~~~~~~~~~
 * Crea un nuevo *pool* de memoria antes de lanzar el marcado concurrente
 * Devuelve memoria del nuevo *pool* al programa mientras termina el marcado
@@ -241,7 +241,7 @@ Eager allocation
 
   ↓ Tiempo de pausa real
 
 
   ↓ Tiempo de pausa real
 
-Early collection
+Early Collection
 ~~~~~~~~~~~~~~~~
 * Dispara una recolección *preventiva* antes de que se agote la memoria
 * Permite al programa (**todos** sus hilos) seguir trabajando mientras la
 ~~~~~~~~~~~~~~~~
 * Dispara una recolección *preventiva* antes de que se agote la memoria
 * Permite al programa (**todos** sus hilos) seguir trabajando mientras la
@@ -257,7 +257,7 @@ Early collection
   ↓ Tiempo de pausa real (no garantizado)
 
 
   ↓ Tiempo de pausa real (no garantizado)
 
 
-Otras mejoras
+Otras Mejoras
 --------------------------------------------------
 
 Precisión
 --------------------------------------------------
 
 Precisión
@@ -276,7 +276,7 @@ Adaptación del trabajo de Vincent Lang y David Simcha:
   * Utiliza la información para escanear solo palabras que son punteros (con
     seguridad o potencialmente)
 
   * Utiliza la información para escanear solo palabras que son punteros (con
     seguridad o potencialmente)
 
-Optimizaciones y otras mejoras menores
+Optimizaciones y Otras Mejoras Menores
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Mejora del factor de ocupación del *heap*
 * Caché de consultas críticas para acelerar cuellos de botella
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Mejora del factor de ocupación del *heap*
 * Caché de consultas críticas para acelerar cuellos de botella
@@ -313,49 +313,84 @@ Resultados
 Banco de Pruebas
 --------------------------------------------------
 
 Banco de Pruebas
 --------------------------------------------------
 
-Diapositiva 1
+Generalidades
 ~~~~~~~~~~~~~
 ~~~~~~~~~~~~~
-Diapositiva 1
+* Múltiples corridas (20-50)
 
 
-Diapositiva 2
-~~~~~~~~~~~~~
-Diapositiva 2
+  * Minimizar error en la medición
+  * Resultados expresados en función de:
 
 
+    * Mínimo
+    * Media
+    * Máximo
+    * Desvío estándar
 
 
-Tiempo de Stop-The-World
---------------------------------------------------
+* Minimizar variación entre corridas
 
 
-Diapositiva 1
-~~~~~~~~~~~~~
-Diapositiva 1
+  * ``cpufreq-set(1)``
+  * ``nice(1)``
+  * ``ionice(1)``
 
 
-Diapositiva 2
-~~~~~~~~~~~~~
-Diapositiva 2
+Programas
+~~~~~~~~~
+* Triviales (7)
 
 
+  * Ejercitar aspectos puntuales
+  * No realizan una tarea útil
+  * Casos patológicos
 
 
-Tiempo de Pausa Real
---------------------------------------------------
+* Programas pequeños - *Olden Benchmark* (5)
 
 
-Diapositiva 1
-~~~~~~~~~~~~~
-Diapositiva 1
+  * Relativamente pequeños (400-1000 *SLOC*)
+  * Realizan una tarea útil
+  * Manipulan mucho listas y árboles asignando mucha memoria
+  * No son ideales para probar un *GC*
 
 
-Diapositiva 2
-~~~~~~~~~~~~~
-Diapositiva 2
+* Programas reales - **Dil** (1)
+
+  * Compilador de D escrito en D
+  * Grande y complejo (32K+ *SLOC*, 86 módulos, 300+ *clases*)
+  * Programado sin (limitaciones ni ventajas del) *GC* en mente
+  * Manipulación de *strings*, arreglos dinámicos y asociativos
+
+Métricas
+~~~~~~~~
+* Tiempo total de ejecución
+* Tiempo máximo de *stop-the-world*
+* Tiempo máximo de pausa real
+* Cantidad máxima de memoria utilizada
+* Cantidad total de recolecciones realizadas
 
 
 
 
-Tiempo de Ejecución
+Gráficos de Corridas
 --------------------------------------------------
 
 --------------------------------------------------
 
-Diapositiva 1
-~~~~~~~~~~~~~
-Diapositiva 1
+Tiempo Máximo de Stop-The-World
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-stw.pdf
+    :width: 12.5cm
+
+Tiempo Máximo de Pausa Real
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-pause.pdf
+    :width: 12.5cm
+
+
+Tiempo Total de Ejecución
+~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-time.pdf
+    :width: 12.5cm
+
+Cantidad total de recolecciones realizadas
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-ncol.pdf
+    :width: 12.5cm
+
+Cantidad máxima de memoria utilizada
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-mem.pdf
+    :width: 12.5cm
 
 
-Diapositiva 2
-~~~~~~~~~~~~~
-Diapositiva 2
 
 
 Conclusión
 
 
 Conclusión
@@ -372,12 +407,12 @@ Resumen
 * Mejoras propuestas → Efectivas
 * Resultados → Positivos: Esperados + Inesperados
 
 * Mejoras propuestas → Efectivas
 * Resultados → Positivos: Esperados + Inesperados
 
-Problemas, limitaciones y Puntos Pendientes
+Problemas, Limitaciones y Puntos Pendientes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-* Predicción de *early collection*
 * Explosión de uso de memoria con *eager allocation*
 * Explosión de uso de memoria con *eager allocation*
+* Eficiencia del marcado preciso
+* Mejorar predicción de *early collection*
 * Experimentar con ``clone(2)``
 * Experimentar con ``clone(2)``
-* Eficiencia de marcado
 
 Trabajos Relacionados
 ~~~~~~~~~~~~~~~~~~~~~
 
 Trabajos Relacionados
 ~~~~~~~~~~~~~~~~~~~~~
@@ -412,4 +447,5 @@ Fin
 ~~~
 ¡Gracias!
 
 ~~~
 ¡Gracias!
 
+
 .. vim: set et sw=4 sts=4 spell spelllang=es :
 .. vim: set et sw=4 sts=4 spell spelllang=es :