]> 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 beae12016003a652528063f46757b18950051a6d..ec6345c4d18d0191228efa7961f434730f481b57 100644 (file)
@@ -45,8 +45,8 @@ Introducción
 Algoritmos Clásicos
 ~~~~~~~~~~~~~~~~~~~
 * Conteo de referencias
-* **Marcado y barrido**
 * Copia de semi-espacio
+* **Marcado y barrido**
 
 .. raw:: latex
 
@@ -264,9 +264,10 @@ Precisión
 ~~~~~~~~~
 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
@@ -288,7 +289,7 @@ Optimizaciones y Otras Mejoras Menores
 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``
@@ -313,49 +314,77 @@ Resultados
 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
@@ -366,11 +395,28 @@ Conclusión
 
 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
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~