From: Leandro Lucarella Date: Mon, 29 Nov 2010 02:22:27 +0000 (-0300) Subject: Agregar notas a algunos slides X-Git-Tag: defensa-tesis~12 X-Git-Url: https://git.llucax.com/z.facultad/75.00/presentacion.git/commitdiff_plain/72c1f3780eefedb994aa6d24273d19d31b244b5f Agregar notas a algunos slides Notas con algunos ayudamemorias y con tiempos estimados por slide. Faltan algunos slides pero el tiempo total es correcto. El Makefile genera también el documento de notas. --- diff --git a/.gitignore b/.gitignore index f7eae00..21935a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .tmp/* presentacion.pdf +notas.pdf diff --git a/Makefile b/Makefile index 82f26c5..72d3653 100644 --- a/Makefile +++ b/Makefile @@ -44,16 +44,29 @@ override V := $(if $V,,@) # honour make -s flag override V := $(if $(findstring s,$(MAKEFLAGS)),,$V) +.PHONY: all +all: presentacion.pdf notas.pdf + presentacion.pdf: $O/presentacion.tex $(imgs) $(if $V,@echo "$(PDFLATEX) $< > $@") $V cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $( $@.log $V cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $(> $@.log $V mv $O/$@ $@ +notas.pdf: $O/notas.tex + $(if $V,@echo "$(PDFLATEX) $< > $@") + $V cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $( $@.log + $V cd $O && $(PDFLATEX) $(PDFLATEXFLAGS) $(> $@.log + $V mv $O/$@ $@ + $O/presentacion.tex: presentacion.rst $(R2B) $(if $V,@echo "$(R2B) $< > $@") $V $(R2B) $(R2BFLAGS) $< | $(R2BFILTER) > $@ +$O/notas.tex: presentacion.rst $(R2B) + $(if $V,@echo "$(R2B) $< > $@") + $V $(R2B) $(R2BFLAGS) --shownotes=only $< | $(R2BFILTER) > $@ + $O/img/%.pdf: img/%.dot $(DOT) $(DOTFLAGS) -Tpdf -o $@ $< diff --git a/presentacion.rst b/presentacion.rst index 7ef452b..e9a218a 100644 --- a/presentacion.rst +++ b/presentacion.rst @@ -20,6 +20,12 @@ Motivación * Lenguaje de programación D * Utilidad → Software Libre → Contribución +.. r2b-note:: + + 1 min de presentación + + 1.5 min / 2.5 min + Recolección de Basura -------------------------------------------------- @@ -42,6 +48,10 @@ Introducción ¿Cómo? +.. r2b-note:: + + 5 min / 7.5 min + Algoritmos Clásicos ~~~~~~~~~~~~~~~~~~~ * Conteo de referencias @@ -54,6 +64,10 @@ Algoritmos Clásicos .. dummy: para que ande bien el raw de arriba +.. r2b-note:: + + 5 min / 12.5 min + Estado del Arte ~~~~~~~~~~~~~~~ * Medio siglo de investigación y desarrollo (3000+ publicaciones) @@ -72,6 +86,12 @@ Estado del Arte * **Precisión** * Análisis estático +.. r2b-note:: + + 6 min / 18.5 min + + Empieza con John McCarthy en 1959 + El Lenguaje de Programación D -------------------------------------------------- @@ -83,6 +103,10 @@ Características Generales * Sistema de tipos estático * Multi-paradigma +.. r2b-note:: + + 1 min / 19.5 min + Paradigmas ~~~~~~~~~~ * Programación de bajo nivel (*system-programming*) ← C/C++ @@ -107,6 +131,10 @@ Paradigmas → Finalización +.. r2b-note:: + + 4.5 min / 24 min + Recolector de Basura de D @@ -122,6 +150,10 @@ Organización del Heap .. image:: img/heap.pdf :height: 6.7cm +.. r2b-note:: + + 2.5 min / 26.5 min + Bloques ~~~~~~~ * Tamaño fijo (por página) @@ -147,6 +179,10 @@ Bloques * *free* * *finals* +.. r2b-note:: + + 3.5 min / 30 min + Algoritmo ~~~~~~~~~ * Marcado y barrido @@ -165,6 +201,10 @@ Algoritmo * Muy propenso a extender el tiempo de *stop-the-world* en la práctica +.. r2b-note:: + + 3 min / 33 min + Lo Bueno, lo Malo y lo Feo -------------------------------------------------- @@ -178,6 +218,10 @@ Lo Bueno (bueno != perfecto) +.. r2b-note:: + + 5 min / 38 min + Lo Malo y lo Feo ~~~~~~~~~~~~~~~~ Lo malo @@ -192,6 +236,10 @@ Lo feo * El código (complejo, intrincado, duplicado, poco documentado) → Difícil de mantener, modificar y mejorar +.. r2b-note:: + + 3.5 min / 41.5 min + Modificaciones Propuestas @@ -208,6 +256,10 @@ fork(2) * Comienza con un solo hilo (el que llamó a ``fork(2)``) * Muy eficiente +.. r2b-note:: + + 3.5 min / 44 min + Algoritmo Principal ~~~~~~~~~~~~~~~~~~~ * Basado en el trabajo de Gustavo Rodriguez-Rivera y Vince Russo (*Non-intrusive @@ -219,6 +271,10 @@ Algoritmo Principal * Se comunican resultados vía memoria compartida * Sincronización mínima (``fork(2)`` + ``waitpid(2)``) +.. r2b-note:: + + 2.5 min / 44 min + Problemas ~~~~~~~~~ * Hilo que disparó la recolección bloqueado hasta fin de recolección completa @@ -228,6 +284,10 @@ Problemas → Tiempo de pausa en la práctica ~= tiempo total de recolección +.. r2b-note:: + + 2.5 min / 46.5 min + Eager Allocation ~~~~~~~~~~~~~~~~ * Crea un nuevo *pool* de memoria antes de lanzar el marcado concurrente @@ -241,6 +301,10 @@ Eager Allocation ↓ Tiempo de pausa real +.. r2b-note:: + + 6.5 min / 53 min + Early Collection ~~~~~~~~~~~~~~~~ * Dispara una recolección *preventiva* antes de que se agote la memoria @@ -256,6 +320,15 @@ Early Collection ↓ Tiempo de pausa real (no garantizado) +.. r2b-note:: + + 3.5 min / 56.5 min + + Si hago una recolección cuando queda 20% de memoria libre y nadie pide más + memoria mientras se recolecta, es como si tuviera 20% menos de memoria + disponible para el programa => más recolecciones => más consumo de CPU (y + potencialmente run-time) + Otras Mejoras -------------------------------------------------- @@ -277,6 +350,10 @@ 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) +.. r2b-note:: + + 2 min / 58.5 min + Optimizaciones y Otras Mejoras Menores ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Mejora del factor de ocupación del *heap* @@ -286,6 +363,10 @@ Optimizaciones y Otras Mejoras Menores * Optimizaciones algorítmicas sobre búsquedas frecuentes * Registro de pedidos de memoria y recolecciones realizadas +.. r2b-note:: + + 2 min / 60.5 min + Configurabilidad ~~~~~~~~~~~~~~~~ * Configurable en *tiempo de arranque* @@ -306,6 +387,10 @@ Configurabilidad * ``eager_alloc`` * ``early_collect`` +.. r2b-note:: + + 1.5 min / 62 min + Resultados @@ -372,21 +457,47 @@ Tiempo Máximo de Stop-The-World .. image:: img/norm-hist-stw.pdf :width: 12.5cm +.. r2b-note:: + + 5.5 min / 67.5 min + + Explicar brevemente división de pruebas (cual es trivial, pequeña, real) + Tiempo Máximo de Pausa Real ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: img/norm-hist-pause.pdf :width: 12.5cm +.. r2b-note:: + + 2 min / 69.5 min + + Explicar que donde hay grandes diferencias, es por tiempo de barrido + Cantidad Máxima de Memoria Utilizada ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: img/norm-hist-mem.pdf :width: 12.5cm +.. r2b-note:: + + 3.5 min / 73 min + + Enganchar lo anterior con la relación con el consumo de memoria + Tiempo Total de Ejecución ~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: img/norm-hist-time.pdf :width: 12.5cm +.. r2b-note:: + + 7 min / 80 min + + * mcore y split bajan mucho por caché de tamaño + * rnddata baja mucho por marcado preciso + * bigarr y sbtree suben porque no hacen más que alocar + Conclusión @@ -420,6 +531,10 @@ Resumen Casi **3 veces menor** (55s → 20s) +.. r2b-note:: + + 4 min / 84 min + Problemas, Limitaciones y Puntos Pendientes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Explosión de uso de memoria con *eager allocation* @@ -427,6 +542,10 @@ Problemas, Limitaciones y Puntos Pendientes * Mejorar predicción de *early collection* * Experimentar con ``clone(2)`` +.. r2b-note:: + + 3 min / 87 min + Trabajos Relacionados ~~~~~~~~~~~~~~~~~~~~~ * *Memory Management in the D Programming Language* @@ -444,6 +563,10 @@ Trabajos Relacionados Gustavo Rodriguez-Rivera y Vince Russo. Software Practiceand Experience Volumen 27, Número 8. Agosto 1997. +.. r2b-note:: + + 1.5 min / 88.5 min + Trabajos Futuros ~~~~~~~~~~~~~~~~ * Organización de memoria @@ -452,6 +575,10 @@ Trabajos Futuros * Concurrencia → *Lock* **global** * Movimiento +.. r2b-note:: + + 1.5 min / 92 min + Preguntas ~~~~~~~~~ ¿?