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

Selectively Leverage EOS VM OC #165

Closed
1 task done
bhazzard opened this issue May 30, 2023 · 3 comments
Closed
1 task done

Selectively Leverage EOS VM OC #165

bhazzard opened this issue May 30, 2023 · 3 comments

Comments

@bhazzard
Copy link
Collaborator

bhazzard commented May 30, 2023

Short Description

In order to enhance the performance of EOS and EOS EVM, we are introducing the use of OC (Optimistic Concurrency) for the EOS VM. This initiative aims to improve the overall efficiency and scalability of the platform.

What

The primary goal of this initiative is to leverage OC for the EOS VM by implementing an Auto OC Mode as the default setting. This new mode, eos-vm-oc-enable=auto, will be introduced to enhance performance. Additionally, we will determine when to apply OC or use the baseline mode based on different contexts, such as building blocks, applying blocks, executing transactions from HTTP or P2P, and various transaction types.

Why

By utilizing OC, we can significantly boost the performance of EOS and EOS EVM. With the Auto OC Mode as the default, the system will automatically apply OC when appropriate, optimizing the execution of transactions and improving overall throughput. The introduction of OC for specific contexts, such as building blocks and speculative transaction executions, further enhances the efficiency of the platform. Moreover, we will evaluate and potentially increase subjective limits for contracts that leverage OC

Requirements

Auto OC Mode as default

Add a new Auto OC Mode option (eos-vm-oc-enable=auto), and apply it as the default.

Baseline / OC selection

In Auto OC Mode, leverage EOS VM OC, as follows:

Context OC?
Building block baseline, but OC if account is eosio.*
Applying block OC, or
if producer: baseline, but OC if account is eosio.*
Speculatively executing trx from HTTP baseline, but OC if account is eosio.*
Speculatively executing trx from p2p OC (but see 💡 below)
Compute transaction baseline, but OC if account is eosio.*
Read only transaction OC

Evaluate increasing subjective limits for OC contracts

We propose an analysis to determine the most appropriate subjective limits for contracts that leverage OC. Depending on the results of the analysis, subjective limits may be increased for eosio.* contracts.

Tasks

Preview Give feedback
  1. OCI actionable enhancement feature-request 👍 lgtm
    heifner
@bhazzard bhazzard added this to the Leap v5.0.0 Sep/Oct 2023 milestone May 30, 2023
@bhazzard bhazzard moved this to 📐 Solution Design in Product Backlog Jun 1, 2023
@bhazzard
Copy link
Collaborator Author

bhazzard commented Jun 1, 2023

Full proposal: #164

@bhazzard bhazzard moved this from 📐 Solution Design to Project Development 🏗 in Product Backlog Jun 8, 2023
@bhazzard bhazzard moved this from Project Development 🏗 to Work Breakdown in Product Backlog Jun 8, 2023
@heifner
Copy link
Member

heifner commented Jun 13, 2023

Propose: --eos-vm-oc-enable options auto (default), all, none. all corresponds to previous true and none corresponds to previous false.

@heifner
Copy link
Member

heifner commented Jun 20, 2023

Propose:

  • Add a --eos-vm-oc-enable option auto-no-p2p, which is auto minus OC for p2p trxs.
    Currently not using OC for p2p speculative execution.

@bhazzard bhazzard moved this from Work Breakdown to Project Development 🏗 in Product Backlog Jun 27, 2023
@bhazzard bhazzard moved this from Project Development 🏗 to User Acceptance in Product Backlog Jun 27, 2023
@bhazzard bhazzard closed this as completed Nov 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: User Acceptance
Development

No branches or pull requests

2 participants