// Recherche

Benchmarks de performance de Bitroot

Brouillon. Les chiffres ci-dessous proviennent d'un seul test de charge interne. Le matériel, le nombre de nœuds, la version du logiciel et le type de transaction restent à ajouter ; la page demeure donc non indexée tant qu'ils ne le sont pas.

Cette page indique comment Bitroot mesure le débit, dans quelles conditions, et comment les chiffres peuvent être reproduits. L'objectif de conception et le résultat mesuré sont présentés séparément. Chaque chiffre mesuré nomme l'exécution dont il provient.

1. Objectifs et mesures

MétriqueObjectif de conceptionDernière mesureExécution
Débit (TPS)100,000+36,430.68 tx/s, en moyenne sur toute l'exécution, de la première à la dernière transaction enregistréeTest de charge de 30,000,000 de transactions, section 4
Temps de finalitéÀ déterminerÀ déterminerNon couvert par cette exécution
Temps de blocÀ déterminerÀ déterminerNon couvert par cette exécution

Le débit mesuré est inférieur à l'objectif de conception. L'objectif décrit ce que l'architecture est conçue pour atteindre. La mesure décrit ce qu'une seule exécution a produit.

2. Définitions

Le TPS désigne ici le débit côté chaîne : le nombre de transactions enregistrées dans des blocs divisé par le temps écoulé entre la première et la dernière transaction enregistrée. Ce n'est pas la cadence à laquelle le générateur de charge a envoyé les transactions. Pour le vocabulaire général, voir le Glossaire des métriques de performance.

TODO(engineering) : préciser si la surcharge du consensus et du réseau est incluse, et comment les transactions échouées seraient comptées. Dans cette exécution, aucune n'a échoué.

3. Environnement de test

ÉlémentValeur
Mode d'exécutionmempool
Mode de noncelocal
Signataires500
Mempool TXs100,000
Pourboire (tip)5,000,000,000 wei (5 gwei)
RéseauÀ déterminer (testnet, devnet ou cluster isolé)
Nombre de nœuds et rôlesÀ déterminer
Matériel par nœud (CPU, mémoire, disque, réseau)À déterminer
Répartition géographique et latenceÀ déterminer
Version du logiciel et commitÀ déterminer
Date d'exécutionÀ déterminer

L'outil de charge indique également un paramètre de blocs de 300 et une taille de segment de 0 KB. TODO(engineering) : expliquer la signification de ces deux paramètres avant de les publier comme conditions de test.

4. Charge de travail et résultats

ÉlémentValeur
Transactions prévues30,000,000
Transactions envoyées30,000,000
Transactions enregistrées30,000,000
Échecs d'envoi0
Nouvelles tentatives0
Taux de réussite100.00%
Durée d'envoi805.19 s
Débit côté chaîne36,430.68 tx/s

TODO(engineering) : préciser le type de transaction. Le rapport indique le destinataire comme « default » sans dire si l'exécution a utilisé des transferts natifs, des transferts de jetons ou des appels de contrat. Les chiffres obtenus avec de simples transferts constituent une borne supérieure pour les applications réelles ; cela doit donc être indiqué à côté du résultat. Voir aussi Points chauds dans les charges de travail EVM parallèles pour comprendre comment les conflits modifient le débit.

Sortie brute

Le rapport de l'outil de charge, non modifié :

==================================================
🔥 Stress Test Report
==================================================
Total Planned:       30000000
Successfully Sent:   30000000
Duplicate Sent:      0 (already known, not counted above)
Failed to Send:      0
Landed Transactions: 30000000
Success Rate:        100.00%
Retry Attempts:      0
Signing Time:        79499764 ms (all sign_batch_txs)
Total Pause Time:    79499764 ms (incl. recharge & signing)
--------------------------------------------------
Send Duration:       805.19s
Total Duration:      805.19s (incl. waiting)
Average RPS:         46425.94 req/s (send speed)
Average TPS:         46425.94 tx/s (inclusion speed)
--------------------------------------------------
Run Mode:            mempool
Nonce Mode:          local
Signer Count:        500
Blocks:              300
Chunk Size:          0 KB
Tip Wei:             5000000000
Mempool TXs:         100000
To:                  default
Real Chain TPS:      36430.68 tx/s (first to last landed)
==================================================

L'outil affiche deux valeurs de débit. "Real Chain TPS" (36,430.68 tx/s, de la première à la dernière transaction incluse dans la chaîne) est la valeur côté chaîne utilisée sur cette page. "Average RPS" et "Average TPS" (46,425.94) ne sont pas utilisés : 30,000,000 de transactions en 805.19 s donnent environ 37,257 tx/s, ce qui ne correspond pas.

TODO(engineering) : expliquer comment l'outil calcule "Average TPS" et ce que mesurent les lignes "Signing Time" et "Total Pause Time" (79,499,764 ms chacune), afin que le lecteur puisse réconcilier le rapport.

5. Reproduire les résultats

TODO(engineering) : lier l'outil de test de charge, le commit exact, la ligne de commande et la configuration, ainsi que la sortie brute.

6. Limites connues

  • Une seule exécution ne représente pas une charge de production soutenue. Elle montre ce que le réseau a fait pendant environ 13 minutes avec cette configuration.
  • La charge est un scénario unique. Le débit sous forte contention, par exemple lorsque de nombreuses transactions touchent le même contrat, n'est pas couvert.
  • Le résultat s'applique à l'environnement ci-dessus une fois celui-ci renseigné, et à aucun autre.

7. Vérification indépendante

TODO(product) : lier toute mesure ou tout rapport d'audit de tiers, avec l'organisation, le périmètre et la date. Si aucun n'existe encore, l'indiquer ici.

8. Journal des modifications

DateModification
À déterminerPremière publication : test de charge de 30,000,000 de transactions