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 14 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
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: