Sui.

Publication

Partagez vos connaissances.

SuiLover.
Jul 28, 2025
Questions et Réponses avec des Experts

Quelles sont les limites du traitement parallèle des transactions par Sui ?

*Je suis en train de concevoir une DApp à haut débit et je souhaite optimiser le traitement parallèle de Sui. Quelles sont les limites pratiques et comment les tester ? *

  • Sui
  • Move
1
14
Partager
Commentaires
.

Réponses

14
Ashford.
Jul 31 2025, 07:42

Sui est conçu pour prendre en charge lehaut débitet letraitement des transactions parallèleen utilisant unmodèle d'échelle horizontalqui permet de traiter les transactions simultanément sans blocage. Cependant, il existe certaines limites et considérations lorsqu'il s'agit de pousser le traitement parallèle des transactions de Sui à sa capacité maximale.

Facteurs clés influant sur le traitement parallèle des transactions à Sui

1.Concurrence au niveau de l'objet

*Sui utilise un modèle centré sur l'objetdans lequel chaque objet (par exemple, pièce de monnaie, état du contrat intelligent) est traité indépendamment. *La parallélisation se produit sur des objetsqui n'entrent pas en conflit (c'est-à-dire que différents objets peuvent être traités simultanément si aucune transaction n'accède au même objet).

  • Si plusieurs transactions tentent de modifier le même objet ou la même ressource, lestransactions entreront en conflitet une seule sera traitée à la fois. *Limite pratique : Plus il y a d'objets uniques impliqués dans une transaction (c'est-à-dire plus les changements d'état sont indépendants), plus Sui peut atteindre de parallélisme. Toutefois, les objets auxquels plusieurs transactions accèdent ou font l'objet d'une mutation limitent le débit de ces transactions.

2.Contentieux et conflits relatifs aux transactions

*Les conflits de transactionsse produisent lorsque plusieurs transactions tentent d'accéder simultanément au même objet ou aux mêmes ressources. Sui gère ces conflits en rejetant l'une des transactions, ce qui limite le parallélisme.

  • Pour maximiser le parallélisme, vous devez concevoir votre DApp de manière àminimiser les contentionsen vous assurant que différentes transactions fonctionnent sur différents objets. *Limite pratique : Si de nombreux utilisateurs interagissent avec les mêmes objets (par exemple, dans une ressource partagée telle qu'un contrat de vote ou un pool de prêts), le système peut rencontrer des conflits, ce qui réduit le débit.

3.Types de transactions et efficacité gazière

  • La complexité d'une transaction influe sur la quantité decalcul et de gazqu'elle nécessite. Les transactions complexes (telles que celles impliquant l'exécution intelligente de contrats) peuvent être moins efficaces et plus gourmandes en ressources, ce qui réduit le parallélisme. *Limite pratique : Les transactions nécessitant beaucoup de gaz ou de calcul réduiront le nombre de transactions parallèles pouvant être traitées dans le même laps de temps.

4.Validateur et débit réseau

  • Lenombre de validateurset leur capacité à traiter les transactions constituent un facteur critique. À mesure que de plus en plus de validateurs rejoignent le réseau, Sui peut évoluer horizontalement, mais la capacité de traitement individuelle de chaque validateur peut devenir un goulot d'étranglement si elle n'est pas correctement gérée.
  • Labande passante du réseaua également un impact sur la rapidité avec laquelle les transactions peuvent être propagées entre les validateurs. Une forte congestion du réseau ou une bande passante insuffisante peuvent limiter le débit des transactions. *Limite pratique : le débit de votre DApp sera limité par la capacité des validateurs à traiter les transactions, et cela dépend de leur matériel, de leur bande passante et de leur configuration.

5.Partage et partitionnement des États

  • Sui s'appuie sur leshardinget lepartitionnement d'étatpour garantir un traitement parallèle. Chaque objet est affecté à une partition spécifique, et les transactions affectant la même partition doivent être traitées de manière séquentielle, tandis que les transactions impliquant différents fragments peuvent être traitées en parallèle. *Limite pratique : Plus le partitionnement est granulaire (c'est-à-dire plus les objets ou les groupes d'objets sont petits), plus vous pouvez obtenir de parallélisme. Cependant, un partitionnement excessif peut entraîner une augmentation des frais généraux et une complexité de la gestion de l'état.

Tester les limites des transactions parallèles

Pour comprendre leslimites pratiquesdu traitement des transactions en parallèle par Sui pour votre DApp spécifique, vous devez le tester dans diverses conditions. Voici comment vous pouvez vous y prendre :

1.Analyse comparative du débit et de la latence

  • Utilisez des outils pour comparer ledébit(transactions par seconde) et lalatence(temps par transaction) de votre DApp sous différentes charges.
  • Commencez par de petites transactions à faible contention**et augmentez progressivement le nombre de transactions ou leur complexité pour observer l'évolution du débit et de la latence.

Vous pouvez utiliserles outils CLI de Suipour simuler des transactions et surveiller les performances du système en cas de charge.

2.Testez avec différentes combinaisons de transactions

*Transactions indépendantes : testez les transactions qui interagissent avec différents objets sans entrer en conflit. Cela vous aidera à mesurer la capacité de Sui à gérer le traitement parallèle sans conflit. *Transactions riches en contention : introduisez des transactions qui accèdent aux mêmes objets (par exemple, un contrat intelligent impliquant un état partagé). Cela vous aidera à mesurer l'impact de la contention sur le débit.

En effectuant des tests avecdifférentes combinaisons de transactions, vous pouvez identifier le moment où le traitement des transactions en parallèle commence à se dégrader en raison de conflits ou d'autres blocages.

3.Simuler une charge dans le monde réel

  • Utilisezdes frameworks de test de charge(par exemple, JMeter, Artillery ou des scripts personnalisés) pour simuler descharges du monde réelsur votre DApp.
  • Testez le comportement de votre DApp lorsque plusieurs utilisateurs interagissent simultanément avec différentes parties de l'État.
  • Cela peut vous donner une idée dudébit maximalque votre DApp peut atteindre tout en maintenant unefaible latenceet unparallélisme élevé.

4.Surveillez les performances du validateur

  • Utilisez leTableau de bord Sui Validatorou les API pour surveiller la façon dont votre nœud et les validateurs de réseau gèrent la charge.
  • Vérifiez des indicateurs tels que letaux d'acceptation des transactions, letemps de traitement des blocset laconsommation de gaz par transaction.
  • Cela peut vous donner un aperçu dela capacité d'évolutiondes validateurs et de savoir si des problèmes de réseau (par exemple, une faible capacité des validateurs) affectent le débit.

Meilleures pratiques pour maximiser le parallélisme

1.Conception pour une faible contention :

  • Assurez-vous que les transactions de votre DApp ciblent autant que possible desobjets indépendants. Si vous construisez unearène de jeu, par exemple, isolez les états individuels des joueurs ou les états de combat les uns des autres afin de maximiser le parallélisme.

2.Utilisez le sharding et le partitionnement d'état :

  • Décomposez les objets volumineux en fragments ou partitions indépendants plus petits. Si vous créez unoutil de suivi des votes DAO, par exemple, chaque vote peut être traité comme un objet distinct afin d'éviter les conflits entre les électeurs.

3.Minimiser la consommation de gaz :

  • Assurez-vous que vos transactions sontéconomes en gaz. Des opérations trop complexes nécessitant beaucoup de calculs ou de gaz pourraient réduire le nombre de transactions que le système peut traiter simultanément.

4.Surveiller l'état du réseau et du validateur :

  • Assurez-vous que le réseau de validateurs est bien distribué et fonctionne bien sous charge. L'augmentation du nombre de validateurs et l'optimisation de leurs performances peuvent contribuer à améliorer l'évolutivité horizontaleet à réduire les délais de validation des transactions.

Conclusion

Bien que le traitement des transactions en parallèle de Sui soit conçu pour optimiser le débit, ses performances sont influencées par des facteurs tels que lacontention d'objets, laconsommation de gaz, lacomplexité des transactionset ledébit réseau. Pour optimiser le parallélisme :

*Minimisez les contentionsen concevant votre DApp pour qu'elle fonctionne sur des objets indépendants. *Comparez et testezvotre DApp dans des scénarios de forte charge pour identifier les goulots d'étranglement en termes de performances.

  • Assurez-vous queles validateurs et la capacité du réseausont suffisants pour répondre à vos besoins en matière de débit.

En suivant ces meilleures pratiques et en effectuant des tests approfondis, vous pouvez optimiser votre DApp pour pousser le traitement des transactions parallèles de Sui à sa capacité maximale.

7
Commentaires
.
Benjamin XDV.
Jul 31 2025, 09:57

Le traitement parallèle de Sui est limité par desdépendances d'objet : les transactions touchant les mêmes objets sont sérialisées, tandis que les transactions indépendantes s'exécutent simultanément. La limite de débit théorique dépasse100 000 TPSpour les opérations non conflictuelles, mais les performances réelles dépendent du matériel du validateur et des conditions du réseau. sui-benchmarkPour tester les limites de votre DApp, utilisezblocs de transactions programmablespour regrouper les opérations ne se chevauchant pas et les comparer à l'aide d'outils. Concevez en fonction des points chauds de contention en divisant l'état fréquemment consulté en objets distincts (par exemple, des sous-comptes par utilisateur) afin de maximiser le parallélisme.

7
Commentaires
.
Alya.
Alya-14
Jul 30 2025, 17:42

Le traitement parallèle des transactions de Sui excelle lorsque les transactions s'effectuent sur desobjets indépendants. La limite théorique est élevée (plus de 100 000 TPS en laboratoire), mais le débit pratique dépend des facteurs suivants :

1.Contention d'objets : les transactions modifiant le même objet partagé sont sérialisées. 2.Complexité des blocs de transactions programmables (PTB) : Les PTB volumineux dotés de nombreuses commandes atteignent des limites de volume et de taille. 3.Limites d'horaires et d'événements : l'0x2::clockaccès et les émissions de l'événement sont limités.

Pour optimiser le parallélisme :

  • Concevez avecdes objets possédés précisés(par exemple, état par utilisateur).
  • Minimisez les objets partagés ; divisez les points d'accès.
  • Utiliser sui tx-blockset sui client validate-transaction-blocktester les limites du PTB.

Effectuez des tests sous charge à l'aide de sui-perfscripts personnalisés qui simulent des transactions simultanées ne se chevauchant pas. Surveillez les TransactionLockConflicterreurs : elles indiquent des goulots d'étranglement.

5
Commentaires
.
Evgeniy CRYPTOCOIN.
Jul 28 2025, 11:23

###Principales limites de l'exécution parallèle de Sui 1.Goulot d'étranglement lié à la dépendance aux objets

  • Les transactions touchant lemême objetsont sérialisées.
  • Débit maximal : dépend de la façon dont vous partitionnez vos données (évitez les objets partagés).

2.Limites de gaz par bloc de transaction

  • Limite de gaz du bloc par défaut :50 M—100 M(testnet/mainnet).
  • Chaque transaction consomme du gaz, ce qui limite le travail parallélisable total.

3.Débit du nœud RPC

  • RPC publics : ~2K-4K TPS (varie selon le fournisseur).
  • Nœuds auto-hébergés : plus de 10 000 TPS possibles avec des optimisations.

4.Contraintes relatives au processeur et à la mémoire

  • Les nœuds de validation parallélisent le travail entre les cœurs du processeur.
  • Les serveurs à 32 cœurs peuvent traiter plus de 50 000 TPS**dans des cas idéaux (aucun objet partagé).

###Comment tester les limites de votre DApp ####1. Comparez avec Localnet

# Spin up a high-performance localnet  
sui-test-validator --num-validators 4 --gas-limit 100000000

####2. Générer des charges de travail parallèles Utilisez le SDK TS pour simuler le trafic :

// Flood the network with independent transactions  
const txs = await Promise.all(  
  Array(1000).fill(0).map(() =>  
    client.transactionBlock({  
      transactions: [/* independent object ops */],  
      gasBudget: 50_000_000  
    })  
  )  
);
4
Commentaires
.
Thorfin.
Jul 30 2025, 06:49

Le traitement parallèle des transactions par Sui est limité principalement par :

Modèle de propriété des objets : seules les transactions touchant des objets disjoints (indépendants) peuvent être exécutées en parallèle.

Conflit d'objets actifs : si de nombreuses transactions accèdent au même objet, elles se sérialisent et deviennent un goulot d'étranglement.

Matériel de validation : le débit varie en fonction des cœurs du processeur et de la capacité d'E/S.

Latence du gaz et du réseau : la facturation du gaz et la surcharge consensuelle peuvent limiter le parallélisme à très haut volume.

Comment tester :

Créez de nombreuses transactions mettant à jour des objets uniques détenus (par exemple, des compteurs indépendants).

Comparez le débit à l'aide d'outils tels que Sui Benchmarker.

Observez la baisse des performances lors de l'introduction de l'accès partagé aux objets (par exemple, un classement unique).

Conseil : Concevez votre application de manière à minimiser les mises à jour des objets partagés et à maximiser les écritures d'objets disjoints pour un parallélisme complet.

3
Commentaires
.
Bekky.
Bekky1762
Jul 31 2025, 12:33

Pousser le traitement parallèle de Sui à ses limites

Le moteur d'exécution parallèle de Sui est révolutionnaire pour le débit de la blockchain, mais présente des limites pratiques que vous devez comprendre lors de la conception de dApps hautes performances.

Principales limites du parallélisme

1.Les blocages liés à la contention d'objets

-Limite rigide : ~100 000 TPS (théorique) -Limite pratique : 50 à 80 000 TPS pour les charges de travail réelles -Seuil de contention : les performances se dégradent lorsque > 5 % des transactions concernent des objets partagés

###2. Limites matérielles par validateur | Ressource | Exigence de base | Objectif de haute performance | | --------------------------------------| ------------------| | Processeur | 16 cœurs | Plus de 32 cœurs | | RAM | 32 GO | 64-128 GO | | Stockage NVMe | 1 To | 2 à 4 To | | Réseau | 1 Gbit/s | 10 Gbit/s |

Testez vos limites

Méthodologie d'analyse comparative

1.Isoler les variables :

  # Test owned object throughput
  sui-benchmark --workload owned-objects --tx-count 100000

  # Test shared object throughput
  sui-benchmark --workload shared-objects --tx-count 100000 --shared-obj-ratio 0.05

2.Test d'échelle de contention :

  for ratio in 0.01 0.05 0.1 0.2; do
    sui-benchmark --shared-obj-ratio $ratio --tx-count 100000
  done

Modèles d'optimisation dans le monde réel

1. Partage d'objets

struct HighTrafficPool has key {
    shards: vector<PoolShard>
}

struct PoolShard has key {
    id: UID,
    // Shard-specific state
    balances: Table<address, u64>
}

2. Traitement basé sur l'époque

struct TradingEpoch has key {
    id: UID,
    current: EpochData,  // Read-only after creation
    next: EpochData      // Mutable accumulation
}

3. Traitement par lots à écriture anticipée

struct PendingUpdates has key {
    id: UID,
    updates: vector<Update>
}

// Process batch every N blocks
public entry fun flush_updates(
    batch: &mut PendingUpdates,
    state: &mut GlobalState
) {
    // Apply all updates atomically
}

Objectifs de débit pratiques

| Type de charge de travail | TPS attendu | Stratégie d'optimisation | | -------------------------------------| -----------------------| | Objets détenus uniquement | 50-100 000 | Minimiser les dépendances | | Objets les plus souvent possédés | 20-50K | Partagez intelligemment | | Charge de travail équilibrée | 10-20 K | Ecritures partagées par lots | | Objet partagé dominant | 5-10K | Utiliser des époques/files d'attente |

Surveillance de la contention

1.Métriques intégrées :

  curl http://localhost:9184/metrics | grep "sui_execution_engine"

2.Indicateurs clés à surveiller :

  • sui_execution_engine_conflicted_transactions
  • sui_execution_engine_parallel_degree
  • sui_transaction_manager_shared_lock_wait_time

Dépasser les limites par défaut

  1. validator.yamlConfiguration du validateur personnalisé() :
  execution:
    max_parallel_tasks: 1024  # Default: 256
    shared_object_cache_size: "2GB"  # Default: 500MB

2.Optimisations du code de déplacement :

  // BAD: Serial shared access
  public entry fun update_serial(obj: &mut SharedObj) { ... }
  
  // GOOD: Partitioned access
  public entry fun update_partitioned(
      obj: &mut SharedObj,
      partition_key: u64
  ) { ... }

Liste de contrôle pour les tests de résistance

  1. Commencez par des transactions d'objets détenus à 100 %
  2. Augmentez progressivement le ratio d'objets partagés
  3. Surveiller l'utilisation des ressources du validateur
  4. Identifiez les points chauds de contention
  5. Mettre en œuvre le partitionnement/le partitionnement
  6. Répétez jusqu'à ce que la cible TPS soit atteinte

N'oubliez pas : les performances parallèles de Sui évoluent avec :

  • Nombre de trajectoires d'objets indépendantes
  • Ressources matérielles disponibles
  • Gestion intelligente des contentions dans votre code Move
3
Commentaires
.
BigSneh.
Jul 28 2025, 04:28

Le traitement des transactions en parallèle de Sui est rendu possible par son modèle de données centré sur l'objet, qui permet l'exécution simultanée de transactions ne se chevauchant pas. Cependant, les limites pratiques découlent de la contention des ressources, des objets partagés, du débit du validateur et des dépendances entre les transactions. Les objets partagés sérialisent l'exécution. Il est donc essentiel de minimiser leur utilisation pour optimiser le parallélisme. Le débit est également limité par la capacité des validateurs, en particulier en cas de charge d'écriture élevée ou de calculs complexes.

Pour tester ces limites, utilisez des outils tels que sui bench ou des charges de travail personnalisées qui simulent un volume de transactions réel avec différents modèles de propriété des objets. Suivez des indicateurs tels que la latence, la consommation de gaz, les transactions échouées et l'utilisation du processeur et de la mémoire du validateur. Effectuez une analyse comparative sur des clusters Testnet ou Localnet présentant une charge accrue pour identifier les goulots d'étranglement. Utilisez les compteurs et les événements dans Move pour surveiller l'état interne et enregistrer des données au niveau de l'application et du réseau. Structurer les transactions autour d'objets détenus exclusivement, éviter les dépendances inutiles et regrouper les écritures par lots constituent les meilleures pratiques pour évoluer efficacement.

2
Commentaires
.
290697tz.
Jul 28 2025, 04:29

Le traitement des transactions en parallèle de Sui repose sur son modèle de données centré sur l'objet, qui permet aux transactions touchant des ensembles disjoints d'objets de s'exécuter en parallèle. La principale limite est le nombre de transactions pouvant être exécutées simultanément sans conflit d'objets, ce qui signifie que deux transactions ne doivent pas lire ou écrire le même objet. Si plusieurs transactions accèdent à des objets partagés ou superposés, elles sont sérialisées, ce qui réduit le parallélisme. Par conséquent, il est essentiel de structurer votre DApp de manière à minimiser l'utilisation des objets partagés pour optimiser le débit.

Un autre facteur concerne les performances du matériel complet du nœud ou du validateur, comme les cœurs du processeur, les E/S du disque et la mémoire, qui ont une incidence directe sur le nombre de transactions pouvant être traitées en parallèle. Le planificateur de transactions de Sui utilise des graphes de dépendance pour optimiser l'ordre d'exécution, mais une contention excessive ou une mauvaise conception des objets limiteront l'efficacité. Pour les tests, vous pouvez utiliser des outils tels que sui-benchmark ou créer un moteur PTB (Programmable Transaction Block) personnalisé pour simuler des conditions de charge élevée avec différents modèles d'accès aux objets. Suivez les indicateurs tels que le TPS, la latence et la contention des blocages d'objets pour identifier les goulots d'étranglement. Vous devez également effectuer des tests avec des objets partagés et des champs dynamiques pour voir leur impact sur le débit dans le cadre d'une utilisation réaliste.

2
Commentaires
.
Owen.
Owen4662
Jul 30 2025, 03:00

Le traitement des transactions parallèles de Sui est limité par la propriété et les dépendances des objets. Les transactions qui opèrent sur des objets indépendants peuvent être traitées en parallèle, ce qui maximise le débit. Cependant, les conflits sur les objets partagés sérialisent l'exécution, créant ainsi des goulots d'étranglement. Les objets possédés permettent un parallélisme total, tandis que les objets partagés nécessitent une coordination consensuelle, ce qui réduit la vitesse. La limite théorique dépend des conditions du réseau, de la structure du graphe d'objets et de la diversité des transactions. sui_executeTransactionBlockPour tester les performances, utilisez le SDK Sui pour simuler des charges de travail présentant des conflits d'objets variables et mesurer le débit via le RPC. Analysez les résultats selon différents modèles de charge pour identifier les limites d'échelle.

2
Commentaires
.
frogit.
Aug 11 2025, 04:19

Le traitement des transactions en parallèle de Sui est rendu possible par son modèle de données centré sur l'objet, qui permet l'exécution simultanée de transactions ne se chevauchant pas. Cependant, les limites pratiques découlent de la contention des ressources, des objets partagés, du débit du validateur et des dépendances entre les transactions. Les objets partagés sérialisent l'exécution. Il est donc essentiel de minimiser leur utilisation pour optimiser le parallélisme. Le débit est également limité par la capacité des validateurs, en particulier en cas de charge d'écriture élevée ou de calculs complexes.

Pour tester ces limites, utilisez des outils tels que sui bench ou des charges de travail personnalisées qui simulent un volume de transactions réel avec différents modèles de propriété des objets. Suivez des indicateurs tels que la latence, la consommation de gaz, les transactions échouées et l'utilisation du processeur et de la mémoire du validateur. Effectuez une analyse comparative sur des clusters Testnet ou Localnet présentant une charge accrue pour identifier les goulots d'étranglement. Utilisez les compteurs et les événements dans Move pour surveiller l'état interne et enregistrer des données au niveau de l'application et du réseau. Structurer les transactions autour d'objets détenus exclusivement, éviter les dépendances inutiles et regrouper les écritures par lots constituent les meilleures pratiques pour évoluer efficacement.

0
Commentaires
.

Connaissez-vous la réponse ?

Veuillez vous connecter et la partager.