Sin MIRA, el requisito de RAM para ejecutar un steemd
nodo crecerá indefinidamente, lo que es claramente insostenible. Para extender nuestra pista hacia un futuro lejano, se utilizarán principalmente los nodos habilitados para MIRA. MIRA se basa en la tecnología RocksDB, que es altamente configurable y algo compleja. MIRA se comportará de manera diferente en diferentes piezas de hardware, por lo que es prácticamente imposible crear una configuración de "talla única"; por lo tanto, es importante proporcionar una manera para que los usuarios obtengan el máximo rendimiento de su hardware particular. Esta guía pretende hacer precisamente eso. Esta guía debe mantenerse actualizada y mejorarse dentro del steemd
repositorio para fines de documentación. Las mejoras se deben hacer en una solicitud de extracción contra MIRA Tuning Guide .
Prefacio
Después de los esfuerzos iniciales de desarrollo de MIRA, lanzamos la Guía de configuración básica de MIRA para ayudar a los usuarios de arranque que intentan usar MIRA habilitado steemd
. En realidad, se puede hacer mucho más ajuste para mejorar el rendimiento de MIRA y me gustaría aprovechar el momento para compartirlo con la comunidad. Vamos a dividir este proceso en tres fases:
- Fase 1: Recopilación de estadísticas
- Fase 2: Análisis de estadísticas
- Fase 3: Aplicar recomendaciones de rendimiento.
Fase 1: Recopilación de estadísticas
Como habrá notado, dentro del database.cfg
archivo, hay una opción global llamada statistics
. De forma predeterminada, esto se establece en false
. Esto debe configurarse a true
antes de continuar! Aquí hay un ejemplo de una database.cfg
estadística habilitada:
$ cat ~/.steemd/database.cfg
{
"global": {
"shared_cache": {
"capacity": "5368709120"
},
"write_buffer_manager": {
"write_buffer_size": "1073741824"
},
"object_count": 62500,
"statistics": true
},
"base": {
"optimize_level_style_compaction": true,
"increase_parallelism": true,
"block_based_table_options": {
"block_size": 8192,
"cache_index_and_filter_blocks": true,
"bloom_filter_policy": {
"bits_per_key": 10,
"use_block_based_builder": false
}
}
}
}
Una vez que se hayan habilitado las estadísticas, simplemente realice la acción que desea optimizar. En mi ejemplo, estaré sincronizando el testnet. Comienza steemd
como lo harías normalmente. Tenga en cuenta que habilitar las estadísticas causa un impacto drástico en el rendimiento; no querrá ejecutar esto en producción. De forma predeterminada, las estadísticas se vuelcan cada 10 minutos, por lo que querrá ejecutarlas durante un tiempo. Cuantos más datos recopile, más precisas serán las sugerencias de ajuste de rendimiento.
Fase 2: Análisis de estadísticas
Afortunadamente, no necesitará un conocimiento íntimo de RocksDB para analizar los datos estadísticos. Los desarrolladores que trabajan en RocksDB nos han proporcionado una herramienta que puede leer las estadísticas recopiladas y hacer recomendaciones de ajuste de rendimiento. Esta herramienta se puede encontrar dentro del steemd
repositorio en programs/util/rocksdb_advisor.sh
. Desde el program/util
directorio ejecuta la herramienta:
$ sh rocksdb_advisor.sh
Si todo va bien, debe obtener un resultado para cada objeto especificado en el rocksdb_advisor.sh
archivo. Aquí hay un ejemplo de la salida posible:
Advisor for account_authority...
WARNING(TimeSeriesData) check_and_trigger: float division by zero
Rule: bloom-not-enabled
TimeSeriesCondition: bloom-not-enabled statistics: ['[]rocksdb.bloom.filter.useful.count', '[]rocksdb.bloom.filter.full.positive.count', '[]rocksdb.bloom.filter.full.true.positive.count'] behavior: evaluate_expression expression: keys[0]+keys[1]+keys[2]==0 aggregation_op: avg trigger: {'ENTITY_PLACEHOLDER': [0.0, 0.0, 0.0]}
Suggestion: inc-bloom-bits-per-key option : bloom_bits action : increase suggested_values : ['2']
scope: entities:
{'ENTITY_PLACEHOLDER'}
scope: col_fam:
{'boost\\:\\:mpl\\:\\:v_item<steem\\:\\:chain\\:\\:by_id, boost\\:\\:mpl\\:\\:vector0<mpl_\\:\\:na>, 0>', 'boost\\:\\:mpl\\:\\:v_item<steem\\:\\:chain\\:\\:by_last_owner_update, boost\\:\\:mpl\\:\\:vector0<mpl_\\:\\:na>, 0>', 'boost\\:\\:mpl\\:\\:v_item<steem\\:\\:chain\\:\\:by_account, boost\\:\\:mpl\\:\\:vector0<mpl_\\:\\:na>, 0>', 'default'}
En realidad, obtendrás significativamente más salida que la anterior. En aras de la simplicidad, trabajaremos con una sugerencia de rendimiento. Podemos ver aquí la rocksdb_advisor.sh
sugerencia para la account_authority_object
base de datos.
Sugerencia: opción inc-bloom-bits-per-key: acción bloom_bits: aumentar el valor sugerido: ['2']
Pasemos a aplicar las sugerencias del asesor.
Fase 3: Aplicar recomendaciones de rendimiento.
Si desea aplicar las mismas opciones a todas las bases de datos, simplemente cambiaría la base
configuración, ya que esto se aplica a todas las bases de datos dentro de un steemd
nodo habilitado para MIRA .Puede observar que obtendrá diferentes recomendaciones para diferentes objetos. En la implementación de MIRA, cada objeto es su propia base de datos RocksDB. ¿Cómo implementamos diferentes opciones para diferentes bases de datos?
Superposiciones de configuración
Una superposición de configuración es un conjunto de opciones que anulan la configuración base que se aplicará a una base de datos específica. En nuestra configuración predeterminada, puede observar que se llama a uno de los objetos base
. Estas configuraciones se aplican a cada base de datos a menos que una superposición de configuración las anule. Una superposición de configuración toma las mismas opciones que base
. Como ejemplo, anularemos bits_per_key
para el account_authority_object
.
{
"global": {
"shared_cache": {
"capacity": "5368709120"
},
"write_buffer_manager": {
"write_buffer_size": "1073741824"
},
"object_count": 62500,
"statistics": true
},
"base": {
"optimize_level_style_compaction": true,
"increase_parallelism": true,
"block_based_table_options": {
"block_size": 8192,
"cache_index_and_filter_blocks": true,
"bloom_filter_policy": {
"bits_per_key": 10,
"use_block_based_builder": false
}
}
},
"account_authority_object": {
"block_based_table_options": {
"block_size": 8192,
"cache_index_and_filter_blocks": true,
"bloom_filter_policy": {
"bits_per_key": 12,
"use_block_based_builder": false
}
}
}
}
Nota: al anular un valor de configuración, debe anular la opción completa de primer nivel (como block_based_table_options
en el ejemplo anterior).
A pesar de que no hemos especificado optimize_level_style_compaction
y increase_parallelism
para la account_authority_object
configuración, se heredan de base
.
Opciones Disponibles
No todas las opciones de RocksDB están disponibles para las configuraciones de MIRA. Es muy posible que la herramienta RocksDB pueda recomendar cambiar una opción que no esté disponible a través de MIRA. Siéntase libre de agregarlo y crear una solicitud de extracción, especialmente si está mejorando el rendimiento de sus nodos. Puede ver una lista completa de las opciones disponibles en el código base de las bibliotecas / mira / src / configuration.cpp . Ver las opciones recomendadas y revisar la lista; Intenté preservar las convenciones de nomenclatura durante la implementación para facilitar este proceso.
Conclusión
Es posible que deba repetir este proceso para lograr resultados óptimos. No hay garantía de que verá mejoras en el rendimiento, ya que esto es de naturaleza experimental. Cuando esté realizando una evaluación comparativa de su configuración o haya completado su ajuste de rendimiento, recuerde configurar statistics
a false
.Feliz puesta a punto y buena suerte!
Welcome to Steemit javigmartinez. The official FAQ can be found here and has A LOT of information https://steemit.com/faq.html - Also remember, Steemit is just ONE of the sites built that uses Steem the blockchain. You should also check out DTube and DSound for starters and if you're a gamer, Splinterlands! There are many other cool apps but I can't list them all here, there's just too many! But I'd also like to mention Steempeak, it's a better blogging platform that has a lot of cool features. The latest project you should also check as a new member is a palnet! Welcome to the blockchain! :) Oh, and if you're interested in creating your own tokens or smart contracts, check Steem engine!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Welcome javigmartinez!
eSteem is the application that improves your experience on Steem. You have full control over your data and content, unlike some apps we don't use our users to promote our application or services.
We have Mobile application for Android and iOS users. We also have developed Surfer Desktop application that helps you to gain new followers and stay connected with your friends, unique features - notifications, bookmarks, favorites, drafts, and more.
We reward our users with encouragement upvotes as well as monthly giveaways rewarding Spotlight top users and active Discord users.
Learn more: https://esteem.app
Join our discord: https://discord.gg/8eHupPq
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi and welcome here! When I started on steemit, my biggest problem was to find interesting people to interact with. So, to help newcomers getting started I created a directory with other interesting and or talented steemians to follow or interact with. Feel free to check it out at https://www.steemiandir.com I am sure it will help you find like-minded people. Enjoy your stay here and do not hesitate to contact me if you have any questions!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi, welcome to SteemIt. Good luck on your Steem journey and I wish you the best. I've been here since 2016 but it was only last month when I fully committed to take Steem seriously. You can read my STEEMJOURNEY here - https://steemit.com/steemvesting/@kapengbarako/my-steem-journey-000
Here are also some tools that I use and I hope you can find them useful too:
If you need help, I am just a message away.
Cheers
Neil
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Welcome to steemit @javigmartinez.
Welcome the new steemians. Have a great day!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Welcome to Steem javigmartinez! Partiko is officially the fastest and most popular mobile app for Steem. Unlike other Steem apps, we take 0% cut of your earnings! You can also be rewarded with Partiko Points while using Partiko and exchange Partiko Points for upvotes!
Partiko for Android can be downloaded here on Google Play and the iOS version is available here on the App Store.
If you have more questions, feel free to join our Discord channel and ask @crypto.talk, we're always here to help!
Thank you so much for your interest!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hello @javigmartinez
Welcome to Steemit & Wish you luck - success with Steemit!
Currently, We're supporting for the Planktons by our small upvote. If you follow @haccolong you will get free upvote of @hoaithu's Curation trail & minimum 1 follow from me. You may like it, Check statement here.
To get 3000points and receive additional rewards from your activities on Steemit, you can use Partiko app for your phone.
Please ignore this reply if you do not need the above.
Posted using Partiko Android
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit