X-Git-Url: https://git.llucax.com/z.facultad/75.00/informe.git/blobdiff_plain/820b50cacb44a8df464954c579ae066ecb2bdc5a..6129276a9ec861180e4adf8585c54a46d4607c55:/source/solucion.rst diff --git a/source/solucion.rst b/source/solucion.rst index 979d7fe..c714895 100644 --- a/source/solucion.rst +++ b/source/solucion.rst @@ -311,7 +311,7 @@ __ http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&art Este programa fue escrito por Oskar Linde y nuevamente hallado__ en el grupo de noticias. Fue construido para mostrar como el hecho de que el recolector sea conservativo puede hacer que al leer datos binarios hayan muchos *falsos -punteros* que mantengan vivas celdas que en realidad ya no deberían ser +positivos* que mantengan vivas celdas que en realidad ya no deberían ser accesibles desde el *root set* del grafo de conectividad. __ http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=46407 @@ -935,10 +935,10 @@ puede ver, por ejemplo, el tiempo total de ejecución de Dil_ al generar la documentación completa del código de Tango_, según varía el valor de ``MAX_DEPTH``. -.. fig:: fig:sol-mark-rec +.. flt:: fig:sol-mark-rec Análisis de tiempo total de ejecución en función del valor de - ``MAX_DEPTH``. + ``MAX_DEPTH`` Tiempo total de ejecución de Dil_ al generar la documentación completa del código de Tango_ en función del valor de ``MAX_DEPTH``. El rombo no @@ -1105,9 +1105,10 @@ memoria. Esta información se pasa como un puntero a un arreglo de palabras con la estructura mostrada en la figura :vref:`fig:sol-ptrmap` y que se describe a continuación. -.. fig:: fig:sol-ptrmap +.. flt:: fig:sol-ptrmap + :type: table - Estructura de la información de tipos provista por el compilador. + Estructura de la información de tipos provista por el compilador .. aafig:: :scale: 110 @@ -1169,9 +1170,9 @@ palabra sea realmente un puntero, pero indica que debe ser escaneado. El recolector debe debe ser conservativo en este caso, y escanear esa palabra como si fuera un puntero. -.. fig:: fig:sol-ptrmap-example +.. flt:: fig:sol-ptrmap-example - Ejemplo de estructura de información de tipos generada para el tipo ``S``. + Ejemplo de estructura de información de tipos generada para el tipo ``S`` .. aafig:: :textual: @@ -1229,10 +1230,10 @@ ese caso no hace falta directamente escanear ninguna palabra del bloque. En la figura :vref:`fig:sol-ptrmap-blk` se puede ver, como continuación del ejemplo anterior, como se almacenaría en memoria un objeto del tipo ``S``. -.. fig:: fig:sol-ptrmap-blk +.. flt:: fig:sol-ptrmap-blk Ejemplo de bloque que almacena un objeto de tipo ``S`` con información de - tipo. + tipo .. aafig:: :scale: 110 @@ -2082,9 +2083,10 @@ direcciones antiguo, que no tiene una componente aleatoria y asigna primero direcciones bajas. La opción ``-R`` solamente desactiva la componente azarosa al momento de asignar direcciones. -.. ftable:: t:sol-setarch +.. flt:: t:sol-setarch + :type: table - Variación entre corridas para TBGC. + Variación entre corridas para TBGC Variación entre corridas para TBGC. La medición está efectuada utilizando los valores máximo, mínimo y media estadística de 20 corridas, utilizando @@ -2092,7 +2094,7 @@ al momento de asignar direcciones. realizarse utilizando el desvío estándar en vez de la amplitud máxima, pero en este cuadro se quiere ilustrar la variación máxima, no la típica. - .. subtable:: + .. subflt:: Del tiempo total de ejecución. @@ -2114,7 +2116,7 @@ al momento de asignar direcciones. voronoi 0.886 0.003 0.006 ======== ======== ======== ======== - .. subtable:: + .. subflt:: Del consumo máximo de memoria. @@ -2139,7 +2141,7 @@ al momento de asignar direcciones. Ambas opciones, reducen notablemente la variación en los resultados (ver cuadro :vref:`t:sol-setarch`). Esto probablemente se debe a la naturaleza conservativa del recolector, dado que la probabilidad de tener *falsos -punteros* depende directamente de los valores de las direcciones de memoria, +positivos* depende directamente de los valores de las direcciones de memoria, aunque las pruebas en la que hay concurrencia involucrada, se siguen viendo grandes variaciones, que probablemente estén vinculadas a problemas de sincronización que se ven expuestos gracias al indeterminismo inherente a los @@ -2165,391 +2167,391 @@ modificaciones propuestas, pero en general distan mucho de como se comporta un programa real, por lo que los resultados deben ser analizados teniendo esto presente. -.. fig:: fig:sol-bigarr-1cpu +.. flt:: fig:sol-bigarr-1cpu - Resultados para ``bigarr`` (utilizando 1 procesador). + Resultados para ``bigarr`` (utilizando 1 procesador) Resultados para ``bigarr`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-bigarr-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-bigarr-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-bigarr-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-bigarr-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-bigarr-1cpu.pdf -.. fig:: fig:sol-bigarr-4cpu +.. flt:: fig:sol-bigarr-4cpu - Resultados para ``bigarr`` (utilizando 4 procesadores). + Resultados para ``bigarr`` (utilizando 4 procesadores) Resultados para ``bigarr`` (utilizando 4 procesadores). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-bigarr-4cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-bigarr-4cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-bigarr-4cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-bigarr-4cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-bigarr-4cpu.pdf -.. fig:: fig:sol-concpu-1cpu +.. flt:: fig:sol-concpu-1cpu - Resultados para ``concpu`` (utilizando 1 procesador). + Resultados para ``concpu`` (utilizando 1 procesador) Resultados para ``concpu`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-concpu-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-concpu-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-concpu-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-concpu-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-concpu-1cpu.pdf -.. fig:: fig:sol-concpu-4cpu +.. flt:: fig:sol-concpu-4cpu - Resultados para ``concpu`` (utilizando 4 procesadores). + Resultados para ``concpu`` (utilizando 4 procesadores) Resultados para ``concpu`` (utilizando 4 procesadores). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-concpu-4cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-concpu-4cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-concpu-4cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-concpu-4cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-concpu-4cpu.pdf -.. fig:: fig:sol-conalloc-1cpu +.. flt:: fig:sol-conalloc-1cpu - Resultados para ``conalloc`` (utilizando 1 procesador). + Resultados para ``conalloc`` (utilizando 1 procesador) Resultados para ``conalloc`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-conalloc-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-conalloc-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-conalloc-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-conalloc-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-conalloc-1cpu.pdf -.. fig:: fig:sol-conalloc-4cpu +.. flt:: fig:sol-conalloc-4cpu - Resultados para ``conalloc`` (utilizando 4 procesadores). + Resultados para ``conalloc`` (utilizando 4 procesadores) Resultados para ``conalloc`` (utilizando 4 procesadores). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-conalloc-4cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-conalloc-4cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-conalloc-4cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-conalloc-4cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-conalloc-4cpu.pdf -.. fig:: fig:sol-split-1cpu +.. flt:: fig:sol-split-1cpu - Resultados para ``split`` (utilizando 1 procesador). + Resultados para ``split`` (utilizando 1 procesador) Resultados para ``split`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-split-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-split-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-split-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-split-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-split-1cpu.pdf -.. fig:: fig:sol-mcore-1cpu +.. flt:: fig:sol-mcore-1cpu - Resultados para ``mcore`` (utilizando 1 procesador). + Resultados para ``mcore`` (utilizando 1 procesador) Resultados para ``mcore`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-mcore-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-mcore-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-mcore-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-mcore-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-mcore-1cpu.pdf -.. fig:: fig:sol-mcore-4cpu +.. flt:: fig:sol-mcore-4cpu - Resultados para ``mcore`` (utilizando 4 procesadores). + Resultados para ``mcore`` (utilizando 4 procesadores) Resultados para ``mcore`` (utilizando 4 procesadores). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-mcore-4cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-mcore-4cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-mcore-4cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-mcore-4cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-mcore-4cpu.pdf -.. fig:: fig:sol-rnddata-1cpu +.. flt:: fig:sol-rnddata-1cpu - Resultados para ``rnddata`` (utilizando 1 procesador). + Resultados para ``rnddata`` (utilizando 1 procesador) Resultados para ``rnddata`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-rnddata-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-rnddata-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-rnddata-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-rnddata-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -2724,12 +2726,12 @@ pagar si se necesitan tiempos de pausa muy pequeños). El aumento en el variación de los tiempos de ejecución al usar marcado preciso probablemente se debe a lo siguiente: con marcado conservativo, debe estar sobreviviendo a las recolecciones el total de memoria pedida por el programa, -debido a falsos punteros (por eso no se observa prácticamente variación en el +debido a *falsos positivos* (por eso no se observa prácticamente variación en el tiempo de ejecución y memoria máxima consumida); al marcar con precisión -parcial, se logra disminuir mucho la cantidad de falsos punteros, pero el +parcial, se logra disminuir mucho la cantidad de *falsos positivos*, pero el *stack* y la memoria estática, se sigue marcado de forma conservativa, por lo tanto dependiendo de los valores (aleatorios) generados por la prueba, aumenta -o disminuye la cantidad de falsos punteros, variando así la cantidad de +o disminuye la cantidad de *falsos positivos*, variando así la cantidad de memoria consumida y el tiempo de ejecución. No se muestran los resultados para más de un procesador por ser demasiado @@ -2749,40 +2751,40 @@ trabajo. Resultados para pruebas pequeñas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. fig:: fig:sol-bh-1cpu +.. flt:: fig:sol-bh-1cpu - Resultados para ``bh`` (utilizando 1 procesador). + Resultados para ``bh`` (utilizando 1 procesador) Resultados para ``bh`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-bh-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-bh-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-bh-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-bh-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -2798,9 +2800,10 @@ suspicacia. ``bh`` ^^^^^^ -.. ftable:: t:sol-prec-mem-bh +.. flt:: t:sol-prec-mem-bh + :type: table - Memoria pedida y asignada para ``bh`` según modo de marcado. + Memoria pedida y asignada para ``bh`` según modo de marcado Memoria pedida y asignada para ``bh`` según modo de marcado conservativo o preciso (acumulativo durante toda la vida del programa). @@ -2818,40 +2821,40 @@ realista se puede observar el efecto positivo del marcado preciso, en especial en la cantidad de recolecciones efectuadas (aunque no se traduzca en un menor consumo de memoria). -.. fig:: fig:sol-bisort-1cpu +.. flt:: fig:sol-bisort-1cpu - Resultados para ``bisort`` (utilizando 1 procesador). + Resultados para ``bisort`` (utilizando 1 procesador) Resultados para ``bisort`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-bisort-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-bisort-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-bisort-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-bisort-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -2868,40 +2871,40 @@ realmente asignada por el recolector (y la memoria desperdiciada) cuando se usa marcado conservativo y preciso. Estos valores fueron tomados usando la opción ``malloc_stats_file`` (ver :ref:`sol_stats`). -.. fig:: fig:sol-em3d-1cpu +.. flt:: fig:sol-em3d-1cpu - Resultados para ``em3d`` (utilizando 1 procesador). + Resultados para ``em3d`` (utilizando 1 procesador) Resultados para ``em3d`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-em3d-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-em3d-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-em3d-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-em3d-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -2924,40 +2927,40 @@ total prácticamente no varía entre TBGC y CDGC, ni entre las diferentes configuraciones del último (evidentemente en este caso no se aprovecha el caché de ``findSize()``). -.. fig:: fig:sol-tsp-1cpu +.. flt:: fig:sol-tsp-1cpu - Resultados para ``tsp`` (utilizando 1 procesador). + Resultados para ``tsp`` (utilizando 1 procesador) Resultados para ``tsp`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-tsp-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-tsp-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-tsp-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-tsp-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -2979,79 +2982,79 @@ sorprendentemente similares a los de ``bisort``. La única diferencia es que en este caso el marcado preciso y el uso de *early collection** no parecen ayudar; por el contrario, aumentan levemente el tiempo de pausa real. -.. fig:: fig:sol-voronoi-1cpu +.. flt:: fig:sol-voronoi-1cpu - Resultados para ``voronoi`` (utilizando 1 procesador). + Resultados para ``voronoi`` (utilizando 1 procesador) Resultados para ``voronoi`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-voronoi-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-voronoi-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-voronoi-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-voronoi-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) .. image:: plots/pause-voronoi-1cpu.pdf -.. fig:: fig:sol-voronoi-4cpu +.. flt:: fig:sol-voronoi-4cpu - Resultados para ``voronoi`` (utilizando 4 procesadores). + Resultados para ``voronoi`` (utilizando 4 procesadores) Resultados para ``voronoi`` (utilizando 4 procesadores). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-voronoi-4cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-voronoi-4cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-voronoi-4cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-voronoi-4cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -3086,10 +3089,10 @@ este caso no parece provenir toda la ganancia solo de ese cambio, dado que para TBGC se ve una variación entre los resultados muy grande que desaparece al cambiar a CDGC, esto no puede ser explicado por esa optimización. En general la disminución de la variación de los resultados hemos visto que está -asociada al incremento en la precisión en el marcado, dado que los falsos -punteros ponen una cuota de aleatoriedad importante. Pero este tampoco parece -ser el caso, ya que no se observan cambios apreciables al pasar a usar marcado -preciso. +asociada al incremento en la precisión en el marcado, dado que los *falsos +positivos* ponen una cuota de aleatoriedad importante. Pero este tampoco +parece ser el caso, ya que no se observan cambios apreciables al pasar a usar +marcado preciso. Lo que se observa en esta oportunidad es un caso patológico de un mal factor de ocupación del *heap* (ver :ref:`sol_ocup`). Lo que muy probablemente está @@ -3112,40 +3115,40 @@ cambian). Resultados para pruebas reales ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. fig:: fig:sol-dil-1cpu +.. flt:: fig:sol-dil-1cpu - Resultados para ``dil`` (utilizando 1 procesador). + Resultados para ``dil`` (utilizando 1 procesador) Resultados para ``dil`` (utilizando 1 procesador). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-dil-1cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-dil-1cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-dil-1cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-dil-1cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -3167,40 +3170,40 @@ principalmente al mal factor de ocupación del *heap* de TBGC, dado que utilizando CDGC con la opción ``min_free=0`` se obtiene una media del orden de los 80 segundos, bastante más alta que el tiempo obtenido para TBGC. -.. fig:: fig:sol-dil-4cpu +.. flt:: fig:sol-dil-4cpu - Resultados para ``dil`` (utilizando 4 procesadores). + Resultados para ``dil`` (utilizando 4 procesadores) Resultados para ``dil`` (utilizando 4 procesadores). Se presenta el mínimos (en negro), la media centrada entre dos desvíos estándar (en gris), y el máximo (en blanco) calculados sobre 50 corridas (para tiempo de ejecución) o 20 corridas (para el resto). - .. subfig:: + .. subflt:: Tiempo de ejecución (seg) .. image:: plots/time-dil-4cpu.pdf - .. subfig:: + .. subflt:: Cantidad de recolecciones .. image:: plots/ncol-dil-4cpu.pdf - .. subfig:: + .. subflt:: Uso máximo de memoria (MiB) .. image:: plots/mem-dil-4cpu.pdf - .. subfig:: + .. subflt:: *Stop-the-world* máximo (seg) .. image:: plots/stw-dil-4cpu.pdf - .. subfig:: + .. subflt:: Pausa real máxima (seg) @@ -3215,9 +3218,10 @@ información del tipo se guarda al final del bloque (ver :ref:`sol_precise`). En el cuadro :vref:`t:sol-prec-mem-dil` se puede observar la diferencia de memoria desperdiciada entre el modo conservativo y preciso. -.. ftable:: t:sol-prec-mem-dil +.. flt:: t:sol-prec-mem-dil + :type: table - Memoria pedida y asignada para ``dil`` según modo de marcado. + Memoria pedida y asignada para ``dil`` según modo de marcado Memoria pedida y asignada para ``dil`` según modo de marcado conservativo o preciso (acumulativo durante toda la vida del programa). @@ -3230,7 +3234,7 @@ memoria desperdiciada entre el modo conservativo y preciso. ============== ============== ============== ================= El pequeño incremento en el tiempo total de ejecución podría estar dado por la -mayor probabilidad de tener *falsos punteros* debido al incremento del tamaño +mayor probabilidad de tener *falsos positivos* debido al incremento del tamaño del *heap*; se recuerda que el *stack* y memoria estática se siguen marcado de forma conservativa, incluso en modo preciso.