lind-perf: baseline changes. add lind-perf crates, include basic feature plumbing.#846
lind-perf: baseline changes. add lind-perf crates, include basic feature plumbing.#846stupendoussuperpowers wants to merge 15 commits intomainfrom
lind-perf: baseline changes. add lind-perf crates, include basic feature plumbing.#846Conversation
- Add lind-perf library - Patch --features lind_perf to lind-boot, rawposix, threei, wasmtime-lind-common - Add basic timers in lind-boot::trampoline - Add --perf=[<clock|tsc>] UI flag with proper handling
End-to-End Test ReportTest PreviewUnified Test Report grate harness
Cases
wasm harnessTest ReportDeterministic TestsSummary
Test Results by Category
Fail TestsSummary
Test Results by Category
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rennergade
left a comment
There was a problem hiding this comment.
a few questions, looks really good generally. very impressed!
End-to-End Test ReportTest PreviewUnified Test Report grate harness
Cases
wasm harnessTest ReportDeterministic TestsSummary
Test Results by Category
Fail TestsSummary
Test Results by Category
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| // Each sample run gets a fresh RawPOSIX lifecycle boundary to imitate actual | ||
| // behaviour. | ||
| rawposix_start(0); | ||
| let _ = execute_wasmtime(lindboot_cli.clone()); |
There was a problem hiding this comment.
It shouldn't remove the exit handling
|
|
||
| let counters = perf::all_counter_names(); | ||
|
|
||
| // Iterate over all counters: |
There was a problem hiding this comment.
Does the counter here mean how many loops we want to iterate? I'm a bit confused by this counter and the one in src/lind-perf/src/enabled/counter.rs
There was a problem hiding this comment.
Even no-op still introduces overhead... I don't prefer we do in this way
End-to-End Test ReportTest PreviewUnified Test Report grate harness
Cases
static harnessTest ReportDeterministic TestsSummary
Test Results by Category
Fail TestsSummary
wasm harnessTest ReportDeterministic TestsSummary
Test Results by Category
Fail TestsSummary
Test Results by Category
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lind-perf[base PR]Before merge: PRs #847 and #848 have this PR as their base, so merge those into
lind-perf-initbefore merging this branch to main.lind-perfimplementation.--features lind_perf+--perfflag)lind-boot.Changes:
lind-perfcontains the crate responsible for timing and reporting micro-benchmarks. This crate only performs timing related operations when built with theenabledfeature, otherwise every operation is a no-op. The dependency thus gets included regardless avoiding the excessive need forcfgflags in downstream crates.The
enabledfeature is wired tolind-boot'slind_perffeature.The logic and design decisions behind
lind-perfare explained in more detail in theREADME.mdand int the comments.lind-perf/disabled.rslind-perf/timers.rsCLOCK_MONOTONIC_RAWand theRDTSCtimers. (Only invoked whenenabled)lind-perf/enabled/The following changes were made to ensure these features are visible to
lind-boot:lind-boot/src/perf.rslind-boot/src/cli.rs--perfflag to enable performance runs.lind-boot/src/main.rs--perfruns.lind-boot/src/lind_wasmtime/trampoline.rslind-perfbased benchmark timers on a few hot paths.Dockerfile.e2elind-perfis included in the build.Example output from a performance run: