MIRA: Ajuste de rendimiento

in introduceyourself •  5 years ago 

 Sin MIRA, el requisito de RAM para ejecutar un steemdnodo 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 steemdrepositorio 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.cfgarchivo, hay una opción global llamada statistics. De forma predeterminada, esto se establece en false. Esto debe configurarse a trueantes de continuar! Aquí hay un ejemplo de una database.cfgestadí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 steemdcomo 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 steemdrepositorio en programs/util/rocksdb_advisor.sh. Desde el program/utildirectorio ejecuta la herramienta:

$ sh rocksdb_advisor.sh

Si todo va bien, debe obtener un resultado para cada objeto especificado en el rocksdb_advisor.sharchivo. 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.shsugerencia para la account_authority_objectbase 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 baseconfiguración, ya que esto se aplica a todas las bases de datos dentro de un steemdnodo 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_keypara 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_optionsen el ejemplo anterior).

A pesar de que no hemos especificado optimize_level_style_compactiony increase_parallelismpara la account_authority_objectconfiguració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 statisticsa false.Feliz puesta a punto y buena suerte!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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!

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

Loading...

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!

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:

  1. Use Partiko App from your mobile phone to post to your blog, comment, and upvote content in SteemIt to earn points which you can use to boost your own content.
  2. If you’re into games, you may wanna try playing Steem Monsters, a blockchain game based on Steem. If lets you compete with other players around the world with creature cards which you can sell and/or convert to crypto.
  3. Get rewarded for staying fit and healthy with ActiFit - a Steem-based app which rewards you with tokens (which you can eventually use to boost your content) for being physically active.
  4. If you have other social media accounts with considerable amount of following, why not re-post your content using Share2Steem and get upvotes and free boost to your postings.
  5. Invest your Steem Power at Smart Steem and get daily rewards and earn more Steem
  6. Exchange votes with other users with SteemEngine.Net
  7. eSteem and Steempeak both offer an intuitive way of using Steem, enhancing your user experience.

If you need help, I am just a message away.

Cheers
Neil

Welcome to steemit @javigmartinez.

Welcome the new steemians. Have a great day!

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!

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