Sui.

Допис

Діліться своїми знаннями.

SuiLover.
Jul 28, 2025
Питання та відповіді експертів

Які обмеження паралельної обробки транзакцій Sui?

  • Я розробляю високопродуктивний DApp і хочу максимально підняти паралельну обробку Sui. Які практичні обмеження і як їх перевірити? *
  • Sui
  • Move
1
14
Поділитися
Коментарі
.

Відповіді

14
Ashford.
Jul 31 2025, 07:42

Sui призначений для підтримкивисокої пропускної здатностітапаралельної обробки транзакцій, використовуючимодель горизонтального масштабування, яка дозволяє обробляти транзакції одночасно без блокування. Однак існують певні обмеження та міркування, коли справа доходить до підвищення максимальної потужності паралельної обробки транзакцій Sui.

Ключові фактори, що впливають на паралельну обробку транзакцій у Су

1.Збіжність на рівні об'єкта

*Sui використовує об'єктно-орієнтовану модель, де кожен об'єкт (наприклад, монета, стан смарт-контракту) обробляється незалежно. *Паралелізація відбувається на об'єктах, які не конфліктують (тобто різні об'єкти можуть оброблятися одночасно, якщо жодна транзакція не отримує доступу до одного об'єкта).

  • Якщо кілька транзакцій намагаються змінити один і той самий об'єкт або ресурс,транзакції будуть конфліктні, і одночасно оброблятиметься лише одна. *Практична обмеження: Чим більше унікальних об'єктів залучено до транзакції (тобто чим більше незалежних змін стану), тим більшого паралелізму може досягти Суй. Однак об'єкти, до яких доступ або які мутуються кількома транзакціями, обмежують пропускну здатність цих транзакцій.

2.Конфлікти та конфлікти транзакції

*Конфлікти транзакційтрапляються, коли кілька транзакцій намагаються отримати доступ до одного об'єкта або ресурсів одночасно. Суй вирішує ці конфлікти, відкидаючи одну з транзакцій, і це обмежує паралелізм.

  • Щоб максимізувати паралельність, вам потрібно спроектувати свій DApp, щобмінімізувати суперечність, гарантуючи, що різні транзакції діють на різних об'єктах. *Практичне обмеження: Якщо багато користувачів взаємодіють з одними і тими ж об'єктами (наприклад, на спільному ресурсі, як-от контракт для голосування або пул кредитування), система може зіткнутися з суперечками, що зменшує пропускну здатність.

3.Типи транзакцій та ефективність газу

  • Складність транзакції впливає на те, скількиобчислень і газувона потребує. Складні транзакції (наприклад, ті, що передбачають виконання смарт-контрактів) можуть бути менш ефективними та більш ресурсомісткими, що зменшує паралельність. *Практичний ліміт: транзакції з високими вимогами до газу або обчислень зменшать кількість паралельних транзакцій, які можуть бути оброблені протягом одного періоду часу.

4.Валідатор та пропускна здатність мережі

  • Кількість валідаторів**та їх здатність обробляти транзакції є критичним фактором. Оскільки все більше валідаторів приєднується до мережі, Sui може масштабуватися горизонтально, але індивідуальна потужність обробки кожного валідатора може стати вузьким місцем, якщо не керувати належним чином. *пропускна здатність мережітакож впливає на те, як швидко транзакції можна поширювати між валідаторами. Висока завантаженість мережі або недостатня пропускна здатність можуть обмежити пропускну здатність транзакцій. *Практичне обмеження: пропускна здатність вашого DApp буде обмежена здатністю валідаторів обробляти транзакції, і це залежить від їх обладнання, пропускної здатності та конфігурації.

5.Шардінг та поділ державу

  • Sui покладається наподілтаподіл станудля забезпечення паралельної обробки. Кожен об'єкт присвоюється певному осколку, і транзакції, що впливають на один і той же оскол, потрібно обробляти послідовно, тоді як транзакції, що включають різні фрагменти, можуть оброблятися паралельно. *Практична межа: Чим більш детальний шардінг (тобто чим менші об'єкти або групи об'єктів), тим більшого паралелізму ви можете досягти. Однак надмірне розділення може призвести до збільшення накладних витрат та складності управління станом.

Тестування лімітів паралельних транзакцій

Щоб зрозумітипрактичні обмеженняпаралельної обробки транзакцій Sui для вашого конкретного DApp, вам слід протестувати його за різних умов. Ось як ви можете зробити це:

1.Бенчмаркінг пропускної здатності та затримки

  • Використовуйте інструменти для порівнянняпропускної здатності(транзакції в секунду) тазатримність(час на транзакцію) вашого DApp під різними навантаженнями.
  • Почніть з невеликих транзакцій з низьким рівнем конфлікту**і поступово збільшуйте кількість транзакцій або їх складність, щоб спостерігати, як змінюється пропускна здатність та затримка.

Ви можете використатиінструменти CLI Suiдля імітації транзакцій та моніторингу роботи системи під навантаженням.

2.Тест з різними сумішами транзакцій

*Незалежні транзакції: Тестуйте транзакції, які взаємодіють з різними об'єктами і не конфліктують. Це допоможе вам виміряти здатність Sui обробляти паралельну обробку без суперечок. *Транзакції з інтенсивними конфліктами: введення транзакцій, які мають доступ до тих самих об'єктів (наприклад, смарт-контракт, який передбачає спільний стан). Це допоможе вам виміряти, як суперечка впливає на пропускну здатність.

Тестуючи за допомогоюрізних сумішей транзакцій, ви можете визначити точку, коли паралельна обробка транзакцій починає погіршуватися через конфлікти або інші вузькі місця.

3.Імітуйте реальне навантаження

  • Використовуйтерамки тестування навантаження(наприклад, JMeter, Artillery або користувальницькі скрипти), щоб імітуватиреальні навантаженняна вашому DApp.
  • Перевірте, як поводиться ваш DApp, коли кілька користувачів взаємодіють одночасно з різними частинами штату.
  • Це може дати вам відчуттямаксимальної пропускної здатності, яку може досягти ваш DApp, зберігаючи при цьомунизьку затримкутависокий паралелізм.

4.Моніторинг продуктивності валідатора

  • ВикористовуйтеІнформаційну панель Sui Validatorабо API, щоб контролювати, як ваш вузол та мережеві валідатори обробляють навантаження.
  • Перевірте такі показники, яккоефіцієнт прийняття транзакцій,час обробки блоктавикористання газу за транзакцію.
  • Це може дати вам уявлення про те, наскільки добре валідатори масштабуються**і чи впливають проблеми з мережею (наприклад, низька ємність валідатора) на пропускну здатність.

Найкращі практики максимізації паралелізму

1.Дизайн для низької контенції:

  • Переконайтеся, що транзакції у вашому DApp максимально націлені нанезалежні об'єкти. Наприклад, якщо ви будуєтеігрову арену, тримайте окремі стани гравців або бойові стани ізольованими один від одного, щоб максимізувати паралельність.

2.Використовуйте розділення та розділення стану:

  • Розбийте великі об'єкти на менші незалежні осколки або розділи. Наприклад, якщо ви створюєтевідстежувач голосів DAO, кожен голос можна розглядати як окремий об'єкт, щоб уникнути суперечок між виборцями.

3.Мінімізуйте споживання газу:

  • Переконайтеся, що ваші транзакції є газоефективністю**. Надмірно складні операції, які вимагають великих обчислень або газу, можуть зменшити кількість транзакцій, які система може обробляти одночасно.

4.Моніторинг здоров'я мережі та валідатора:

  • Переконайтеся, що мережа валідаторів добре розподілена та працює добре під навантаженням. Збільшення кількості валідаторів та оптимізація їх продуктивності можуть допомогти покращитигоризонтальну масштабованістьта зменшити затримки перевірки транзакцій.

Висновок

Хоча паралельна обробка транзакцій Sui розроблена для максимальної пропускної здатності, на її продуктивність впливають такі фактори, якконтентність об'єктів,використання газу,складність транзакційтапропускна здатність мережі. Щоб максимізувати паралелізм:

*Мінімізуйте суперечність, розробивши DApp для роботи над незалежними об'єктами. ***Порівняйте та протестуйте свій DApp за сценаріями високого навантаження, щоб визначити вузькі місця продуктивності.

  • Переконайтеся, щовалідаторів та ємності мережідостатньо для вирішення ваших вимог до пропускної здатності.

Дотримуючись цих найкращих практик та проводячи ретельне тестування, ви можете оптимізувати свій DApp, щоб збільшити паралельну обробку транзакцій Sui до максимальної потужності.

7
Коментарі
.
Benjamin XDV.
Jul 31 2025, 09:57

Паралельна обробка Sui обмеженазалежностями об'єктів- транзакції, що торкаються одних і тих самих об'єктів, серіалізуються, тоді як незалежні виконуються одночасно. Теоретична межа пропускної здатності перевищує100K TPSдля неконфліктних операцій, але реальна продуктивність залежить від апаратного забезпечення валідатора та умов мережі. sui-benchmarkЩоб перевірити ліміти DApp, використовуйтепрограмовані блоки транзакційдля пакетних операцій, що не перекриваються, та порівняння за допомогою інструментів. Розробка навколо гарячих точок конфлікту шляхом розділення часто доступних станів на окремі об'єкти (наприклад, підоблікові записи для кожного користувача), щоб максимізувати паралельність.

7
Коментарі
.
Alya.
Alya-14
Jul 30 2025, 17:42

Паралельна обробка транзакцій Sui переважає, коли транзакції діють нанезалежних об'єктах. Теоретична межа висока (100K+TPS в лабораторних умовах), але практична пропускна здатність залежить від:

1.Вміст об'єкта: транзакції, що змінюють один і той самий спільний об'єкт, серіалізуються. 2.Складність програмованого блоку транзакцій (PTB): Великі PTB з багатьма командами досягають обмежень газу та розміру. 3.Ліміти годин та події: 0x2::clockдоступ та викиди подій обмежені швидкістю.

Щоб максимізувати паралелізм:

  • Дизайн іздрібнозернистими об'єктами(наприклад, стан для кожного користувача).
  • Мінімізувати спільні об'єкти; розділити гарячі точки.
  • Використовуйте sui tx-blocksта sui client validate-transaction-blockперевіряйте межі PTB.

Тестування під навантаженням за допомогою спеціальних sui-perfскриптів, які імітують одночасні транзакції, що не перекриваються. Моніторинг TransactionLockConflictпомилок - вони вказують на вузькі місця.

5
Коментарі
.
Evgeniy CRYPTOCOIN.
Jul 28 2025, 11:23

###Ключові межі паралельного виконання Суї 1.Вузьке місце залежності від об'єкта

  • Транзакції, що стосуютьсяодного об'єкта, серіалізуються.
    • Максимальна пропускна здатність*: Залежить від того, наскільки добре ви розділите свої дані (уникайте спільних об'єктів).

2.Ліміти газу на блок транзакції

  • Обмеження газу блоку за замовчуванням:50M—100M(testnet/mainnet).
  • Кожна транзакція споживає газ, обмежуючи загальну паралелізовану роботу.

3.Пропускна здатність вузла RPC

  • Загальнодоступні RPC: ~ 2K-4K TPS (залежить від постачальника).
  • Самостійно розміщені вузли: 10K+TPS можливий з оптимізаціями.

4.Обмеження процесора/пам'яті

  • Вузли валідатора паралелізують роботу між ядрами процесора.
  • 32-ядерні сервери можуть обробляти50K+ TPSв ідеальних випадках (без спільних об'єктів).

###Як перевірити обмеження DApp ####1. Порівняння за допомогою локальної мережі

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

####2. Створюйте паралельні робочі навантаження Використовуйте TS SDK для імітації трафіку:

// 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
Коментарі
.
Thorfin.
Jul 30 2025, 06:49

Паралельна обробка транзакцій Sui обмежена головним чином:

Модель власності на об'єкт: паралельно можна виконувати лише транзакції, що стосуються роз'єднаних (незалежних) об'єктів.

Контроль гарячих об'єктів: Якщо багато транзакцій отримують доступ до одного об'єкта, вони серіалізуються та стають вузьким місцем.

Апаратне забезпечення валідатора: пропускна здатність масштабується з ядрами процесора та ємністю вводу

Затримка газу + мережі: Вимірювання газу та консенсусні накладні витрати можуть обмежити паралелізм при дуже великому обсязі.

Як провести тест:

Створюйте багато транзакцій, оновлюючи унікальні об'єкти (наприклад, незалежні лічильники).

Порівняльна пропускна здатність за допомогою таких інструментів, як Sui Benchmarker.

Спостерігайте за падінням продуктивності при введенні доступу до спільних об'єктів (наприклад, єдина таблиця лідерів).

Порада. Створюйте програму так, щоб мінімізувати оновлення спільних об'єктів та максимізувати записи роз'єднаних об'єктів для повного паралелізму.

3
Коментарі
.
Bekky.
Bekky1762
Jul 31 2025, 12:33

Підвищення паралельної обробки Sui до межі

Двигун паралельного виконання Sui є революційним для пропускної зд��тності блокчейну, але має практичні обмеження, які слід розуміти при розробці високопродуктивних DApps.

Ключові межі паралелізму

1.Вузькі місця боротьби з об'єктами

-Жорсткий ліміт: ~ 100K TPS (теоретичний) -Практичне обмеження: 50-80K TPS для реальних робочих навантажень -Поріг суперечки: продуктивність знижується, коли > 5% транзакцій торкаються спільних об'єктів

2. Обмеження обладнання для кожного валідатора

| Ресурс | Базова вимога | Ціль високих показників | | --------------------------------------| ------------------| | Процесор | 16 ядер | 32+ ядер | | ОПЕРАТИВНА ПАМ'ЯТЬ | 32 ГБ | 64-128 ГБ | | Зберігання NVMe | 1 ТБ | 2-4 ТБ | | Мережа | 1 Гбіт/с | 10 Гбіт/с |

Перевірка своїх обмежень

Методологія бенчмаркінгу

1.Ізолювати змінні:

  # 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.Тест масштабування суперечки:

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

Шаблони оптимізації реального світу

1. Об'єднання об'єктів

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

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

2. Обробка на основі епох

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

3. Пакетування вперед записування

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
}

Практичні цілі пропускної здатності

| Тип навантаження | Очікуваний TPS | Стратегія оптимізації | | -------------------------------------| -----------------------| | Чисті об'єкти, що належать | 50-100K | Мінімізувати залежності | | Об'єкти, що переважно належать | 20-50K | Ощеплюйте розумно | | Збалансоване навантаження | 10-20K | Пакетні спільні записи | | Об'єкт спільного використання домінантний | 5-10K | Використовувати епохи/черги |

Моніторинг суперечки

1.Вбудовані метрики:

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

2.Ключові показники для перегляду:

  • sui_execution_engine_conflicted_transactions
  • sui_execution_engine_parallel_degree
  • sui_transaction_manager_shared_lock_wait_time

Висунення обмежень за замовчуванням

  1. validator.yamlНалаштування користувацького валідатора():
  execution:
    max_parallel_tasks: 1024  # Default: 256
    shared_object_cache_size: "2GB"  # Default: 500MB

2.Оптимізація переміщення коду:

  // 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
  ) { ... }

Контрольний список стрес-тестування

  1. Почніть з транзакцій об'єкта, що належать 100%
  2. Поступово збільшуйте співвідношення спільних об'єктів
  3. Моніторинг використання ресурсів валідатора
  4. Визначте гарячі точки суперечки
  5. Реалізуйте поділ/розділення
  6. Повторюйте, поки не досягнуто цільового TPS

Пам'ятайте: паралельна продуктивність Sui масштабується з:

  • Кількість незалежних шляхів об'єкта
  • Доступні апаратні ресурси
  • Розумне управління суперечками у вашому коді Move
3
Коментарі
.
BigSneh.
Jul 28 2025, 04:28

Паралельна обробка транзакцій Sui уможливлюється її об'єктно-центричною моделлю даних, яка дозволяє здійснювати транзакції, що не перекриваються, одночасно. Однак практичні обмеження виникають через суперечність ресурсів, спільних об'єктів, пропускної здатності валідатора та залежностей транзакцій. Спільні об'єкти серіалізують виконання, тому мінімізація їх використання є ключем до максимізації паралелізму. Пропускна здатність також пов'язана з потужністю валідаторів, особливо при високому навантаженні на запис або складних обчисленнях.

Щоб перевірити ці обмеження, використовуйте такі інструменти, як sui bench або власні робочі навантаження, які імітують реальний обсяг транзакцій з різними моделями власності на об'єкти. Відстежуйте такі показники, як затримка, використання газу, невдалі транзакції та використання процесора/пам'яті валідатора. Бенчмарк на кластерах Testnet або Localnet з підвищеним навантаженням для виявлення вузьких місць. Використовуйте лічильники та події в Move для моніторингу внутрішнього стану та журналу як на рівні програми, так і на рівні мережі. Структурування транзакцій навколо ексклюзивних об'єктів, уникнення непотрібних залежностей та пакетування записів є найкращими практиками для ефективного масштабування.

2
Коментарі
.
290697tz.
Jul 28 2025, 04:29

Паралельна обробка транзакцій Sui побудована навколо її об'єктно-центричної моделі даних, яка дозволяє транзакціям, які торкаються роз'єднаних наборів об'єктів, виконувати паралельно. Основним лімітом є кількість транзакцій, які можуть бути виконані одночасно без суперечки об'єкта, тобто дві транзакції не повинні читати або записувати один і той же об'єкт. Якщо кілька транзакцій отримують доступ до спільних або перекриваються об'єктів, вони серіалізуються, зменшуючи паралельність. Тому структурування DApp для мінімізації використання спільних об'єктів має вирішальне значення для максимальної пропускної здатності.

Іншим фактором є продуктивність повного вузла або обладнання валідатора, такого як ядра процесора, дисковий вводи/виведення та пам'ять, які безпосередньо впливають на те, скільки транзакцій можна обробити паралельно. Планувальник транзакцій у Sui використовує графіки залежностей для оптимізації порядку виконання, але надмірна суперечність або поганий дизайн об'єктів обмежують ефективність. Для тестування ви можете використовувати такі інструменти, як sui-benchmark або створити спеціальний запуск PTB (Programmable Transaction Block) для імітації умов високого навантаження з різними шаблонами доступу до об'єктів. Відстежуйте такі показники, як TPS, затримка та суперечність блокування об'єктів, щоб знайти вузькі місця. Ви також повинні перевірити спільні об'єкти та динамічні поля, щоб побачити, як вони впливають на пропускну здатність при реалістичному використанні.

2
Коментарі
.
Owen.
Owen4662
Jul 30 2025, 03:00

Паралельна обробка транзакцій Sui обмежена власністю об'єктів та залежностями. Транзакції, які діють на незалежних об'єктах, можуть оброблятися паралельно, максимізуючи пропускну здатність. Однак суперечка щодо спільних об'єктів серіалізує виконання, створюючи вузькі місця. Власні об'єкти забезпечують повний паралелізм, тоді як спільні об'єкти вимагають консенсусної координації, зменшуючи швидкість. Теоретична межа залежить від умов мережі, структури об'єктного графіка та різноманітності транзакцій. sui_executeTransactionBlockЩоб перевірити продуктивність, використовуйте SDK Sui для імітації робочих навантажень з різною суперечливістю об'єктів та вимірювання пропускної здатності за допомогою RPC. Аналізуйте результати за різними схемами навантаження, щоб визначити межі масштабування.

2
Коментарі
.
frogit.
Aug 11 2025, 04:19

Паралельна обробка транзакцій Sui уможливлюється її об'єктно-центричною моделлю даних, яка дозволяє здійснювати транзакції, що не перекриваються, одночасно. Однак практичні обмеження виникають через суперечність ресурсів, спільних об'єктів, пропускної здатності валідатора та залежностей транзакцій. Спільні об'єкти серіалізують виконання, тому мінімізація їх використання є ключем до максимізації паралелізму. Пропускна здатність також пов'язана з потужністю валідаторів, особливо при високому навантаженні на запис або складних обчисленнях.

Щоб перевірити ці обмеження, використовуйте такі інструменти, як sui bench або власні робочі навантаження, які імітують реальний обсяг транзакцій з різними моделями власності на об'єкти. Відстежуйте такі показники, як затримка, використання газу, невдалі транзакції та використання процесора/пам'яті валідатора. Бенчмарк на кластерах Testnet або Localnet з підвищеним навантаженням для виявлення вузьких місць. Використовуйте лічильники та події в Move для моніторингу внутрішнього стану та журналу як на рівні програми, так і на рівні мережі. Структурування транзакцій навколо ексклюзивних об'єктів, уникнення непотрібних залежностей та пакетування записів є найкращими практиками для ефективного масштабування.

0
Коментарі
.

Ви знаєте відповідь?

Будь ласка, увійдіть та поділіться нею.