Cuánta memoria (RAM) utiliza el grupo de memoria y el grupo UTXO

Sé que puedo configurar -dbcache=<MB>al iniciar bitcoind.
¿Esto afecta la cantidad de RAM asignada para UTXOPool o UTXOPool + mempool?
¿Cómo puedo saber cuánta RAM ocupa cada base de datos en RAM?

Si el grupo UTXO es de 2,7 GB y configuro -dbcache=4096, ¿qué sucede con el resto de la memoria asignada?

Respuestas (1)

En Bitcoin Core, hay dos configuraciones, -dbcachey -maxmempool, con valores predeterminados de 450 y 300, respectivamente.

El mempool solo puede ocupar tanto como esté configurado a través de -maxmempool.

La memoria caché del conjunto de UTXO puede ocupar tanto como esté configurado -dbcache más la cantidad de espacio de mempool configurado que actualmente no se utiliza. Sin embargo, el uso de la memoria es mucho mayor que la representación equivalente en el disco: cargar todo el conjunto UTXO requeriría 6-7 GiB en el momento de hablar.

Las representaciones en memoria son siempre más grandes. En el disco, solo son secuencias empaquetadas de bytes. En la memoria, hay índices y punteros, y sobrecarga de asignación de memoria, todo para acelerar el acceso. El factor de expansión de los datos UTXO es mayor que el de la memoria.

Desde 0.14, el mempool también se guarda en el disco al apagar (pero no de forma continua).

Hasta el momento, no se ha realizado ninguna priorización en la memoria caché UTXO. Simplemente mantenemos todas las entradas a las que se accede, y cuando crece demasiado, todas las entradas modificadas se escriben en el disco. Una optimización (muy) significativa es que cuando se crea un UTXO y luego se gasta, sin escribirlo en el disco en el medio, simplemente lo eliminamos de la memoria.

¿El uso de memoria del mempool es el mismo que el de la representación en el disco? Si no, ¿está registrado en alguna parte? ¿Podría decirme por qué el conjunto UTXO ocupa mucho más que la representación en el disco? ¿Y hay una prioridad para qué salidas se mantienen en la RAM?
He actualizado la respuesta para abordar estas preguntas.
Gracias. Así que última pregunta. Si uso -dbcache=16384, ¿se utilizarán 16 GB de mi RAM independientemente del tamaño real que ocupará el conjunto UTXO en RAM?
No, solo la cantidad que se pueda usar.