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

Cherry-pick: limits & gas for dependencies #12166

Merged
merged 4 commits into from
Mar 5, 2024
Merged

Conversation

vgao1996
Copy link
Contributor

This introduces hard limits and gas metering for dependencies.

Copy link

trunk-io bot commented Feb 22, 2024

⏱️ 117h 36m total CI duration on this PR
Job Cumulative Duration Recent Runs
rust-unit-coverage 12h 35m 🟥
rust-unit-tests 9h 39m 🟥🟥🟥🟩🟥 (+7 more)
execution-performance / single-node-performance 8h 10m 🟥🟥🟩🟩🟩 (+10 more)
replay-mainnet / replay-verify (15) 5h 44m 🟩
replay-mainnet / replay-verify (16) 5h 37m 🟩
rust-smoke-tests 4h 33m 🟥🟩🟩🟩🟩 (+2 more)
replay-mainnet / replay-verify (12) 4h 21m 🟩
replay-testnet / replay-verify (16) 4h 12m 🟩
windows-build 3h 39m 🟩🟩🟩🟩🟩 (+8 more)
rust-smoke-coverage 3h 31m 🟩
replay-mainnet / replay-verify (11) 3h 21m 🟩
replay-testnet / replay-verify (9) 2h 47m 🟩
rust-move-tests 2h 30m 🟩🟩🟩🟩🟩 (+5 more)
rust-move-unit-coverage 2h 28m 🟩🟩🟩🟩🟩 (+5 more)
replay-testnet / replay-verify (10) 2h 22m 🟩
replay-mainnet / replay-verify (10) 2h 20m 🟩
rust-images / rust-all 2h 8m 🟩🟩🟩🟩🟩 (+6 more)
replay-testnet / replay-verify (8) 1h 58m 🟩
replay-mainnet / replay-verify (14) 1h 57m 🟩
replay-mainnet / replay-verify (3) 1h 46m 🟩
replay-testnet / replay-verify (15) 1h 37m 🟩
forge-e2e-test / forge 1h 35m 🟩🟩🟩🟩🟩 (+2 more)
forge-compat-test / forge 1h 31m 🟩🟩🟩🟩🟩 (+2 more)
replay-testnet / replay-verify (11) 1h 31m 🟩
replay-testnet / replay-verify (6) 1h 27m 🟩
run-tests-main-branch 1h 25m 🟥🟥🟥🟥🟥 (+7 more)
replay-testnet / replay-verify (0) 1h 16m 🟩
replay-mainnet / replay-verify (6) 1h 15m 🟩
replay-mainnet / replay-verify (9) 1h 13m 🟩
replay-testnet / replay-verify (12) 1h 12m 🟩
replay-testnet / replay-verify (2) 1h 11m 🟩
replay-testnet / replay-verify (13) 1h 7m 🟩
replay-mainnet / replay-verify (13) 1h 4m 🟩
replay-mainnet / replay-verify (7) 1h 3m 🟩
replay-testnet / replay-verify (4) 1h 3m 🟩
replay-mainnet / replay-verify (8) 1h 2m 🟩
replay-testnet / replay-verify (1) 59m 🟩
rust-lints 56m 🟥🟥🟥🟩🟩 (+7 more)
replay-testnet / replay-verify (14) 56m 🟩
replay-testnet / replay-verify (3) 51m 🟩
replay-testnet / replay-verify (5) 51m 🟩
cli-e2e-tests / run-cli-tests 47m 🟥🟩🟩🟩🟩 (+2 more)
replay-mainnet / replay-verify (4) 47m 🟩
replay-testnet / replay-verify (7) 46m 🟩
replay-mainnet / replay-verify (5) 44m 🟩
check 40m 🟩🟩🟩🟥🟩 (+8 more)
replay-mainnet / replay-verify (0) 38m 🟩
replay-mainnet / replay-verify (2) 37m 🟩
general-lints 27m 🟩🟩🟩🟩🟩 (+7 more)
check-dynamic-deps 24m 🟩🟩🟩🟩🟩 (+8 more)
replay-mainnet / replay-verify (1) 20m 🟩
indexer-grpc-e2e-tests / test-indexer-grpc-docker-compose 14m 🟩🟩🟥🟩🟩 (+2 more)
semgrep/ci 9m 🟩🟩🟩🟩🟩 (+8 more)
node-api-compatibility-tests / node-api-compatibility-tests 6m 🟩🟩🟩🟩🟩 (+2 more)
execution-performance / file_change_determinator 3m 🟩🟩🟩🟩🟩 (+7 more)
file_change_determinator 2m 🟩🟩🟩🟩🟩 (+7 more)
file_change_determinator 2m 🟩🟩🟩🟩🟩 (+6 more)
file_change_determinator 2m 🟩🟩🟩🟩🟩 (+7 more)
permission-check 1m 🟩🟩🟩🟩🟩 (+6 more)
permission-check 43s 🟩🟩🟩🟩🟩 (+8 more)
permission-check 39s 🟩🟩🟩🟩🟩 (+7 more)
permission-check 39s 🟩🟩🟩🟩🟩 (+8 more)
permission-check 39s 🟩🟩🟩🟩🟩 (+8 more)
determine-docker-build-metadata 27s 🟩🟩🟩🟩🟩 (+6 more)
determine-test-metadata 8s 🟩

🚨 5 jobs on the last run were significantly faster/slower than expected

Job Duration vs 7d avg Delta
rust-unit-coverage 12h 4h 23m +174%
run-tests-main-branch 6m 4m +66%
execution-performance / single-node-performance 30m 19m +56%
rust-move-unit-coverage 16m 23m -31%
windows-build 12m 20m -40%

settingsfeedbackdocs ⋅ learn more about trunk.io

@vgao1996 vgao1996 added CICD:run-execution-performance-test Run execution performance test CICD:run-execution-performance-full-test Run execution performance test (full version) labels Feb 22, 2024
@vgao1996 vgao1996 force-pushed the deps-gas branch 3 times, most recently from f71050f to d61b6bf Compare February 22, 2024 11:13
@vgao1996 vgao1996 added the CICD:run-e2e-tests when this label is present github actions will run all land-blocking e2e tests from the PR label Feb 22, 2024
Copy link

codecov bot commented Feb 22, 2024

Codecov Report

Attention: Patch coverage is 27.94830% with 446 lines in your changes are missing coverage. Please review.

Project coverage is 63.9%. Comparing base (a7a474f) to head (bc7cd44).
Report is 2 commits behind head on main.

Files Patch % Lines
aptos-move/aptos-vm/src/aptos_vm.rs 0.0% 124 Missing ⚠️
third_party/move/move-vm/runtime/src/loader/mod.rs 27.3% 101 Missing ⚠️
third_party/move/move-vm/runtime/src/session.rs 5.2% 72 Missing ⚠️
third_party/move/move-binary-format/src/access.rs 0.0% 30 Missing ⚠️
aptos-move/aptos-gas-meter/src/meter.rs 0.0% 20 Missing ⚠️
...aptos-gas-schedule/src/gas_schedule/transaction.rs 0.0% 20 Missing ⚠️
...party/move/move-vm/runtime/src/module_traversal.rs 0.0% 18 Missing ⚠️
aptos-move/aptos-gas-meter/src/algebra.rs 0.0% 16 Missing ⚠️
...d_party/move/move-vm/runtime/src/loader/modules.rs 44.4% 10 Missing ⚠️
..._party/move/move-vm/test-utils/src/gas_schedule.rs 0.0% 9 Missing ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff            @@
##             main   #12166     +/-   ##
=========================================
- Coverage    64.1%    63.9%   -0.2%     
=========================================
  Files         798      799      +1     
  Lines      177110   177623    +513     
=========================================
+ Hits       113534   113628     +94     
- Misses      63576    63995    +419     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

This comment has been minimized.

// the error semantics.
if self.gas_feature_version >= 14 {
// Charge old versions of the modules, in case of upgrades.
session.check_dependencies_and_charge_gas_non_recursive_optional(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea can the logic here cause double charge?

@vgao1996 vgao1996 enabled auto-merge (squash) March 5, 2024 00:48
@vgao1996 vgao1996 dismissed georgemitenkov’s stale review March 5, 2024 00:48

To unblock for landing. Already addressed all issues raised

This comment has been minimized.

This comment has been minimized.

Copy link
Contributor

github-actions bot commented Mar 5, 2024

✅ Forge suite compat success on aptos-node-v1.9.5 ==> bc7cd44d2a25961b667259702ef680ee5b812b3b

Compatibility test results for aptos-node-v1.9.5 ==> bc7cd44d2a25961b667259702ef680ee5b812b3b (PR)
1. Check liveness of validators at old version: aptos-node-v1.9.5
compatibility::simple-validator-upgrade::liveness-check : committed: 5158 txn/s, latency: 5104 ms, (p50: 5000 ms, p90: 7800 ms, p99: 15300 ms), latency samples: 226980
2. Upgrading first Validator to new version: bc7cd44d2a25961b667259702ef680ee5b812b3b
compatibility::simple-validator-upgrade::single-validator-upgrade : committed: 1711 txn/s, latency: 16894 ms, (p50: 18600 ms, p90: 21400 ms, p99: 22600 ms), latency samples: 82160
3. Upgrading rest of first batch to new version: bc7cd44d2a25961b667259702ef680ee5b812b3b
compatibility::simple-validator-upgrade::half-validator-upgrade : committed: 243 txn/s, submitted: 534 txn/s, expired: 290 txn/s, latency: 37106 ms, (p50: 45000 ms, p90: 58900 ms, p99: 69100 ms), latency samples: 20002
4. upgrading second batch to new version: bc7cd44d2a25961b667259702ef680ee5b812b3b
compatibility::simple-validator-upgrade::rest-validator-upgrade : committed: 2512 txn/s, latency: 12139 ms, (p50: 14000 ms, p90: 17100 ms, p99: 17600 ms), latency samples: 113040
5. check swarm health
Compatibility test for aptos-node-v1.9.5 ==> bc7cd44d2a25961b667259702ef680ee5b812b3b passed
Test Ok

Copy link
Contributor

github-actions bot commented Mar 5, 2024

✅ Forge suite realistic_env_max_load success on bc7cd44d2a25961b667259702ef680ee5b812b3b

two traffics test: inner traffic : committed: 7808 txn/s, latency: 5021 ms, (p50: 4800 ms, p90: 5700 ms, p99: 9800 ms), latency samples: 3373340
two traffics test : committed: 100 txn/s, latency: 1875 ms, (p50: 1800 ms, p90: 2100 ms, p99: 5900 ms), latency samples: 1800
Latency breakdown for phase 0: ["QsBatchToPos: max: 0.246, avg: 0.205", "QsPosToProposal: max: 0.296, avg: 0.250", "ConsensusProposalToOrdered: max: 0.460, avg: 0.415", "ConsensusOrderedToCommit: max: 0.323, avg: 0.301", "ConsensusProposalToCommit: max: 0.749, avg: 0.716"]
Max round gap was 1 [limit 4] at version 1596856. Max no progress secs was 4.115434 [limit 15] at version 1596856.
Test Ok

@vgao1996 vgao1996 merged commit 53c85b3 into aptos-labs:main Mar 5, 2024
63 of 84 checks passed
vgao1996 added a commit to vgao1996/aptos-core that referenced this pull request Mar 5, 2024
* [gas] add gas charges for dependencies

* [gas] optimize dependency gas by avoid allocating new ModuleId

* [gas] fix dependency gas for module publishing + minor gas profiler improvements

* [loader] Test gas charging logic for transitive deps

---------

Co-authored-by: Runtian Zhou <[email protected]>
@@ -200,6 +200,26 @@ crate::gas_schedule::macros::define_gas_parameters!(
{ 7.. => "max_storage_fee" },
2_0000_0000, // 2 APT
],
[
dependency_per_module: InternalGas,
{ 14.. => "dependency_per_module" },
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it intentional that we bumped the LATEST_GAS_VERSION to 15 but these are added to 14?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah good catch. I forgot to change these. Will get them fixed

module_store: &ModuleStorageAdapter,
data_store: &mut TransactionDataCache,
gas_meter: &mut impl GasMeter,
visited: &mut BTreeMap<(&'a AccountAddress, &'a IdentStr), ()>,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this BTreeMap and not BTreeSet?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CICD:run-e2e-tests when this label is present github actions will run all land-blocking e2e tests from the PR CICD:run-execution-performance-full-test Run execution performance test (full version) CICD:run-execution-performance-test Run execution performance test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants