Skip to content

Commit 9320948

Browse files
committed
Merge branch 'andriy/run-652-refactor-ee-benchmarks' into 'master'
RUN-652 Refactor EE benchmarks This change is a dev experience improvement. As the language server still uses `cargo` in most of the cases, this MR fixes the EE benchmarks to be visible for the `cargo`. The `bazel` is still the preferable way to run the benchmarks, just like before. But now the `rust-analyzer` know about the benchmarks, and hence in VS Code we see all the types etc... The main changes: 1. Move all the benchmarks under `benches` directory, so the `rust-analyzer` can see them. 2. Move the common benchmarking code under `benches/lib`. 3. Add a warning if there are no sandbox environment variables defined. See merge request dfinity-lab/public/ic!12650
2 parents 1dd14a5 + 1959b84 commit 9320948

18 files changed

+231
-84
lines changed

Cargo.lock

Lines changed: 133 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ members = [
104104
"rs/elastic_common_schema",
105105
"rs/embedders",
106106
"rs/execution_environment",
107+
"rs/execution_environment/benches/lib",
107108
"rs/guestos_vsock_agent",
108109
"rs/http_endpoints/public",
109110
"rs/http_endpoints/metrics",

rs/execution_environment/BUILD.bazel

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ BENCH_DEPENDENCIES = [
160160
rust_library(
161161
name = "execution_environment_bench",
162162
srcs = [
163-
"benchmarks/common.rs",
164-
"benchmarks/common_wat.rs",
165-
"benchmarks/lib.rs",
163+
"benches/lib/src/common.rs",
164+
"benches/lib/src/lib.rs",
165+
"benches/lib/src/wat.rs",
166166
],
167167
aliases = ALIASES,
168168
proc_macro_deps = MACRO_DEPENDENCIES,
@@ -172,31 +172,31 @@ rust_library(
172172

173173
rust_bench(
174174
name = "execute_inspect_message_bench",
175-
srcs = ["benchmarks/execute_inspect_message.rs"],
175+
srcs = ["benches/execute_inspect_message.rs"],
176176
data = DATA,
177177
env = ENV,
178178
deps = [":execution_environment_bench"] + BENCH_DEPENDENCIES,
179179
)
180180

181181
rust_bench(
182182
name = "execute_query_bench",
183-
srcs = ["benchmarks/execute_query.rs"],
183+
srcs = ["benches/execute_query.rs"],
184184
data = DATA,
185185
env = ENV,
186186
deps = [":execution_environment_bench"] + BENCH_DEPENDENCIES,
187187
)
188188

189189
rust_bench(
190190
name = "execute_update_bench",
191-
srcs = ["benchmarks/execute_update.rs"],
191+
srcs = ["benches/execute_update.rs"],
192192
data = DATA,
193193
env = ENV,
194194
deps = [":execution_environment_bench"] + BENCH_DEPENDENCIES,
195195
)
196196

197197
rust_bench(
198198
name = "scheduler_bench",
199-
srcs = ["benchmarks/scheduler.rs"],
199+
srcs = ["benches/scheduler.rs"],
200200
data = DATA,
201201
env = ENV,
202202
deps = [
@@ -209,7 +209,7 @@ rust_bench(
209209

210210
rust_bench(
211211
name = "100k_canisters_bench",
212-
srcs = ["benchmarks/100k_canisters.rs"],
212+
srcs = ["benches/100k_canisters.rs"],
213213
data = DATA + ["//rs/rust_canisters/canister_creator:canister_creator_canister"],
214214
env = dict(ENV.items() + [
215215
("CANISTER_CREATOR_CANISTER_WASM_PATH", "$(rootpath //rs/rust_canisters/canister_creator:canister_creator_canister)"),

rs/execution_environment/Cargo.toml

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
2+
edition = "2021"
23
name = "ic-execution-environment"
34
version = "0.8.0"
4-
edition = "2021"
55

66
[dependencies]
77
candid = "0.8.1"
@@ -41,20 +41,22 @@ nix = "0.23.0"
4141
num-rational = "0.2.2"
4242
num-traits = "0.2.12"
4343
phantom_newtype = { path = "../phantom_newtype" }
44-
prometheus = { version = "0.12.0", features = [ "process" ] }
44+
prometheus = { version = "0.12.0", features = ["process"] }
4545
rand = "0.8"
4646
scoped_threadpool = "0.1.*"
47-
serde = { version = "1.0.99", features = [ "derive" ] }
47+
serde = { version = "1.0.99", features = ["derive"] }
4848
serde_cbor = "0.11.1"
4949
slog = { version = "2.5.2", features = ["nested-values", "release_max_level_debug"] }
5050
strum = "0.23.0"
5151
threadpool = "1.8.1"
52-
tokio = { version = "1.17.0", features = ["sync", "rt"] }
53-
tower = { version = "0.4.11", features = ["limit", "buffer", "timeout"] }
52+
tokio = { version = "1.17.0", features = ["rt", "sync"] }
53+
tower = { version = "0.4.11", features = ["buffer", "limit", "timeout"] }
5454

5555
[dev-dependencies]
5656
assert_matches = "1.3.0"
57-
criterion = { version = "0.3", features = ["html_reports"] }
57+
canister-test = { path = "../rust_canisters/canister_test" }
58+
criterion = { version = "0.5", features = ["html_reports"] }
59+
execution-environment-bench = { path = "benches/lib" }
5860
iai = "0.1"
5961
ic-btc-test-utils = { git = "https://github.com/dfinity/bitcoin-canister", rev = "e4e89f2caedffbe0cfdec6f9d4a77f66dcb9119e" }
6062
ic-crypto-sha = { path = "../crypto/sha" }
@@ -83,5 +85,25 @@ escargot = "0.5"
8385
default = []
8486
sigsegv_handler_checksum = [
8587
"ic-canister-sandbox-replica-controller/sigsegv_handler_checksum",
86-
"memory_tracker/sigsegv_handler_checksum"
88+
"memory_tracker/sigsegv_handler_checksum",
8789
]
90+
91+
[[bench]]
92+
harness = false
93+
name = "100k_canisters"
94+
95+
[[bench]]
96+
harness = false
97+
name = "execute_inspect_message"
98+
99+
[[bench]]
100+
harness = false
101+
name = "execute_query"
102+
103+
[[bench]]
104+
harness = false
105+
name = "execute_update"
106+
107+
[[bench]]
108+
harness = false
109+
name = "scheduler"

rs/execution_environment/benchmarks/execute_inspect_message.rs renamed to rs/execution_environment/benches/execute_inspect_message.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,17 @@
22
/// Benchmark System API performance in `execute_inspect_message()`
33
///
44
use criterion::{criterion_group, criterion_main, Criterion};
5-
use execution_environment_bench::common;
6-
use execution_environment_bench::common_wat::*;
5+
use execution_environment_bench::{common, wat::*};
76
use ic_execution_environment::execution::inspect_message;
87

98
use ic_execution_environment::ExecutionEnvironment;
109
use ic_logger::replica_logger::no_op_logger;
1110
use ic_test_utilities::types::ids::user_test_id;
1211
use ic_test_utilities::types::messages::SignedIngressBuilder;
13-
use lazy_static::lazy_static;
1412

15-
lazy_static! {
16-
/// List of benchmarks: benchmark id (name), WAT, expected instructions.
17-
pub static ref BENCHMARKS: Vec<common::Benchmark> = vec![
13+
pub fn execute_inspect_message_bench(c: &mut Criterion) {
14+
// List of benchmarks: benchmark id (name), WAT, expected instructions.
15+
let benchmarks: Vec<common::Benchmark> = vec![
1816
common::Benchmark(
1917
"ic0_msg_method_name_size()",
2018
Module::InspectMessage.from_ic0("msg_method_name_size", NoParams, Result::I32),
@@ -36,13 +34,10 @@ lazy_static! {
3634
1,
3735
),
3836
];
39-
}
40-
41-
pub fn bench_execute_inspect_message(c: &mut Criterion) {
4237
common::run_benchmarks(
4338
c,
4439
"inspect",
45-
&BENCHMARKS,
40+
&benchmarks,
4641
|exec_env: &ExecutionEnvironment,
4742
expected_instructions,
4843
common::BenchmarkArgs {
@@ -82,5 +77,5 @@ pub fn bench_execute_inspect_message(c: &mut Criterion) {
8277
);
8378
}
8479

85-
criterion_group!(benchmarks, bench_execute_inspect_message);
80+
criterion_group!(benchmarks, execute_inspect_message_bench);
8681
criterion_main!(benchmarks);

0 commit comments

Comments
 (0)