Suite à des tests concluants sur armv7, je propose très officiellement de définir le « Raspberry Pi 4 Model B - 4GB - SSD USB3 » comme machine de référence.
Du moins dans un 1er temps, car cela va fortement nous limiter en taille de blocs, donc d’ici quelques années nous auront probablement besoin de passer sur une machine de référence plus puissante.
J’ai passé le week-end à mettre en place la structure pour le « weights benchmarking », afin de pouvoir mesurer concrètement quelle taille de bloc nous pourront avoir sur raspberry pi 4.
Pour le moment je n’ai pu benchmarker que les simples transferts de monnaie, mais ça donne déjà un ordre d’idée: j’obtiens des performances à peu près 50 fois plus faible que la machine de référence de Polkadot.
Plus concrètement, on sera limité à 400* transfers de monnaie par bloc, si le bloc ne contient que ça, donc aucune certif ni aucune création de DU ni rien d’autre.
Tant qu’on est en dessous de 100 000 utilisateurs ça devrait être suffisant, et l’idée c’est qu’au-delà on aura les moyens de mieux rémunérer les forgerons pour qu’ils puissent investir dans du matériel plus conséquent.
*Calcul du nombre max de transferts par bloc
On se base sur le call balances.transfer_keep_alive
qui est le call qui sera utilisé dans la pratique par les wallet, en plus il est moins coûteux que balances.transfer
.
D’après le benchmarking, le poids de ce call est 1_414_318_000 + 1 read + 2 writes
.
Il faut également ajouter le poids de base d’un extrinsic:
base_extrinsic: 1 billion
read: 250 millions
write: 1 billion
transfer_keep_alive: 1_414_318_000 + 1 read + 2 writes + base = 1_414_318_000 + 2.25 billions + 1 milliard = 3_664_318_000 ~= 3.66 billions.
normal.max_block: 1500 billions
normal.max_block / transfer_keep_alive = 1500 / 3.66 = 409
On tombe bien sur environ 400 transferts.
Pour ceux qui souhaitent plus de détails, voici la MR: