Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Elastic Scaling #1829

Open
18 of 23 tasks
eskimor opened this issue Oct 9, 2023 · 6 comments
Open
18 of 23 tasks

Elastic Scaling #1829

eskimor opened this issue Oct 9, 2023 · 6 comments

Comments

@eskimor
Copy link
Member

eskimor commented Oct 9, 2023

Eventually parachains should be able to occupy more than one core at once in a single block, which allows them to scale beyond a single core if their collators are powerful enough.

We decided to split up the work on elastic scaling into two/three phases. First phase is make it work for parachains which trust their collator set and don't share collations with untrusted machines. With this restriction it is possible to launch elastic/fixed factor scaling without any changes to the candidate receipt. Phase 2 will then actually make changes to the candidate receipt in order for the collator set to be untrusted again. (We put the core index in the candidate commitments, so it is not possible to push the same collation to multiple backing groups). Also phase 2 or potentially phase 3, we actually implement everything that is necessary on the cumulus side for elastic/on-demand scaling vs. fixed factor, where we just buy n cores all the time.

This ticket is about phase 1 and entails the following tasks:

Tasks

  1. skunert
  2. ordian
  3. T8-polkadot
  4. alindima
  5. sandreim
  6. R0-silent T8-polkadot
  7. R0-silent T10-tests T8-polkadot
  8. I5-enhancement T16-async_backing T8-polkadot
    sandreim
  9. T4-runtime_API
    sandreim
  10. T4-runtime_API T8-polkadot
  11. alindima
  12. alindima
  13. alindima
  14. I5-enhancement T9-cumulus
  15. T0-node T8-polkadot
    alindima
  16. I5-enhancement T8-polkadot
    alindima
  17. alindima
  18. tdimitrov
  19. T9-cumulus
  20. T11-documentation
    alindima
  21. I2-bug I9-optimisation T9-cumulus
@Polkadot-Forum
Copy link

This issue has been mentioned on Polkadot Forum. There might be relevant details there:

https://forum.polkadot.network/t/scaling-a-polkadot-evm-parachain/4319/2

@eskimor
Copy link
Member Author

eskimor commented Dec 28, 2023

Get core index into the candidate receipt, also useful here.

@eskimor
Copy link
Member Author

eskimor commented Jan 19, 2024

#2984

@bkchr
Copy link
Member

bkchr commented Jan 30, 2024

collator protocol: Add an additional (backwards compatibility) advertise collation message, which triggeres a different collation fetch request (requesting also the head data of the parent) -> Make use of that head data in candidate validation.

What does that mean?

@alindima
Copy link
Contributor

collator protocol: Add an additional (backwards compatibility) advertise collation message, which triggeres a different collation fetch request (requesting also the head data of the parent) -> Make use of that head data in candidate validation.

What does that mean?

Assuming we have two validator groups, two cores for a parachain and we want to back two candidates in the same relay chain block, the second group needs to know the parent head data (which is the output of validation of the first candidate). Considering that candidate A hasn't yet been backed, the only source for this information on relay nodes would be the prospective-parachains subsystem (which records this data after getting a Seconded statement).

This latency of transmitting the seconded statement will partly prevent parallel execution of the two candidate validations.
We can fix this by passing in the head data in the collation fetching response (it only contains the hash for now).

@Polkadot-Forum
Copy link

This issue has been mentioned on Polkadot Forum. There might be relevant details there:

https://forum.polkadot.network/t/parity-tech-update-for-february/6630/1

serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Mar 26, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Mar 27, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 8, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 9, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 10, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
serban300 pushed a commit to serban300/polkadot-sdk that referenced this issue Apr 10, 2024
… pallet (paritytech#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
bkchr pushed a commit that referenced this issue Apr 10, 2024
… pallet (#1829)

* use specific error for case when para head is missing from the bridge pallet

* fix match to support both error types
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Status: To do
Development

No branches or pull requests

4 participants