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
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
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
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:
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
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
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.
voronoi 0.886 0.003 0.006
======== ======== ======== ========
- .. subtable::
+ .. subflt::
Del consumo máximo de memoria.
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
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)
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
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)
``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).
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)
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)
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)
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)
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á
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)
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)
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).
============== ============== ============== =================
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.