wasmtime-bench-api: Randomize the locations of heap objects
This helps us avoid measurement bias due to accidental locality of unrelated heap objects. See *Stabilizer: Statistically Sound Performance Evaluation* by Curtsinger and Berger for details (although Stabilizer deals with much more than just the location of heap allocations): https://people.cs.umass.edu/~emery/pubs/stabilizer-asplos13.pdf
This commit is contained in:
@@ -16,10 +16,13 @@ crate-type = ["rlib", "cdylib"]
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1.0"
|
||||
shuffling-allocator = { version = "1.1.1", optional = true }
|
||||
wasmtime = { path = "../wasmtime", default-features = false }
|
||||
wasmtime-wasi = { path = "../wasi" }
|
||||
wasi-common = { path = "../wasi-common" }
|
||||
|
||||
|
||||
[dev-dependencies]
|
||||
wat = "1.0"
|
||||
|
||||
[features]
|
||||
default = ["shuffling-allocator"]
|
||||
|
||||
@@ -83,6 +83,14 @@ pub type ExitCode = c_int;
|
||||
pub const OK: ExitCode = 0;
|
||||
pub const ERR: ExitCode = -1;
|
||||
|
||||
// Randomize the location of heap objects to avoid accidental locality being an
|
||||
// uncontrolled variable that obscures performance evaluation in our
|
||||
// experiments.
|
||||
#[cfg(feature = "shuffling-allocator")]
|
||||
#[global_allocator]
|
||||
static ALLOC: shuffling_allocator::ShufflingAllocator<std::alloc::System> =
|
||||
shuffling_allocator::wrap!(&std::alloc::System);
|
||||
|
||||
/// Exposes a C-compatible way of creating the engine from the bytes of a single
|
||||
/// Wasm module.
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user