Algoritmos Clásicos
~~~~~~~~~~~~~~~~~~~
* Conteo de referencias
-* **Marcado y barrido**
* Copia de semi-espacio
+* **Marcado y barrido**
.. raw:: latex
~~~~~~~~~
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
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``
* Tiempo máximo de *stop-the-world*
* Tiempo máximo de pausa real
* Cantidad máxima de memoria utilizada
-* Cantidad total de recolecciones realizadas
Gráficos de Corridas
.. 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
-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
-
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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~