]> git.llucax.com Git - z.facultad/75.00/presentacion.git/blobdiff - presentacion.rst
Poner ejemplo de override de variable de entorno
[z.facultad/75.00/presentacion.git] / presentacion.rst
index 1b160736cfc636dec974fb0a109954c265f569b7..ec6345c4d18d0191228efa7961f434730f481b57 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
 
 
@@ -45,8 +45,8 @@ Introducción
 Algoritmos Clásicos
 ~~~~~~~~~~~~~~~~~~~
 * Conteo de referencias
 Algoritmos Clásicos
 ~~~~~~~~~~~~~~~~~~~
 * Conteo de referencias
-* **Marcado y barrido**
 * Copia de semi-espacio
 * Copia de semi-espacio
+* **Marcado y barrido**
 
 .. raw:: latex
 
 
 .. raw:: latex
 
@@ -264,9 +264,10 @@ Precisión
 ~~~~~~~~~
 Adaptación del trabajo de Vincent Lang y David Simcha:
 
 ~~~~~~~~~
 Adaptación del trabajo de Vincent Lang y David Simcha:
 
-* Compilador genera información sobre ubicación de los punteros en un tipo
+* Compilador genera información sobre ubicación de los punteros para cada tipo
+  de dato
 
 
-  * Indica si una *palabra* debe ser escaneada (uniones)
+  * Indica si una *palabra* debe ser escaneada
   * Indica si una palabra es un puntero
 
 * Se pasa esa información al recolector al momento de pedir memoria
   * Indica si una palabra es un puntero
 
 * Se pasa esa información al recolector al momento de pedir memoria
@@ -288,7 +289,7 @@ Optimizaciones y Otras Mejoras Menores
 Configurabilidad
 ~~~~~~~~~~~~~~~~
 * Configurable en *tiempo de arranque*
 Configurabilidad
 ~~~~~~~~~~~~~~~~
 * Configurable en *tiempo de arranque*
-* Vía variable de entorno (``D_GC_OPTS``)
+* Vía variable de entorno (``D_GC_OPTS=fork=0 ./prog``)
 * Viejas opciones convertidas
 
   * ``mem_stop``
 * Viejas opciones convertidas
 
   * ``mem_stop``
@@ -313,49 +314,77 @@ 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
 
 
-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
+
+Cantidad Máxima de Memoria Utilizada
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-mem.pdf
+    :width: 12.5cm
+
+Tiempo Total de Ejecución
+~~~~~~~~~~~~~~~~~~~~~~~~~
+.. image:: img/norm-hist-time.pdf
+    :width: 12.5cm
 
 
-Diapositiva 2
-~~~~~~~~~~~~~
-Diapositiva 2
 
 
 Conclusión
 
 
 Conclusión
@@ -366,18 +395,35 @@ Conclusión
 
 Resumen
 ~~~~~~~
 
 Resumen
 ~~~~~~~
-* Recolección de basura → Inagotable
-* D → Multi-paradigma → Desafío
-* Recolección de basura en D → Fértil
-* Mejoras propuestas → Efectivas
-* Resultados → Positivos: Esperados + Inesperados
+* Objetivo principal
+
+  Minimizar tiempo de pausa para programas reales
+
+  Tiempo de pausa de Dil:
+
+  * *Stop-the-world* **160 veces menor** (1.66s → 0.01s)
+  * Pausa real **40 veces menor** (1.7s → 0.045s)
+
+* Objetivo secundario
+
+  No empeorar mucho el recolector actual en ningún aspecto
+
+  Utilización de memoria de Dil:
+
+  **50% mayor** (mucho *overhead* por marcado preciso)
+
+* Yapa
+
+  Tiempo total de ejecución de Dil:
+
+  Casi **3 veces menor** (55s → 20s)
 
 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
 ~~~~~~~~~~~~~~~~~~~~~