From a4dde286077836ae64513214bede6b29becb862b Mon Sep 17 00:00:00 2001 From: Sasha Gryaznov Date: Sun, 20 Nov 2022 16:00:10 +0200 Subject: [PATCH] Add new gas metering method: mutable global + local `gas` function (#34) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix misprints in doc comments * added global gas tracker variable and local gas fn * all exported functions of the module to accept a new param and to set the gas_left global to its value at their very start * make module support both gas metering methods * tests fixed for the old metering method * better naming * MutableGlobal metering method implemented, tests for the old method pass * gas_metering::tests updated and pass * all tests udpdated and pass * emacs backup files to .gitignore * docs updated * clippy fix * iff = if and only if * more clippy * docs misprints fixes * refactored to have Backend trait and two implementations in separate sub-modules * docs updated * fixed old benches (updating them is coming next) * added bench for an instrumented wasm-coremark * updated benches: added them for both gas_metering instrumentations * benches contest first ver * added debug prints to the bench * refactored to better fit frontend-backend pattern * docs update * updated benches * design updated on feedback * re-structured sub-modules re-structured sub-modules & updated docs * docs improved * addressed latest feedback comments * re-writed the local gas function * coremark benches show ~20% performance improvement * fix ci: test + clippy * save before re-factoring prepare_in_wasm() * bare_call_16 shows 16% worse perf * + fibonacci recursive bench * refactored benchmarks * + factorial recursive bench * benches on wasmi fixtures show no perf improvement, coremark runs ~20% faster being instrumented with mutable_global gas metering * charge gas for local gas func isntructions execution * replaced benchmark which requires multi_value feature * save: optimized gas func a bit (benches work, fixture tests fail) * 1033% overhead on many_blocks.wasm when mut_global gas_metering together with stack_height * size overhead test for both gas metering methods + stack limiter * added more benches * improved print_size_overhead test * test for comparing size overheads of two gas_metering injectors * before optimization: benches + size overhead * optimization try-1: inline part of gas func instructions: +benches +size overheads * optimization try-2: inline hot path of gas fn: +benches +size overheads * opt try-3: count for gas fn cost on the caller side: +benches +size overhead * revert to initial version but with static gas fn cost on the caller side: +benches +sizes * tests fixed * use newest wasmi 0.20: +benches +docs updated * use if-else block instead of Return: +benches * fix tests * clippy fix * addressed review comments * Update changelog Co-authored-by: Alexander Theißen --- .gitignore | 1 + BENCHMARKS.md | 91 +++ CHANGELOG.md | 7 + Cargo.toml | 6 +- benches/benches.rs | 533 +++++++++++++++++- .../{ => wasm}/contract_terminate.wasm | Bin .../{ => wasm}/contract_transfer.wasm | Bin benches/fixtures/wasm/coremark_minimal.wasm | Bin 0 -> 7771 bytes benches/fixtures/{ => wasm}/dns.wasm | Bin benches/fixtures/{ => wasm}/erc1155.wasm | Bin benches/fixtures/{ => wasm}/erc20.wasm | Bin benches/fixtures/{ => wasm}/erc721.wasm | Bin benches/fixtures/{ => wasm}/many_blocks.wasm | Bin benches/fixtures/{ => wasm}/multisig.wasm | Bin benches/fixtures/{ => wasm}/proxy.wasm | Bin .../fixtures/{ => wasm}/rand_extension.wasm | Bin benches/fixtures/{ => wasm}/trait_erc20.wasm | Bin benches/fixtures/wasm/wasm_kernel.wasm | Bin 0 -> 798535 bytes benches/fixtures/wat/count_until.wat | 25 + benches/fixtures/wat/factorial.wat | 35 ++ benches/fixtures/wat/fibonacci.wat | 47 ++ benches/fixtures/wat/global_bump.wat | 27 + benches/fixtures/wat/memory-vec-add.wat | 58 ++ benches/fixtures/wat/recursive_ok.wat | 22 + src/gas_metering/backend.rs | 138 +++++ src/gas_metering/mod.rs | 479 ++++++++++++---- tests/diff.rs | 93 ++- .../gas/{branch.wat => branch_host_fn.wat} | 0 tests/expectations/gas/branch_mut_global.wat | 47 ++ .../gas/{call.wat => call_host_fn.wat} | 0 tests/expectations/gas/call_mut_global.wat | 38 ++ .../gas/{ifs.wat => ifs_host_fn.wat} | 0 tests/expectations/gas/ifs_mut_global.wat | 38 ++ .../gas/{simple.wat => simple_host_fn.wat} | 0 tests/expectations/gas/simple_mut_global.wat | 43 ++ .../gas/{start.wat => start_host_fn.wat} | 0 tests/expectations/gas/start_mut_global.wat | 36 ++ tests/overhead.rs | 194 +++++-- 38 files changed, 1775 insertions(+), 183 deletions(-) create mode 100644 BENCHMARKS.md rename benches/fixtures/{ => wasm}/contract_terminate.wasm (100%) rename benches/fixtures/{ => wasm}/contract_transfer.wasm (100%) create mode 100755 benches/fixtures/wasm/coremark_minimal.wasm rename benches/fixtures/{ => wasm}/dns.wasm (100%) rename benches/fixtures/{ => wasm}/erc1155.wasm (100%) rename benches/fixtures/{ => wasm}/erc20.wasm (100%) rename benches/fixtures/{ => wasm}/erc721.wasm (100%) rename benches/fixtures/{ => wasm}/many_blocks.wasm (100%) rename benches/fixtures/{ => wasm}/multisig.wasm (100%) rename benches/fixtures/{ => wasm}/proxy.wasm (100%) rename benches/fixtures/{ => wasm}/rand_extension.wasm (100%) rename benches/fixtures/{ => wasm}/trait_erc20.wasm (100%) create mode 100644 benches/fixtures/wasm/wasm_kernel.wasm create mode 100644 benches/fixtures/wat/count_until.wat create mode 100644 benches/fixtures/wat/factorial.wat create mode 100644 benches/fixtures/wat/fibonacci.wat create mode 100644 benches/fixtures/wat/global_bump.wat create mode 100644 benches/fixtures/wat/memory-vec-add.wat create mode 100644 benches/fixtures/wat/recursive_ok.wat create mode 100644 src/gas_metering/backend.rs rename tests/expectations/gas/{branch.wat => branch_host_fn.wat} (100%) create mode 100644 tests/expectations/gas/branch_mut_global.wat rename tests/expectations/gas/{call.wat => call_host_fn.wat} (100%) create mode 100644 tests/expectations/gas/call_mut_global.wat rename tests/expectations/gas/{ifs.wat => ifs_host_fn.wat} (100%) create mode 100644 tests/expectations/gas/ifs_mut_global.wat rename tests/expectations/gas/{simple.wat => simple_host_fn.wat} (100%) create mode 100644 tests/expectations/gas/simple_mut_global.wat rename tests/expectations/gas/{start.wat => start_host_fn.wat} (100%) create mode 100644 tests/expectations/gas/start_mut_global.wat diff --git a/.gitignore b/.gitignore index 6fc8f03..06b362b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ target .DS_Store .idea .vscode +*~ \ No newline at end of file diff --git a/BENCHMARKS.md b/BENCHMARKS.md new file mode 100644 index 0000000..76aa6d1 --- /dev/null +++ b/BENCHMARKS.md @@ -0,0 +1,91 @@ +# Benchmarks + +## Table of Contents + +- [Benchmark Results](#benchmark-results) + - [coremark, instrumented](#coremark,-instrumented) + - [recursive_ok, instrumented](#recursive_ok,-instrumented) + - [fibonacci_recursive, instrumented](#fibonacci_recursive,-instrumented) + - [factorial_recursive, instrumented](#factorial_recursive,-instrumented) + - [count_until, instrumented](#count_until,-instrumented) + - [memory_vec_add, instrumented](#memory_vec_add,-instrumented) + - [wasm_kernel::tiny_keccak, instrumented](#wasm_kernel::tiny_keccak,-instrumented) + - [global_bump, instrumented](#global_bump,-instrumented) + +## Instrumented Modules sizes + +| fixture | original size | gas metered/host fn | gas metered/mut global | size diff | +|------------------------------|------------------|---------------------|------------------------|-----------| +| recursive_ok.wat | 0 kb | 0 kb (137%) | 0 kb (177%) | +29% | +| count_until.wat | 0 kb | 0 kb (125%) | 0 kb (153%) | +21% | +| global_bump.wat | 0 kb | 0 kb (123%) | 0 kb (145%) | +18% | +| memory-vec-add.wat | 0 kb | 0 kb (116%) | 0 kb (134%) | +15% | +| factorial.wat | 0 kb | 0 kb (125%) | 0 kb (145%) | +15% | +| fibonacci.wat | 0 kb | 0 kb (121%) | 0 kb (134%) | +10% | +| contract_terminate.wasm | 1 kb | 1 kb (110%) | 1 kb (112%) | +2% | +| coremark_minimal.wasm | 7 kb | 8 kb (114%) | 8 kb (115%) | +0% | +| trait_erc20.wasm | 10 kb | 11 kb (108%) | 11 kb (108%) | +0% | +| rand_extension.wasm | 4 kb | 5 kb (109%) | 5 kb (109%) | +0% | +| multisig.wasm | 27 kb | 30 kb (110%) | 30 kb (110%) | +0% | +| wasm_kernel.wasm | 779 kb | 787 kb (100%) | 795 kb (101%) | +0% | +| many_blocks.wasm | 1023 kb | 2389 kb (233%) | 2389 kb (233%) | +0% | +| contract_transfer.wasm | 7 kb | 8 kb (113%) | 8 kb (113%) | +0% | +| erc1155.wasm | 26 kb | 29 kb (111%) | 29 kb (111%) | +0% | +| erc20.wasm | 9 kb | 10 kb (108%) | 10 kb (109%) | +0% | +| dns.wasm | 10 kb | 11 kb (108%) | 11 kb (108%) | +0% | +| proxy.wasm | 3 kb | 4 kb (108%) | 4 kb (109%) | +0% | +| erc721.wasm | 13 kb | 14 kb (108%) | 14 kb (108%) | +0% | + +## Benchmark Results + +### coremark, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `20.81 s` (✅ **1.00x**) | `20.20 s` (✅ **1.03x faster**) | + +### recursive_ok, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `367.11 us` (✅ **1.00x**) | `585.39 us` (❌ *1.59x slower*) | + +### fibonacci_recursive, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `9.15 us` (✅ **1.00x**) | `13.56 us` (❌ *1.48x slower*) | + +### factorial_recursive, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `1.50 us` (✅ **1.00x**) | `1.98 us` (❌ *1.32x slower*) | + +### count_until, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `5.03 ms` (✅ **1.00x**) | `8.13 ms` (❌ *1.62x slower*) | + +### memory_vec_add, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `6.21 ms` (✅ **1.00x**) | `8.45 ms` (❌ *1.36x slower*) | + +### wasm_kernel::tiny_keccak, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `925.22 us` (✅ **1.00x**) | `1.08 ms` (❌ *1.17x slower*) | + +### global_bump, instrumented + +| | `with host_function::Injector` | `with mutable_global::Injector` | +|:-------|:----------------------------------------|:----------------------------------------- | +| | `3.79 ms` (✅ **1.00x**) | `7.03 ms` (❌ *1.86x slower*) | + +--- +Made with [criterion-table](https://github.com/nu11ptr/criterion-table) + diff --git a/CHANGELOG.md b/CHANGELOG.md index ba3236c..d9ec4ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,13 @@ The interface provided to smart contracts will adhere to semver with one excepti major version bumps will be backwards compatible with regard to already deployed contracts. In other words: Upgrading this pallet will not break pre-existing contracts. +## [Unreleased] + +### New + +- Add new gas metering method: mutable global + local gas function +[#34](https://github.com/paritytech/wasm-instrument/pull/34) + ## [v0.3.0] ### Changed diff --git a/Cargo.toml b/Cargo.toml index 4319bc2..053486f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "wasm-instrument" -version = "0.3.0" +version = "0.4.0" edition = "2021" rust-version = "1.56.1" authors = ["Parity Technologies "] @@ -32,8 +32,12 @@ rand = "0.8" wat = "1" wasmparser = "0.94" wasmprinter = "0.2" +wasmi = "0.20" [features] default = ["std"] std = ["parity-wasm/std"] sign_ext = ["parity-wasm/sign_ext"] + +[lib] +bench = false diff --git a/benches/benches.rs b/benches/benches.rs index 09e04e6..155bb18 100644 --- a/benches/benches.rs +++ b/benches/benches.rs @@ -1,20 +1,23 @@ use criterion::{ - criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion, + criterion_group, criterion_main, measurement::Measurement, Bencher, BenchmarkGroup, Criterion, Throughput, }; use std::{ fs::{read, read_dir}, path::PathBuf, + slice, }; use wasm_instrument::{ - gas_metering, inject_stack_limiter, - parity_wasm::{deserialize_buffer, elements::Module}, + gas_metering::{self, host_function, mutable_global, Backend, ConstantCostRules}, + inject_stack_limiter, + parity_wasm::{deserialize_buffer, elements::Module, serialize}, }; fn fixture_dir() -> PathBuf { let mut path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); path.push("benches"); path.push("fixtures"); + path.push("wasm"); path } @@ -36,7 +39,12 @@ where fn gas_metering(c: &mut Criterion) { let mut group = c.benchmark_group("Gas Metering"); any_fixture(&mut group, |module| { - gas_metering::inject(module, &gas_metering::ConstantCostRules::default(), "env").unwrap(); + gas_metering::inject( + module, + host_function::Injector::new("env", "gas"), + &ConstantCostRules::default(), + ) + .unwrap(); }); } @@ -47,5 +55,520 @@ fn stack_height_limiter(c: &mut Criterion) { }); } +use std::time::{Duration, SystemTime, UNIX_EPOCH}; +use wasmi::{ + self, + core::{Pages, Value, F32}, + Caller, Config, Engine, Extern, Func, Instance, Linker, Memory, StackLimits, Store, +}; +fn prepare_module(backend: P, input: &[u8]) -> (wasmi::Module, Store) { + let module = deserialize_buffer(input).unwrap(); + let instrumented_module = + gas_metering::inject(module, backend, &ConstantCostRules::default()).unwrap(); + let input = serialize(instrumented_module).unwrap(); + // Prepare wasmi + let engine = Engine::new(&bench_config()); + let module = wasmi::Module::new(&engine, &mut &input[..]).unwrap(); + // Init host state with maximum gas_left + let store = Store::new(&engine, u64::MAX); + + (module, store) +} + +fn add_gas_host_func(linker: &mut Linker, store: &mut Store) { + // Create gas host function + let host_gas = Func::wrap(store, |mut caller: Caller<'_, u64>, param: u64| { + *caller.host_data_mut() -= param; + }); + // Link the gas host function + linker.define("env", "gas", host_gas).unwrap(); +} + +fn add_gas_left_global(instance: &Instance, mut store: Store) -> Store { + instance + .get_export(&mut store, "gas_left") + .and_then(Extern::into_global) + .unwrap() + .set(&mut store, Value::I64(-1i64)) // the same as u64::MAX + .unwrap(); + store +} + +fn gas_metered_coremark(c: &mut Criterion) { + let mut group = c.benchmark_group("coremark, instrumented"); + // Benchmark host_function::Injector + let wasm_filename = "coremark_minimal.wasm"; + let bytes = read(fixture_dir().join(wasm_filename)).unwrap(); + group.bench_function("with host_function::Injector", |bench| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &bytes); + // Link the host functions with the imported ones + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + // Create clock_ms host function. + let host_clock_ms = Func::wrap(&mut store, || { + SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64 + }); + // Link the time measurer for the coremark wasm + linker.define("env", "clock_ms", host_clock_ms).unwrap(); + + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + + bench.iter(|| { + let run = instance + .get_export(&mut store, "run") + .and_then(Extern::into_func) + .unwrap() + .typed::<(), F32>(&mut store) + .unwrap(); + // Call the wasm! + run.call(&mut store, ()).unwrap(); + }) + }); + + group.bench_function("with mutable_global::Injector", |bench| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &bytes); + // Add the gas_left mutable global + let mut linker = >::new(); + // Create clock_ms host function. + let host_clock_ms = Func::wrap(&mut store, || { + SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_millis() as u64 + }); + // Link the time measurer for the coremark wasm + linker.define("env", "clock_ms", host_clock_ms).unwrap(); + + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + + bench.iter(|| { + let run = instance + .get_export(&mut store, "run") + .and_then(Extern::into_func) + .unwrap() + .typed::<(), F32>(&mut store) + .unwrap(); + // Call the wasm! + run.call(&mut store, ()).unwrap(); + }) + }); +} + +/// Converts the `.wat` encoded `bytes` into `.wasm` encoded bytes. +pub fn wat2wasm(bytes: &[u8]) -> Vec { + wat::parse_bytes(bytes).unwrap().into_owned() +} + +/// Returns a [`Config`] useful for benchmarking. +fn bench_config() -> Config { + let mut config = Config::default(); + config.set_stack_limits(StackLimits::new(1024, 1024 * 1024, 64 * 1024).unwrap()); + config +} + +fn gas_metered_recursive_ok(c: &mut Criterion) { + let mut group = c.benchmark_group("recursive_ok, instrumented"); + const RECURSIVE_DEPTH: i32 = 8000; + let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/recursive_ok.wat")); + + group.bench_function("with host_function::Injector", |bench| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + + let bench_call = instance.get_export(&store, "call").and_then(Extern::into_func).unwrap(); + let mut result = [Value::I32(0)]; + + bench.iter(|| { + bench_call + .call(&mut store, &[Value::I32(RECURSIVE_DEPTH)], &mut result) + .unwrap(); + assert_eq!(result, [Value::I32(0)]); + }) + }); + + group.bench_function("with mutable_global::Injector", |bench| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + + let bench_call = instance.get_export(&store, "call").and_then(Extern::into_func).unwrap(); + let mut result = [Value::I32(0)]; + + bench.iter(|| { + bench_call + .call(&mut store, &[Value::I32(RECURSIVE_DEPTH)], &mut result) + .unwrap(); + assert_eq!(result, [Value::I32(0)]); + }) + }); +} + +fn gas_metered_fibonacci_recursive(c: &mut Criterion) { + let mut group = c.benchmark_group("fibonacci_recursive, instrumented"); + const FIBONACCI_REC_N: i64 = 10; + let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/fibonacci.wat")); + + group.bench_function("with host_function::Injector", |bench| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + + let bench_call = instance + .get_export(&store, "fib_recursive") + .and_then(Extern::into_func) + .unwrap(); + let mut result = [Value::I32(0)]; + + bench.iter(|| { + bench_call + .call(&mut store, &[Value::I64(FIBONACCI_REC_N)], &mut result) + .unwrap(); + }); + }); + + group.bench_function("with mutable_global::Injector", |bench| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + + let bench_call = instance + .get_export(&store, "fib_recursive") + .and_then(Extern::into_func) + .unwrap(); + let mut result = [Value::I32(0)]; + + bench.iter(|| { + bench_call + .call(&mut store, &[Value::I64(FIBONACCI_REC_N)], &mut result) + .unwrap(); + }); + }); +} + +fn gas_metered_fac_recursive(c: &mut Criterion) { + let mut group = c.benchmark_group("factorial_recursive, instrumented"); + let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/factorial.wat")); + + group.bench_function("with host_function::Injector", |b| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let fac = instance + .get_export(&store, "recursive_factorial") + .and_then(Extern::into_func) + .unwrap(); + let mut result = [Value::I64(0)]; + + b.iter(|| { + fac.call(&mut store, &[Value::I64(25)], &mut result).unwrap(); + assert_eq!(result, [Value::I64(7034535277573963776)]); + }) + }); + + group.bench_function("with mutable_global::Injector", |b| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + let fac = instance + .get_export(&store, "recursive_factorial") + .and_then(Extern::into_func) + .unwrap(); + let mut result = [Value::I64(0)]; + + b.iter(|| { + fac.call(&mut store, &[Value::I64(25)], &mut result).unwrap(); + assert_eq!(result, [Value::I64(7034535277573963776)]); + }) + }); +} + +fn gas_metered_count_until(c: &mut Criterion) { + const COUNT_UNTIL: i32 = 100_000; + let mut group = c.benchmark_group("count_until, instrumented"); + let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/count_until.wat")); + + group.bench_function("with host_function::Injector", |b| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let count_until = + instance.get_export(&store, "count_until").and_then(Extern::into_func).unwrap(); + let mut result = [Value::I32(0)]; + + b.iter(|| { + count_until.call(&mut store, &[Value::I32(COUNT_UNTIL)], &mut result).unwrap(); + assert_eq!(result, [Value::I32(COUNT_UNTIL)]); + }) + }); + + group.bench_function("with mutable_global::Injector", |b| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + let count_until = + instance.get_export(&store, "count_until").and_then(Extern::into_func).unwrap(); + let mut result = [Value::I32(0)]; + + b.iter(|| { + count_until.call(&mut store, &[Value::I32(COUNT_UNTIL)], &mut result).unwrap(); + assert_eq!(result, [Value::I32(COUNT_UNTIL)]); + }) + }); +} + +fn gas_metered_vec_add(c: &mut Criterion) { + fn test_for( + b: &mut Bencher, + vec_add: Func, + mut store: &mut Store, + mem: Memory, + len: usize, + vec_a: A, + vec_b: B, + ) where + A: IntoIterator, + B: IntoIterator, + { + use core::mem::size_of; + + let ptr_result = 10; + let len_result = len * size_of::(); + let ptr_a = ptr_result + len_result; + let len_a = len * size_of::(); + let ptr_b = ptr_a + len_a; + + // Reset `result` buffer to zeros: + mem.data_mut(&mut store)[ptr_result..ptr_result + (len * size_of::())].fill(0); + // Initialize `a` buffer: + for (n, a) in vec_a.into_iter().take(len).enumerate() { + mem.write(&mut store, ptr_a + (n * size_of::()), &a.to_le_bytes()).unwrap(); + } + // Initialize `b` buffer: + for (n, b) in vec_b.into_iter().take(len).enumerate() { + mem.write(&mut store, ptr_b + (n * size_of::()), &b.to_le_bytes()).unwrap(); + } + + // Prepare parameters and all Wasm `vec_add`: + let params = [ + Value::I32(ptr_result as i32), + Value::I32(ptr_a as i32), + Value::I32(ptr_b as i32), + Value::I32(len as i32), + ]; + b.iter(|| { + vec_add.call(&mut store, ¶ms, &mut []).unwrap(); + }); + + // Validate the result buffer: + for n in 0..len { + let mut buffer4 = [0x00; 4]; + let mut buffer8 = [0x00; 8]; + let a = { + mem.read(&store, ptr_a + (n * size_of::()), &mut buffer4).unwrap(); + i32::from_le_bytes(buffer4) + }; + let b = { + mem.read(&store, ptr_b + (n * size_of::()), &mut buffer4).unwrap(); + i32::from_le_bytes(buffer4) + }; + let actual_result = { + mem.read(&store, ptr_result + (n * size_of::()), &mut buffer8).unwrap(); + i64::from_le_bytes(buffer8) + }; + let expected_result = (a as i64) + (b as i64); + assert_eq!( + expected_result, actual_result, + "given a = {a} and b = {b}, results diverge at index {n}" + ); + } + } + + let mut group = c.benchmark_group("memory_vec_add, instrumented"); + let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/memory-vec-add.wat")); + const LEN: usize = 100_000; + + group.bench_function("with host_function::Injector", |b| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let vec_add = instance.get_export(&store, "vec_add").and_then(Extern::into_func).unwrap(); + let mem = instance.get_export(&store, "mem").and_then(Extern::into_memory).unwrap(); + mem.grow(&mut store, Pages::new(25).unwrap()).unwrap(); + test_for( + b, + vec_add, + &mut store, + mem, + LEN, + (0..LEN).map(|i| (i * i) as i32), + (0..LEN).map(|i| (i * 10) as i32), + ) + }); + + group.bench_function("with mutable_global::Injector", |b| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + let vec_add = instance.get_export(&store, "vec_add").and_then(Extern::into_func).unwrap(); + let mem = instance.get_export(&store, "mem").and_then(Extern::into_memory).unwrap(); + mem.grow(&mut store, Pages::new(25).unwrap()).unwrap(); + test_for( + b, + vec_add, + &mut store, + mem, + LEN, + (0..LEN).map(|i| (i * i) as i32), + (0..LEN).map(|i| (i * 10) as i32), + ) + }); +} + +fn gas_metered_tiny_keccak(c: &mut Criterion) { + let mut group = c.benchmark_group("wasm_kernel::tiny_keccak, instrumented"); + let wasm_filename = "wasm_kernel.wasm"; + let wasm_bytes = read(fixture_dir().join(wasm_filename)).unwrap(); + + group.bench_function("with host_function::Injector", |b| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let prepare = instance + .get_export(&store, "prepare_tiny_keccak") + .and_then(Extern::into_func) + .unwrap(); + let keccak = instance + .get_export(&store, "bench_tiny_keccak") + .and_then(Extern::into_func) + .unwrap(); + let mut test_data_ptr = Value::I32(0); + prepare.call(&mut store, &[], slice::from_mut(&mut test_data_ptr)).unwrap(); + b.iter(|| { + keccak.call(&mut store, slice::from_ref(&test_data_ptr), &mut []).unwrap(); + }) + }); + + group.bench_function("with mutable_global::Injector", |b| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + let prepare = instance + .get_export(&store, "prepare_tiny_keccak") + .and_then(Extern::into_func) + .unwrap(); + let keccak = instance + .get_export(&store, "bench_tiny_keccak") + .and_then(Extern::into_func) + .unwrap(); + let mut test_data_ptr = Value::I32(0); + prepare.call(&mut store, &[], slice::from_mut(&mut test_data_ptr)).unwrap(); + b.iter(|| { + keccak.call(&mut store, slice::from_ref(&test_data_ptr), &mut []).unwrap(); + }) + }); +} + +fn gas_metered_global_bump(c: &mut Criterion) { + const BUMP_AMOUNT: i32 = 100_000; + let mut group = c.benchmark_group("global_bump, instrumented"); + let wasm_bytes = wat2wasm(include_bytes!("fixtures/wat/global_bump.wat")); + + group.bench_function("with host_function::Injector", |b| { + let backend = host_function::Injector::new("env", "gas"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Link the host function with the imported one + let mut linker = >::new(); + add_gas_host_func(&mut linker, &mut store); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let bump = instance.get_export(&store, "bump").and_then(Extern::into_func).unwrap(); + let mut result = [Value::I32(0)]; + + b.iter(|| { + bump.call(&mut store, &[Value::I32(BUMP_AMOUNT)], &mut result).unwrap(); + assert_eq!(result, [Value::I32(BUMP_AMOUNT)]); + }) + }); + + group.bench_function("with mutable_global::Injector", |b| { + let backend = mutable_global::Injector::new("gas_left"); + let (module, mut store) = prepare_module(backend, &wasm_bytes); + // Add the gas_left mutable global + let linker = >::new(); + let instance = linker.instantiate(&mut store, &module).unwrap().start(&mut store).unwrap(); + let mut store = add_gas_left_global(&instance, store); + let bump = instance.get_export(&store, "bump").and_then(Extern::into_func).unwrap(); + let mut result = [Value::I32(0)]; + + b.iter(|| { + bump.call(&mut store, &[Value::I32(BUMP_AMOUNT)], &mut result).unwrap(); + assert_eq!(result, [Value::I32(BUMP_AMOUNT)]); + }) + }); +} + criterion_group!(benches, gas_metering, stack_height_limiter); -criterion_main!(benches); +criterion_group!( + name = coremark; + config = Criterion::default() + .sample_size(10) + .measurement_time(Duration::from_millis(275000)) + .warm_up_time(Duration::from_millis(1000)); + targets = + gas_metered_coremark, +); +criterion_group!( + name = wasmi_fixtures; + config = Criterion::default() + .sample_size(10) + .measurement_time(Duration::from_millis(250000)) + .warm_up_time(Duration::from_millis(1000)); + targets = + gas_metered_recursive_ok, + gas_metered_fibonacci_recursive, + gas_metered_fac_recursive, + gas_metered_count_until, + gas_metered_vec_add, + gas_metered_tiny_keccak, + gas_metered_global_bump, +); +criterion_main!(coremark, wasmi_fixtures); diff --git a/benches/fixtures/contract_terminate.wasm b/benches/fixtures/wasm/contract_terminate.wasm similarity index 100% rename from benches/fixtures/contract_terminate.wasm rename to benches/fixtures/wasm/contract_terminate.wasm diff --git a/benches/fixtures/contract_transfer.wasm b/benches/fixtures/wasm/contract_transfer.wasm similarity index 100% rename from benches/fixtures/contract_transfer.wasm rename to benches/fixtures/wasm/contract_transfer.wasm diff --git a/benches/fixtures/wasm/coremark_minimal.wasm b/benches/fixtures/wasm/coremark_minimal.wasm new file mode 100755 index 0000000000000000000000000000000000000000..c5d6b878d532495887dc5295f2af36f64cd90047 GIT binary patch literal 7771 zcmd6sUx+2yUB}Nk_2<^TRoz_!gADY7r^JtjZ|;4@nPl(N_f0x_=OZisYHd36=8`pS5{~RN9s49aGSiikZ*mw`rmYLdN z>c;x{gqFc{*%|9fZ`a%fZ^QY?nls*R*!Xfj4XvJ6R=vGsuh)adsqo^G_13!^_QlFF zl^(T+wMm<4I>}NbyHthg0iN*z(gOZU9U$s>~(Lv6T_{6;iLacrhAC7 zcLPRD`FkT_5;?9@p*V;r~5B0xsw59FildTuk@vKOgUu+pNzE}GhLfP z3gM9U8p5aaIOu9d!VJG0?4()t8U+{Y#s)j}OOs|vT(78erRUFJkl~?s)8i2x6YeE+ zmUssNEx<~BDfNzq5~*hU;pm8YD~EnKX@-b__(wUxurEm5=!;5DHxsj z49$$1K?30TF;|Z-g1L=QNS6A6R!)6EeE^5efR&gFebHiw^#i?VNgEqgDltI1#EsI+axJT}1`rmet8n@d)pw z2gaHsQ6jHV7J<)p%p(mopktuO_v6tsMp$kUI-_$>4k2MB^T`5)9QaAphI$0C4}}oQIcTsH2=B}gJeJvq@9;e{g{8rCuT4X7;M2GZ z^vr0%5epV^HHHy-j6zQj^8^RVLw3I@PSA;v5%w%lyv{C}K{XsLvxpXa#HO>y;$>t4 zTO~1~$IXFFrpXgg>>(ijGFn(RI;rpgNdCEL?)t*+jG$LSWP@LL7|sn3f}>`=YPn@y-`L z#5+2XhQO5&;iB*L(NoY?lLBUmwlhUZBCnz(dc<^bWkO8W;SS{-;P)lmT0lEOt^&E( z2>UR34B9`b(&d?bXdl?Oe#(Szn4Q)jSBa@gR1OaQ_c<~7H_ zcjq;Q(J%J3Ywjs(U+QbE4FhjiTYHUA2*NLsGGJuFW6LC^Np5cs!N@tt2!g$}WW(?N zceIJm_6U{G`cGD8uup`H_~F%{23WpfAsXHzlox!zv4RKKDJ$6Eroh%7PAI0+HVN)< za=&HV1)s5AH>Uzu0}vY<>Iu8gU>9N&`33tSn;(_o>!uKjIf`jjog{_DP)yvw2I4CZA^%pX*ZCP3Bnb%^mHt zCwFsZlh(@H>y_~CPyBQOQ1pKAw;wh7H~#GS^KIRg&Hwz&y41AgUmPDzCgzxv%c zf;@;30dJ6^NIznh9KIs&Ym0~l!7&A0>^CW>RGvYgVAapD>x>}v8+-|a948v=a>>5X z$II)Nac6l#h8TUazodzThJ1;tp;@IOEXN(rHei#ajA>aw42_%trm<2QU zkf+D@RzHxNeuiHPMu`?DP}Gg;)Y+}Dhb6%z`pI5S3S9!vah&u9%W(mvRj>F$B2B9 zWvltJ@yt^6CkjP{Wn|RiS{Rrs32b2~CSizcBtUd6DK-jCHf(nNK$@Ft6vcvSNgmg( zJlQ1)mGt{zk}EwTsp*ycKFMR6SV;1fRT%9hUs>(WvOk#QAPduCo zB_}OuRgb_Q78_`2jtw;QLtsN1s$emmIOiIQp!8LzA%SHy*U;z*8XC^sWZ*NopL}q) z9gyvC)r5m&hq}z!T}03a=&X>=fYG9Uh8jD39N6fLgL(9)$9>5z`ckssOI4>Y4m-Df zby{D^DPQ6&r+9jbjTk66T`_P`UtO%=n&(vf*?D68Awo|`vX#`eY<9AKOf7=xes$IT znnKqU(I(~ZI9tZxr~PTxT{z8f(4t>2Lu0!*CdOB&gR(B2bb@0aupya*x27z{X<)Y{ zByr>$#Z;3m(7V-!n5Iaodm}#hG2z_yn+pxPx6wYE<1-m?4Ijx#%<-S4UEL|Y*_s$? zSrPc@LP>)6RupUSlENKqWVQR$-RA-UmejV=wE)`;(&k~4 zY+Gkr?$0JQBIyk62gGNXj@tlPH=`r#{cPjehjj+f36W^87&>4Kntw*Q6NfcF+-En` z9TTVVcq&KfzUb`reKFBp=bXVrT%DCAOKZB7Ee1-CSLTk0%sGlXUwO@K`m8P+lo*c* z$Hgr!)%w=+Cq-^(k6Src92Z|WDRTTeZYA0t7yU``qbEgtps4-_^6D{HiJqgc{^1AW+ zf8H$@W@uBFWce`Wwr=c`@QDcZFv4oek2R0hpPwwJ&T@rbhOEnl$&A@kiaBPKg6bx) zGhT(8&uI-`S%O3LYQw+}lt@=P`h|^~Kqr@7`iYVJAhNSS;57*31PE>?li>Hlw~Xd3 zLN+9j%p-TF<|%tht9Y*+rAQ1vv=^@~I$i@e6QUeByb#-Xhrt4!S4agR67+Y0xmc(O z6*SCTqy`vuKOS^Na7tzZ7;`tsly$+tG6a6dfgC}&p)(}!Y{fp|NFHyxF|N|)c-QXA zKesjq4a!Pz*VnttHD5(7|&l5E{1 zObG=XX8tYf{yf6*K2%ec#Tk%0%2jFOykqy`EcUUU6ZlPb>ZP*$c49erLiLcN$lLEd z+=o#D$Ud1qR}~`5Wtjd_)Aw0KQ-iv?L1?BQlyrj<$T|LKa7K4>c6WMqcXoDn{-kaU z+DU+5@HaTT`GMjUyrwhLB3`L$GP_nHPd7%Grv7P-qJXmbd5q;1N zd~2~?C>g4qY{r|NkbtQjaMN;m$O_)=;KB5g0wwU#rNUfbQI|7v$Lihdp2N4czH+2% zms;DeitqNt^6L)&<}Z|g<-YVU-Ne&L%xd24X%lYjS-FMR9y z-+t$}41Xy#W}9ci^Cr&$&jX%ca!cqZf$LDnhkY4OJV);<;{)fC|um!xE8w@vbni^@v2$ZpzZZ5 zn!kPV`qe9O%=S8D?`&?+bNQxOzq4`Y;>9~tbNSBIjjipiUp7~_Ha54{?|c$vV3PjX o6nvKbN{qR{_o>o^FXv_UDaP9W2dE1|O#lD@ literal 0 HcmV?d00001 diff --git a/benches/fixtures/dns.wasm b/benches/fixtures/wasm/dns.wasm similarity index 100% rename from benches/fixtures/dns.wasm rename to benches/fixtures/wasm/dns.wasm diff --git a/benches/fixtures/erc1155.wasm b/benches/fixtures/wasm/erc1155.wasm similarity index 100% rename from benches/fixtures/erc1155.wasm rename to benches/fixtures/wasm/erc1155.wasm diff --git a/benches/fixtures/erc20.wasm b/benches/fixtures/wasm/erc20.wasm similarity index 100% rename from benches/fixtures/erc20.wasm rename to benches/fixtures/wasm/erc20.wasm diff --git a/benches/fixtures/erc721.wasm b/benches/fixtures/wasm/erc721.wasm similarity index 100% rename from benches/fixtures/erc721.wasm rename to benches/fixtures/wasm/erc721.wasm diff --git a/benches/fixtures/many_blocks.wasm b/benches/fixtures/wasm/many_blocks.wasm similarity index 100% rename from benches/fixtures/many_blocks.wasm rename to benches/fixtures/wasm/many_blocks.wasm diff --git a/benches/fixtures/multisig.wasm b/benches/fixtures/wasm/multisig.wasm similarity index 100% rename from benches/fixtures/multisig.wasm rename to benches/fixtures/wasm/multisig.wasm diff --git a/benches/fixtures/proxy.wasm b/benches/fixtures/wasm/proxy.wasm similarity index 100% rename from benches/fixtures/proxy.wasm rename to benches/fixtures/wasm/proxy.wasm diff --git a/benches/fixtures/rand_extension.wasm b/benches/fixtures/wasm/rand_extension.wasm similarity index 100% rename from benches/fixtures/rand_extension.wasm rename to benches/fixtures/wasm/rand_extension.wasm diff --git a/benches/fixtures/trait_erc20.wasm b/benches/fixtures/wasm/trait_erc20.wasm similarity index 100% rename from benches/fixtures/trait_erc20.wasm rename to benches/fixtures/wasm/trait_erc20.wasm diff --git a/benches/fixtures/wasm/wasm_kernel.wasm b/benches/fixtures/wasm/wasm_kernel.wasm new file mode 100644 index 0000000000000000000000000000000000000000..33e55ad55f9c38d0ea00f68e323af1f9b9fec3ad GIT binary patch literal 798535 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≫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

#g3hOUWy6y0e;=PE+dH!Hhnh10xb1|L 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 literal 0 HcmV?d00001 diff --git a/benches/fixtures/wat/count_until.wat b/benches/fixtures/wat/count_until.wat new file mode 100644 index 0000000..d5350e0 --- /dev/null +++ b/benches/fixtures/wat/count_until.wat @@ -0,0 +1,25 @@ +;; Exports a function `count_until` that takes an input `n`. +;; The exported function counts an integer `n` times and then returns `n`. +(module + (func $count_until (export "count_until") (param $limit i32) (result i32) + (local $counter i32) + (block + (loop + (br_if + 1 + (i32.eq + (local.tee $counter + (i32.add + (local.get $counter) + (i32.const 1) + ) + ) + (local.get $limit) + ) + ) + (br 0) + ) + ) + (return (local.get $counter)) + ) +) diff --git a/benches/fixtures/wat/factorial.wat b/benches/fixtures/wat/factorial.wat new file mode 100644 index 0000000..c2e7c2d --- /dev/null +++ b/benches/fixtures/wat/factorial.wat @@ -0,0 +1,35 @@ +(module + ;; Iterative factorial function, does not use recursion. + (func (export "iterative_factorial") (param i64) (result i64) + (local i64) + (local.set 1 (i64.const 1)) + (block + (br_if 0 (i64.lt_s (local.get 0) (i64.const 2))) + (loop + (local.set 1 (i64.mul (local.get 1) (local.get 0))) + (local.set 0 (i64.add (local.get 0) (i64.const -1))) + (br_if 0 (i64.gt_s (local.get 0) (i64.const 1))) + ) + ) + (local.get 1) + ) + + ;; Recursive trivial factorial function. + (func $rec_fac (export "recursive_factorial") (param i64) (result i64) + (if (result i64) + (i64.eq (local.get 0) (i64.const 0)) + (then (i64.const 1)) + (else + (i64.mul + (local.get 0) + (call $rec_fac + (i64.sub + (local.get 0) + (i64.const 1) + ) + ) + ) + ) + ) + ) +) diff --git a/benches/fixtures/wat/fibonacci.wat b/benches/fixtures/wat/fibonacci.wat new file mode 100644 index 0000000..4b15519 --- /dev/null +++ b/benches/fixtures/wat/fibonacci.wat @@ -0,0 +1,47 @@ +(module + (func $fib_recursive (export "fib_recursive") (param $N i64) (result i64) + (if + (i64.le_s (local.get $N) (i64.const 1)) + (then (return (local.get $N))) + ) + (return + (i64.add + (call $fib_recursive + (i64.sub (local.get $N) (i64.const 1)) + ) + (call $fib_recursive + (i64.sub (local.get $N) (i64.const 2)) + ) + ) + ) + ) + + (func $fib_iterative (export "fib_iterative") (param $N i64) (result i64) + (local $n1 i64) + (local $n2 i64) + (local $tmp i64) + (local $i i64) + ;; return $N for N <= 1 + (if + (i64.le_s (local.get $N) (i64.const 1)) + (then (return (local.get $N))) + ) + (local.set $n1 (i64.const 1)) + (local.set $n2 (i64.const 1)) + (local.set $i (i64.const 2)) + ;;since we normally return n2, handle n=1 case specially + (loop $again + (if + (i64.lt_s (local.get $i) (local.get $N)) + (then + (local.set $tmp (i64.add (local.get $n1) (local.get $n2))) + (local.set $n1 (local.get $n2)) + (local.set $n2 (local.get $tmp)) + (local.set $i (i64.add (local.get $i) (i64.const 1))) + (br $again) + ) + ) + ) + (local.get $n2) + ) +) diff --git a/benches/fixtures/wat/global_bump.wat b/benches/fixtures/wat/global_bump.wat new file mode 100644 index 0000000..5feb835 --- /dev/null +++ b/benches/fixtures/wat/global_bump.wat @@ -0,0 +1,27 @@ +;; Exports a function `bump` that takes an input `n`. +;; The exported function bumps a global variable `n` times and then returns it. +(module + (global $g (mut i32) (i32.const 0)) + (func $bump (export "bump") (param $n i32) (result i32) + (global.set $g (i32.const 0)) + (block $break + (loop $continue + (br_if ;; if $g == $n then break + $break + (i32.eq + (global.get $g) + (local.get $n) + ) + ) + (global.set $g ;; $g += 1 + (i32.add + (global.get $g) + (i32.const 1) + ) + ) + (br $continue) + ) + ) + (return (global.get $g)) + ) +) diff --git a/benches/fixtures/wat/memory-vec-add.wat b/benches/fixtures/wat/memory-vec-add.wat new file mode 100644 index 0000000..81a5242 --- /dev/null +++ b/benches/fixtures/wat/memory-vec-add.wat @@ -0,0 +1,58 @@ +;; Exports a function `vec_add` that computes the addition of 2 vectors +;; of length `len` starting at `ptr_a` and `ptr_b` and stores the result +;; into a buffer of the same length starting at `ptr_result`. +(module + (memory (export "mem") 1) + (func (export "vec_add") + (param $ptr_result i32) + (param $ptr_a i32) + (param $ptr_b i32) + (param $len i32) + (local $n i32) + (block $exit + (loop $loop + (br_if ;; exit loop if $n == $len + $exit + (i32.eq + (local.get $n) + (local.get $len) + ) + ) + (i64.store offset=0 ;; ptr_result[n] = ptr_a[n] + ptr_b[n] + (i32.add + (local.get $ptr_result) + (i32.mul + (local.get $n) + (i32.const 8) + ) + ) + (i64.add + (i64.load32_s offset=0 ;; load ptr_a[n] + (i32.add + (local.get $ptr_a) + (i32.mul + (local.get $n) + (i32.const 4) + ) + ) + ) + (i64.load32_s offset=0 ;; load ptr_b[n] + (i32.add + (local.get $ptr_b) + (i32.mul + (local.get $n) + (i32.const 4) + ) + ) + ) + ) + ) + (local.set $n ;; increment n + (i32.add (local.get $n) (i32.const 1)) + ) + (br $loop) ;; continue loop + ) + ) + (return) + ) +) diff --git a/benches/fixtures/wat/recursive_ok.wat b/benches/fixtures/wat/recursive_ok.wat new file mode 100644 index 0000000..19b1827 --- /dev/null +++ b/benches/fixtures/wat/recursive_ok.wat @@ -0,0 +1,22 @@ +;; Exports a function `call` that takes an input `n`. +;; The exported function calls itself `n` times. +(module + (func $call (export "call") (param $n i32) (result i32) + (if (result i32) + (local.get $n) + (then + (return + (call $call + (i32.sub + (local.get $n) + (i32.const 1) + ) + ) + ) + ) + (else + (return (local.get $n)) + ) + ) + ) +) diff --git a/src/gas_metering/backend.rs b/src/gas_metering/backend.rs new file mode 100644 index 0000000..b9d6001 --- /dev/null +++ b/src/gas_metering/backend.rs @@ -0,0 +1,138 @@ +//! Provides backends for the gas metering instrumentation +use parity_wasm::elements; + +/// Implementation details of the specific method of the gas metering. +#[derive(Clone)] +pub enum GasMeter { + /// Gas metering with an external function. + External { + /// Name of the module to import the gas function from. + module: &'static str, + /// Name of the external gas function to be imported. + function: &'static str, + }, + /// Gas metering with a local function and a mutable global. + Internal { + /// Name of the mutable global to be exported. + global: &'static str, + /// Body of the local gas counting function to be injected. + func_instructions: elements::Instructions, + /// Cost of the gas function execution. + cost: u64, + }, +} + +use super::Rules; +/// Under the hood part of the gas metering mechanics. +pub trait Backend { + /// Provides the gas metering implementation details. + fn gas_meter(self, module: &elements::Module, rules: &R) -> GasMeter; +} + +/// Gas metering with an external host function. +pub mod host_function { + use super::{Backend, GasMeter, Rules}; + use parity_wasm::elements::Module; + /// Injects invocations of the gas charging host function into each metering block. + pub struct Injector { + /// The name of the module to import the gas function from. + module: &'static str, + /// The name of the gas function to import. + name: &'static str, + } + + impl Injector { + pub fn new(module: &'static str, name: &'static str) -> Self { + Self { module, name } + } + } + + impl Backend for Injector { + fn gas_meter(self, _module: &Module, _rules: &R) -> GasMeter { + GasMeter::External { module: self.module, function: self.name } + } + } +} + +/// Gas metering with a mutable global. +/// +/// # Note +/// +/// Not for all execution engines this method gives performance wins compared to using an [external +/// host function](host_function). See benchmarks and size overhead tests for examples of how to +/// make measurements needed to decide which gas metering method is better for your particular case. +/// +/// # Warning +/// +/// It is not recommended to apply [stack limiter](crate::inject_stack_limiter) instrumentation to a +/// module instrumented with this type of gas metering. This could lead to a massive module size +/// bloat. This is a known issue to be fixed in upcoming versions. +pub mod mutable_global { + use super::{Backend, GasMeter, Rules}; + use alloc::vec; + use parity_wasm::elements::{self, Instruction, Module}; + /// Injects a mutable global variable and a local function to the module to track + /// current gas left. + /// + /// The function is called in every metering block. In case of falling out of gas, the global is + /// set to the sentinel value `U64::MAX` and `unreachable` instruction is called. The execution + /// engine should take care of getting the current global value and setting it back in order to + /// sync the gas left value during an execution. + pub struct Injector { + /// The export name of the gas tracking global. + pub global_name: &'static str, + } + + impl Injector { + pub fn new(global_name: &'static str) -> Self { + Self { global_name } + } + } + + impl Backend for Injector { + fn gas_meter(self, module: &Module, rules: &R) -> GasMeter { + let gas_global_idx = module.globals_space() as u32; + + let func_instructions = vec![ + Instruction::GetGlobal(gas_global_idx), + Instruction::GetLocal(0), + Instruction::I64GeU, + Instruction::If(elements::BlockType::NoResult), + Instruction::GetGlobal(gas_global_idx), + Instruction::GetLocal(0), + Instruction::I64Sub, + Instruction::SetGlobal(gas_global_idx), + Instruction::Else, + // sentinel val u64::MAX + Instruction::I64Const(-1i64), // non-charged instruction + Instruction::SetGlobal(gas_global_idx), // non-charged instruction + Instruction::Unreachable, // non-charged instruction + Instruction::End, + Instruction::End, + ]; + + // calculate gas used for the gas charging func execution itself + let mut gas_fn_cost = func_instructions.iter().fold(0, |cost, instruction| { + cost + (rules.instruction_cost(instruction).unwrap_or(0) as u64) + }); + // don't charge for the instructions used to fail when out of gas + let fail_cost = vec![ + Instruction::I64Const(-1i64), // non-charged instruction + Instruction::SetGlobal(gas_global_idx), // non-charged instruction + Instruction::Unreachable, // non-charged instruction + ] + .iter() + .fold(0, |cost, instruction| { + cost + (rules.instruction_cost(instruction).unwrap_or(0) as u64) + }); + + gas_fn_cost -= fail_cost; + + GasMeter::Internal { + global: self.global_name, + func_instructions: elements::Instructions::new(func_instructions), + cost: gas_fn_cost, + } + } + } +} diff --git a/src/gas_metering/mod.rs b/src/gas_metering/mod.rs index 97a7c35..b1facdd 100644 --- a/src/gas_metering/mod.rs +++ b/src/gas_metering/mod.rs @@ -1,9 +1,13 @@ -//! This module is used to instrument a Wasm module with gas metering code. +//! This module is used to instrument a Wasm module with the gas metering code. //! //! The primary public interface is the [`inject`] function which transforms a given //! module into one that charges gas for code to be executed. See function documentation for usage //! and details. +mod backend; + +pub use backend::{host_function, mutable_global, Backend, GasMeter}; + #[cfg(test)] mod validation; @@ -67,7 +71,7 @@ impl MemoryGrowCost { /// # Note /// /// In a production environment it usually makes no sense to assign every instruction -/// the same cost. A proper implemention of [`Rules`] should be prived that is probably +/// the same cost. A proper implemention of [`Rules`] should be provided that is probably /// created by benchmarking. pub struct ConstantCostRules { instruction_cost: u32, @@ -101,84 +105,153 @@ impl Rules for ConstantCostRules { } } -/// Transforms a given module into one that charges gas for code to be executed by proxy of an -/// imported gas metering function. +/// Transforms a given module into one that tracks the gas charged during its execution. /// -/// The output module imports a function "gas" from the specified module with type signature -/// [i64] -> []. The argument is the amount of gas required to continue execution. The external -/// function is meant to keep track of the total amount of gas used and trap or otherwise halt -/// execution of the runtime if the gas usage exceeds some allowed limit. +/// The output module uses the `gas` function to track the gas spent. The function could be either +/// an imported or a local one modifying a mutable global. The argument is the amount of gas +/// required to continue execution. The execution engine is meant to keep track of the total amount +/// of gas used and trap or otherwise halt execution of the runtime if the gas usage exceeds some +/// allowed limit. /// -/// The body of each function is divided into metered blocks, and the calls to charge gas are -/// inserted at the beginning of every such block of code. A metered block is defined so that, -/// unless there is a trap, either all of the instructions are executed or none are. These are -/// similar to basic blocks in a control flow graph, except that in some cases multiple basic -/// blocks can be merged into a single metered block. This is the case if any path through the -/// control flow graph containing one basic block also contains another. +/// The body of each function of the original module is divided into metered blocks, and the calls +/// to charge gas are inserted at the beginning of every such block of code. A metered block is +/// defined so that, unless there is a trap, either all of the instructions are executed or none +/// are. These are similar to basic blocks in a control flow graph, except that in some cases +/// multiple basic blocks can be merged into a single metered block. This is the case if any path +/// through the control flow graph containing one basic block also contains another. /// -/// Charging gas is at the beginning of each metered block ensures that 1) all instructions +/// Charging gas at the beginning of each metered block ensures that 1) all instructions /// executed are already paid for, 2) instructions that will not be executed are not charged for -/// unless execution traps, and 3) the number of calls to "gas" is minimized. The corollary is that -/// modules instrumented with this metering code may charge gas for instructions not executed in -/// the event of a trap. +/// unless execution traps, and 3) the number of calls to `gas` is minimized. The corollary is +/// that modules instrumented with this metering code may charge gas for instructions not +/// executed in the event of a trap. /// -/// Additionally, each `memory.grow` instruction found in the module is instrumented to first make -/// a call to charge gas for the additional pages requested. This cannot be done as part of the -/// block level gas charges as the gas cost is not static and depends on the stack argument to -/// `memory.grow`. +/// Additionally, each `memory.grow` instruction found in the module is instrumented to first +/// make a call to charge gas for the additional pages requested. This cannot be done as part of +/// the block level gas charges as the gas cost is not static and depends on the stack argument +/// to `memory.grow`. /// /// The above transformations are performed for every function body defined in the module. This /// function also rewrites all function indices references by code, table elements, etc., since -/// the addition of an imported functions changes the indices of module-defined functions. If the -/// the module has a NameSection, added by calling `parse_names`, the indices will also be updated. +/// the addition of an imported functions changes the indices of module-defined functions. If +/// the module has a `NameSection`, added by calling `parse_names`, the indices will also be +/// updated. +/// +/// Syncronizing the amount of gas charged with the execution engine can be done in two ways. The +/// first way is by calling the imported `gas` host function, see [`host_function`] for details. The +/// second way is by using a local `gas` function together with a mutable global, see +/// [`mutable_global`] for details. /// /// This routine runs in time linear in the size of the input module. /// /// The function fails if the module contains any operation forbidden by gas rule set, returning -/// the original module as an Err. -pub fn inject( +/// the original module as an `Err`. +pub fn inject( module: elements::Module, + backend: B, rules: &R, - gas_module_name: &str, ) -> Result { - // Injecting gas counting external + // Prepare module and return the gas function + let gas_meter = backend.gas_meter(&module, rules); + + let import_count = module.import_count(elements::ImportCountType::Function) as u32; + let functions_space = module.functions_space() as u32; + let gas_global_idx = module.globals_space() as u32; + let mut mbuilder = builder::from_module(module); - let import_sig = - mbuilder.push_signature(builder::signature().with_param(ValueType::I64).build_sig()); - mbuilder.push_import( - builder::import() - .module(gas_module_name) - .field("gas") - .external() - .func(import_sig) - .build(), - ); + // Calculate the indexes and gas function cost, + // for external gas function the cost is counted on the host side + let (gas_func_idx, total_func, gas_fn_cost) = match gas_meter { + GasMeter::External { module: gas_module, function } => { + // Inject the import of the gas function + let import_sig = mbuilder + .push_signature(builder::signature().with_param(ValueType::I64).build_sig()); + mbuilder.push_import( + builder::import() + .module(gas_module) + .field(function) + .external() + .func(import_sig) + .build(), + ); - // back to plain module + (import_count, functions_space + 1, 0) + }, + GasMeter::Internal { global, ref func_instructions, cost } => { + // Inject the gas counting global + mbuilder.push_global( + builder::global() + .with_type(ValueType::I64) + .mutable() + .init_expr(Instruction::I64Const(0)) + .build(), + ); + // Inject the export entry for the gas counting global + let ebuilder = builder::ExportBuilder::new(); + let global_export = ebuilder + .field(global) + .with_internal(elements::Internal::Global(gas_global_idx)) + .build(); + mbuilder.push_export(global_export); + + let func_idx = functions_space; + + // Build local gas function + let gas_func_sig = + builder::SignatureBuilder::new().with_param(ValueType::I64).build_sig(); + + let function = builder::FunctionBuilder::new() + .with_signature(gas_func_sig) + .body() + .with_instructions(func_instructions.clone()) + .build() + .build(); + + // Inject local gas function + mbuilder.push_function(function); + + (func_idx, func_idx + 1, cost) + }, + }; + + // We need the built the module for making injections to its blocks let mut module = mbuilder.build(); - // calculate actual function index of the imported definition - // (subtract all imports that are NOT functions) - - let gas_func = module.import_count(elements::ImportCountType::Function) as u32 - 1; - let total_func = module.functions_space() as u32; let mut need_grow_counter = false; let mut error = false; - // Updating calling addresses (all calls to function index >= `gas_func` should be incremented) + // Iterate over module sections and perform needed transformations. + // Indexes are needed to be fixed up in `GasMeter::External` case, as it adds an imported + // function, which goes to the beginning of the module's functions space. for section in module.sections_mut() { match section { - elements::Section::Code(code_section) => - for func_body in code_section.bodies_mut() { - for instruction in func_body.code_mut().elements_mut().iter_mut() { - if let Instruction::Call(call_index) = instruction { - if *call_index >= gas_func { - *call_index += 1 + elements::Section::Code(code_section) => { + let injection_targets = match gas_meter { + GasMeter::External { .. } => code_section.bodies_mut().as_mut_slice(), + // Don't inject counters to the local gas function, which is the last one as + // it's just added. Cost for its execution is added statically before each + // invocation (see `inject_counter()`). + GasMeter::Internal { .. } => { + let len = code_section.bodies().len(); + &mut code_section.bodies_mut()[..len - 1] + }, + }; + + for func_body in injection_targets { + // Increment calling addresses if needed + if let GasMeter::External { .. } = gas_meter { + for instruction in func_body.code_mut().elements_mut().iter_mut() { + if let Instruction::Call(call_index) = instruction { + if *call_index >= gas_func_idx { + *call_index += 1 + } } } } - if inject_counter(func_body.code_mut(), rules, gas_func).is_err() { + if inject_counter(func_body.code_mut(), gas_fn_cost, rules, gas_func_idx) + .is_err() + { error = true; break } @@ -187,42 +260,50 @@ pub fn inject( { need_grow_counter = true; } - }, - elements::Section::Export(export_section) => { - for export in export_section.entries_mut() { - if let elements::Internal::Function(func_index) = export.internal_mut() { - if *func_index >= gas_func { - *func_index += 1 - } - } } }, + elements::Section::Export(export_section) => + if let GasMeter::External { module: _, function: _ } = gas_meter { + for export in export_section.entries_mut() { + if let elements::Internal::Function(func_index) = export.internal_mut() { + if *func_index >= gas_func_idx { + *func_index += 1 + } + } + } + }, elements::Section::Element(elements_section) => { // Note that we do not need to check the element type referenced because in the // WebAssembly 1.0 spec, the only allowed element type is funcref. - for segment in elements_section.entries_mut() { - // update all indirect call addresses initial values - for func_index in segment.members_mut() { - if *func_index >= gas_func { - *func_index += 1 + if let GasMeter::External { .. } = gas_meter { + for segment in elements_section.entries_mut() { + // update all indirect call addresses initial values + for func_index in segment.members_mut() { + if *func_index >= gas_func_idx { + *func_index += 1 + } } } } }, elements::Section::Start(start_idx) => - if *start_idx >= gas_func { - *start_idx += 1 + if let GasMeter::External { .. } = gas_meter { + if *start_idx >= gas_func_idx { + *start_idx += 1 + } }, elements::Section::Name(s) => - for functions in s.functions_mut() { - *functions.names_mut() = - IndexMap::from_iter(functions.names().iter().map(|(mut idx, name)| { - if idx >= gas_func { - idx += 1; - } + if let GasMeter::External { .. } = gas_meter { + for functions in s.functions_mut() { + *functions.names_mut() = + IndexMap::from_iter(functions.names().iter().map(|(mut idx, name)| { + if idx >= gas_func_idx { + idx += 1; + } - (idx, name.clone()) - })); + (idx, name.clone()) + })); + } }, _ => {}, } @@ -233,7 +314,7 @@ pub fn inject( } if need_grow_counter { - Ok(add_grow_counter(module, rules, gas_func)) + Ok(add_grow_counter(module, rules, gas_func_idx)) } else { Ok(module) } @@ -558,16 +639,18 @@ fn determine_metered_blocks( fn inject_counter( instructions: &mut elements::Instructions, + gas_function_cost: u64, rules: &R, gas_func: u32, ) -> Result<(), ()> { let blocks = determine_metered_blocks(instructions, rules)?; - insert_metering_calls(instructions, blocks, gas_func) + insert_metering_calls(instructions, gas_function_cost, blocks, gas_func) } // Then insert metering calls into a sequence of instructions given the block locations and costs. fn insert_metering_calls( instructions: &mut elements::Instructions, + gas_function_cost: u64, blocks: Vec, gas_func: u32, ) -> Result<(), ()> { @@ -585,7 +668,7 @@ fn insert_metering_calls( // If there the next block starts at this position, inject metering instructions. let used_block = if let Some(block) = block_iter.peek() { if block.start_pos == original_pos { - new_instrs.push(I64Const(block.cost as i64)); + new_instrs.push(I64Const((block.cost + gas_function_cost) as i64)); new_instrs.push(Call(gas_func)); true } else { @@ -627,7 +710,7 @@ mod tests { } #[test] - fn simple_grow() { + fn simple_grow_host_fn() { let module = parse_wat( r#"(module (func (result i32) @@ -637,8 +720,9 @@ mod tests { (memory 0 1) )"#, ); - - let injected_module = inject(module, &ConstantCostRules::new(1, 10_000), "env").unwrap(); + let backend = host_function::Injector::new("env", "gas"); + let injected_module = + super::inject(module, backend, &ConstantCostRules::new(1, 10_000)).unwrap(); assert_eq!( get_function_body(&injected_module, 0).unwrap(), @@ -663,7 +747,64 @@ mod tests { } #[test] - fn grow_no_gas_no_track() { + fn simple_grow_mut_global() { + let module = parse_wat( + r#"(module + (func (result i32) + global.get 0 + memory.grow) + (global i32 (i32.const 42)) + (memory 0 1) + )"#, + ); + let backend = mutable_global::Injector::new("gas_left"); + let injected_module = + super::inject(module, backend, &ConstantCostRules::new(1, 10_000)).unwrap(); + + assert_eq!( + get_function_body(&injected_module, 0).unwrap(), + &vec![I64Const(13), Call(1), GetGlobal(0), Call(2), End][..] + ); + assert_eq!( + get_function_body(&injected_module, 1).unwrap(), + &vec![ + Instruction::GetGlobal(1), + Instruction::GetLocal(0), + Instruction::I64GeU, + Instruction::If(elements::BlockType::NoResult), + Instruction::GetGlobal(1), + Instruction::GetLocal(0), + Instruction::I64Sub, + Instruction::SetGlobal(1), + Instruction::Else, + // sentinel val u64::MAX + Instruction::I64Const(-1i64), // non-charged instruction + Instruction::SetGlobal(1), // non-charged instruction + Instruction::Unreachable, // non-charged instruction + Instruction::End, + Instruction::End, + ][..] + ); + assert_eq!( + get_function_body(&injected_module, 2).unwrap(), + &vec![ + GetLocal(0), + GetLocal(0), + I64ExtendUI32, + I64Const(10000), + I64Mul, + Call(1), + GrowMemory(0), + End, + ][..] + ); + + let binary = serialize(injected_module).expect("serialization failed"); + wasmparser::validate(&binary).unwrap(); + } + + #[test] + fn grow_no_gas_no_track_host_fn() { let module = parse_wat( r"(module (func (result i32) @@ -673,8 +814,9 @@ mod tests { (memory 0 1) )", ); - - let injected_module = inject(module, &ConstantCostRules::default(), "env").unwrap(); + let backend = host_function::Injector::new("env", "gas"); + let injected_module = + super::inject(module, backend, &ConstantCostRules::default()).unwrap(); assert_eq!( get_function_body(&injected_module, 0).unwrap(), @@ -688,7 +830,33 @@ mod tests { } #[test] - fn call_index() { + fn grow_no_gas_no_track_mut_global() { + let module = parse_wat( + r"(module + (func (result i32) + global.get 0 + memory.grow) + (global i32 (i32.const 42)) + (memory 0 1) + )", + ); + let backend = mutable_global::Injector::new("gas_left"); + let injected_module = + super::inject(module, backend, &ConstantCostRules::default()).unwrap(); + + assert_eq!( + get_function_body(&injected_module, 0).unwrap(), + &vec![I64Const(13), Call(1), GetGlobal(0), GrowMemory(0), End][..] + ); + + assert_eq!(injected_module.functions_space(), 2); + + let binary = serialize(injected_module).expect("serialization failed"); + wasmparser::validate(&binary).unwrap(); + } + + #[test] + fn call_index_host_fn() { let module = builder::module() .global() .value_type() @@ -725,7 +893,9 @@ mod tests { .build() .build(); - let injected_module = inject(module, &ConstantCostRules::default(), "env").unwrap(); + let backend = host_function::Injector::new("env", "gas"); + let injected_module = + super::inject(module, backend, &ConstantCostRules::default()).unwrap(); assert_eq!( get_function_body(&injected_module, 1).unwrap(), @@ -751,20 +921,89 @@ mod tests { ); } + #[test] + fn call_index_mut_global() { + let module = builder::module() + .global() + .value_type() + .i32() + .build() + .function() + .signature() + .param() + .i32() + .build() + .body() + .build() + .build() + .function() + .signature() + .param() + .i32() + .build() + .body() + .with_instructions(elements::Instructions::new(vec![ + Call(0), + If(elements::BlockType::NoResult), + Call(0), + Call(0), + Call(0), + Else, + Call(0), + Call(0), + End, + Call(0), + End, + ])) + .build() + .build() + .build(); + + let backend = mutable_global::Injector::new("gas_left"); + let injected_module = + super::inject(module, backend, &ConstantCostRules::default()).unwrap(); + + assert_eq!( + get_function_body(&injected_module, 1).unwrap(), + &vec![ + I64Const(14), + Call(2), + Call(0), + If(elements::BlockType::NoResult), + I64Const(14), + Call(2), + Call(0), + Call(0), + Call(0), + Else, + I64Const(13), + Call(2), + Call(0), + Call(0), + End, + Call(0), + End + ][..] + ); + } + fn parse_wat(source: &str) -> elements::Module { let module_bytes = wat::parse_str(source).unwrap(); elements::deserialize_buffer(module_bytes.as_ref()).unwrap() } macro_rules! test_gas_counter_injection { - (name = $name:ident; input = $input:expr; expected = $expected:expr) => { + (names = ($name1:ident, $name2:ident); input = $input:expr; expected = $expected:expr) => { #[test] - fn $name() { + fn $name1() { let input_module = parse_wat($input); let expected_module = parse_wat($expected); - - let injected_module = inject(input_module, &ConstantCostRules::default(), "env") - .expect("inject_gas_counter call failed"); + let injected_module = super::inject( + input_module, + host_function::Injector::new("env", "gas"), + &ConstantCostRules::default(), + ) + .expect("inject_gas_counter call failed"); let actual_func_body = get_function_body(&injected_module, 0) .expect("injected module must have a function body"); @@ -773,11 +1012,51 @@ mod tests { assert_eq!(actual_func_body, expected_func_body); } + + #[test] + fn $name2() { + let input_module = parse_wat($input); + let draft_module = parse_wat($expected); + let gas_fun_cost = match mutable_global::Injector::new("gas_left") + .gas_meter(&input_module, &ConstantCostRules::default()) + { + GasMeter::Internal { cost, .. } => cost as i64, + _ => 0i64, + }; + + let injected_module = super::inject( + input_module, + mutable_global::Injector::new("gas_left"), + &ConstantCostRules::default(), + ) + .expect("inject_gas_counter call failed"); + + let actual_func_body = get_function_body(&injected_module, 0) + .expect("injected module must have a function body"); + let mut expected_func_body = get_function_body(&draft_module, 0) + .expect("post-module must have a function body") + .to_vec(); + + // modify expected instructions set for gas_metering::mutable_global + let mut iter = expected_func_body.iter_mut(); + while let Some(ins) = iter.next() { + if let I64Const(cost) = ins { + if let Some(ins_next) = iter.next() { + if let Call(0) = ins_next { + *cost += gas_fun_cost; + *ins_next = Call(1); + } + } + } + } + + assert_eq!(actual_func_body, &expected_func_body); + } }; } test_gas_counter_injection! { - name = simple; + names = (simple_host_fn, simple_mut_global); input = r#" (module (func (result i32) @@ -792,7 +1071,7 @@ mod tests { } test_gas_counter_injection! { - name = nested; + names = (nested_host_fn, nested_mut_global); input = r#" (module (func (result i32) @@ -817,7 +1096,7 @@ mod tests { } test_gas_counter_injection! { - name = ifelse; + names = (ifelse_host_fn, ifelse_mut_global); input = r#" (module (func (result i32) @@ -852,7 +1131,7 @@ mod tests { } test_gas_counter_injection! { - name = branch_innermost; + names = (branch_innermost_host_fn, branch_innermost_mut_global); input = r#" (module (func (result i32) @@ -882,7 +1161,7 @@ mod tests { } test_gas_counter_injection! { - name = branch_outer_block; + names = (branch_outer_block_host_fn, branch_outer_block_mut_global); input = r#" (module (func (result i32) @@ -921,7 +1200,7 @@ mod tests { } test_gas_counter_injection! { - name = branch_outer_loop; + names = (branch_outer_loop_host_fn, branch_outer_loop_mut_global); input = r#" (module (func (result i32) @@ -967,7 +1246,7 @@ mod tests { } test_gas_counter_injection! { - name = return_from_func; + names = (return_from_func_host_fn, return_from_func_mut_global); input = r#" (module (func (result i32) @@ -992,7 +1271,7 @@ mod tests { } test_gas_counter_injection! { - name = branch_from_if_not_else; + names = (branch_from_if_not_else_host_fn, branch_from_if_not_else_mut_global); input = r#" (module (func (result i32) @@ -1028,7 +1307,7 @@ mod tests { } test_gas_counter_injection! { - name = empty_loop; + names = (empty_loop_host_fn, empty_loop_mut_global); input = r#" (module (func diff --git a/tests/diff.rs b/tests/diff.rs index ebd097e..60f48ce 100644 --- a/tests/diff.rs +++ b/tests/diff.rs @@ -1,10 +1,9 @@ -use parity_wasm::elements::Module; use std::{ fs, io::{self, Read, Write}, path::{Path, PathBuf}, }; -use wasm_instrument::{self as instrument, parity_wasm::elements}; +use wasm_instrument::{self as instrument, gas_metering, parity_wasm::elements}; use wasmparser::validate; fn slurp>(path: P) -> io::Result> { @@ -20,18 +19,23 @@ fn dump>(path: P, buf: &[u8]) -> io::Result<()> { Ok(()) } -fn run_diff_test Vec>(test_dir: &str, name: &str, test: F) { +fn run_diff_test Vec>( + test_dir: &str, + in_name: &str, + out_name: &str, + test: F, +) { let mut fixture_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); fixture_path.push("tests"); fixture_path.push("fixtures"); fixture_path.push(test_dir); - fixture_path.push(name); + fixture_path.push(in_name); let mut expected_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); expected_path.push("tests"); expected_path.push("expectations"); expected_path.push(test_dir); - expected_path.push(name); + expected_path.push(out_name); let fixture_wasm = wat::parse_file(&fixture_path).expect("Failed to read fixture"); validate(&fixture_wasm).expect("Fixture is invalid"); @@ -48,7 +52,7 @@ fn run_diff_test Vec>(test_dir: &str, name: &str, test: if actual_wat != expected_wat { println!("difference!"); println!("--- {}", expected_path.display()); - println!("+++ {} test {}", test_dir, name); + println!("+++ {} test {}", test_dir, out_name); for diff in diff::lines(expected_wat, &actual_wat) { match diff { diff::Result::Left(l) => println!("-{}", l), @@ -72,13 +76,18 @@ mod stack_height { ( $name:ident ) => { #[test] fn $name() { - run_diff_test("stack-height", concat!(stringify!($name), ".wat"), |input| { - let module = - elements::deserialize_buffer(input).expect("Failed to deserialize"); - let instrumented = instrument::inject_stack_limiter(module, 1024) - .expect("Failed to instrument with stack counter"); - elements::serialize(instrumented).expect("Failed to serialize") - }); + run_diff_test( + "stack-height", + concat!(stringify!($name), ".wat"), + concat!(stringify!($name), ".wat"), + |input| { + let module = + elements::deserialize_buffer(input).expect("Failed to deserialize"); + let instrumented = instrument::inject_stack_limiter(module, 1024) + .expect("Failed to instrument with stack counter"); + elements::serialize(instrumented).expect("Failed to serialize") + }, + ); } }; } @@ -96,27 +105,53 @@ mod gas { use super::*; macro_rules! def_gas_test { - ( $name:ident ) => { + ( ($input:ident, $name1:ident, $name2:ident) ) => { #[test] - fn $name() { - run_diff_test("gas", concat!(stringify!($name), ".wat"), |input| { - let rules = instrument::gas_metering::ConstantCostRules::default(); + fn $name1() { + run_diff_test( + "gas", + concat!(stringify!($input), ".wat"), + concat!(stringify!($name1), ".wat"), + |input| { + let rules = gas_metering::ConstantCostRules::default(); - let module: Module = - elements::deserialize_buffer(input).expect("Failed to deserialize"); - let module = module.parse_names().expect("Failed to parse names"); + let module: elements::Module = + elements::deserialize_buffer(input).expect("Failed to deserialize"); + let module = module.parse_names().expect("Failed to parse names"); + let backend = gas_metering::host_function::Injector::new("env", "gas"); - let instrumented = instrument::gas_metering::inject(module, &rules, "env") - .expect("Failed to instrument with gas metering"); - elements::serialize(instrumented).expect("Failed to serialize") - }); + let instrumented = gas_metering::inject(module, backend, &rules) + .expect("Failed to instrument with gas metering"); + elements::serialize(instrumented).expect("Failed to serialize") + }, + ); + } + + #[test] + fn $name2() { + run_diff_test( + "gas", + concat!(stringify!($input), ".wat"), + concat!(stringify!($name2), ".wat"), + |input| { + let rules = gas_metering::ConstantCostRules::default(); + + let module: elements::Module = + elements::deserialize_buffer(input).expect("Failed to deserialize"); + let module = module.parse_names().expect("Failed to parse names"); + let backend = gas_metering::mutable_global::Injector::new("gas_left"); + let instrumented = gas_metering::inject(module, backend, &rules) + .expect("Failed to instrument with gas metering"); + elements::serialize(instrumented).expect("Failed to serialize") + }, + ); } }; } - def_gas_test!(ifs); - def_gas_test!(simple); - def_gas_test!(start); - def_gas_test!(call); - def_gas_test!(branch); + def_gas_test!((ifs, ifs_host_fn, ifs_mut_global)); + def_gas_test!((simple, simple_host_fn, simple_mut_global)); + def_gas_test!((start, start_host_fn, start_mut_global)); + def_gas_test!((call, call_host_fn, call_mut_global)); + def_gas_test!((branch, branch_host_fn, branch_mut_global)); } diff --git a/tests/expectations/gas/branch.wat b/tests/expectations/gas/branch_host_fn.wat similarity index 100% rename from tests/expectations/gas/branch.wat rename to tests/expectations/gas/branch_host_fn.wat diff --git a/tests/expectations/gas/branch_mut_global.wat b/tests/expectations/gas/branch_mut_global.wat new file mode 100644 index 0000000..9cf9650 --- /dev/null +++ b/tests/expectations/gas/branch_mut_global.wat @@ -0,0 +1,47 @@ +(module + (type (;0;) (func (result i32))) + (type (;1;) (func (param i64))) + (func $fibonacci_with_break (;0;) (type 0) (result i32) + (local $x i32) (local $y i32) + i64.const 24 + call 1 + block ;; label = @1 + i32.const 0 + local.set $x + i32.const 1 + local.set $y + local.get $x + local.get $y + local.tee $x + i32.add + local.set $y + i32.const 1 + br_if 0 (;@1;) + i64.const 16 + call 1 + local.get $x + local.get $y + local.tee $x + i32.add + local.set $y + end + local.get $y + ) + (func (;1;) (type 1) (param i64) + global.get 0 + local.get 0 + i64.ge_u + if ;; label = @1 + global.get 0 + local.get 0 + i64.sub + global.set 0 + else + i64.const -1 + global.set 0 + unreachable + end + ) + (global (;0;) (mut i64) i64.const 0) + (export "gas_left" (global 0)) +) \ No newline at end of file diff --git a/tests/expectations/gas/call.wat b/tests/expectations/gas/call_host_fn.wat similarity index 100% rename from tests/expectations/gas/call.wat rename to tests/expectations/gas/call_host_fn.wat diff --git a/tests/expectations/gas/call_mut_global.wat b/tests/expectations/gas/call_mut_global.wat new file mode 100644 index 0000000..b730b0a --- /dev/null +++ b/tests/expectations/gas/call_mut_global.wat @@ -0,0 +1,38 @@ +(module + (type (;0;) (func (param i32 i32) (result i32))) + (type (;1;) (func (param i64))) + (func $add_locals (;0;) (type 0) (param $x i32) (param $y i32) (result i32) + (local $t i32) + i64.const 16 + call 2 + local.get $x + local.get $y + call $add + local.set $t + local.get $t + ) + (func $add (;1;) (type 0) (param $x i32) (param $y i32) (result i32) + i64.const 14 + call 2 + local.get $x + local.get $y + i32.add + ) + (func (;2;) (type 1) (param i64) + global.get 0 + local.get 0 + i64.ge_u + if ;; label = @1 + global.get 0 + local.get 0 + i64.sub + global.set 0 + else + i64.const -1 + global.set 0 + unreachable + end + ) + (global (;0;) (mut i64) i64.const 0) + (export "gas_left" (global 0)) +) \ No newline at end of file diff --git a/tests/expectations/gas/ifs.wat b/tests/expectations/gas/ifs_host_fn.wat similarity index 100% rename from tests/expectations/gas/ifs.wat rename to tests/expectations/gas/ifs_host_fn.wat diff --git a/tests/expectations/gas/ifs_mut_global.wat b/tests/expectations/gas/ifs_mut_global.wat new file mode 100644 index 0000000..f79aee9 --- /dev/null +++ b/tests/expectations/gas/ifs_mut_global.wat @@ -0,0 +1,38 @@ +(module + (type (;0;) (func (param i32) (result i32))) + (type (;1;) (func (param i64))) + (func (;0;) (type 0) (param $x i32) (result i32) + i64.const 13 + call 1 + i32.const 1 + if (result i32) ;; label = @1 + i64.const 14 + call 1 + local.get $x + i32.const 1 + i32.add + else + i64.const 13 + call 1 + local.get $x + i32.popcnt + end + ) + (func (;1;) (type 1) (param i64) + global.get 0 + local.get 0 + i64.ge_u + if ;; label = @1 + global.get 0 + local.get 0 + i64.sub + global.set 0 + else + i64.const -1 + global.set 0 + unreachable + end + ) + (global (;0;) (mut i64) i64.const 0) + (export "gas_left" (global 0)) +) \ No newline at end of file diff --git a/tests/expectations/gas/simple.wat b/tests/expectations/gas/simple_host_fn.wat similarity index 100% rename from tests/expectations/gas/simple.wat rename to tests/expectations/gas/simple_host_fn.wat diff --git a/tests/expectations/gas/simple_mut_global.wat b/tests/expectations/gas/simple_mut_global.wat new file mode 100644 index 0000000..9b75798 --- /dev/null +++ b/tests/expectations/gas/simple_mut_global.wat @@ -0,0 +1,43 @@ +(module + (type (;0;) (func)) + (type (;1;) (func (param i64))) + (func (;0;) (type 0) + i64.const 13 + call 2 + i32.const 1 + if ;; label = @1 + i64.const 12 + call 2 + loop ;; label = @2 + i64.const 13 + call 2 + i32.const 123 + drop + end + end + ) + (func (;1;) (type 0) + i64.const 12 + call 2 + block ;; label = @1 + end + ) + (func (;2;) (type 1) (param i64) + global.get 0 + local.get 0 + i64.ge_u + if ;; label = @1 + global.get 0 + local.get 0 + i64.sub + global.set 0 + else + i64.const -1 + global.set 0 + unreachable + end + ) + (global (;0;) (mut i64) i64.const 0) + (export "simple" (func 0)) + (export "gas_left" (global 0)) +) \ No newline at end of file diff --git a/tests/expectations/gas/start.wat b/tests/expectations/gas/start_host_fn.wat similarity index 100% rename from tests/expectations/gas/start.wat rename to tests/expectations/gas/start_host_fn.wat diff --git a/tests/expectations/gas/start_mut_global.wat b/tests/expectations/gas/start_mut_global.wat new file mode 100644 index 0000000..5a23e4b --- /dev/null +++ b/tests/expectations/gas/start_mut_global.wat @@ -0,0 +1,36 @@ +(module + (type (;0;) (func (param i32 i32))) + (type (;1;) (func)) + (type (;2;) (func (param i64))) + (import "env" "ext_return" (func $ext_return (;0;) (type 0))) + (import "env" "memory" (memory (;0;) 1 1)) + (func $start (;1;) (type 1) + i64.const 15 + call 3 + i32.const 8 + i32.const 4 + call $ext_return + unreachable + ) + (func (;2;) (type 1)) + (func (;3;) (type 2) (param i64) + global.get 0 + local.get 0 + i64.ge_u + if ;; label = @1 + global.get 0 + local.get 0 + i64.sub + global.set 0 + else + i64.const -1 + global.set 0 + unreachable + end + ) + (global (;0;) (mut i64) i64.const 0) + (export "call" (func 2)) + (export "gas_left" (global 0)) + (start $start) + (data (;0;) (i32.const 8) "\01\02\03\04") +) \ No newline at end of file diff --git a/tests/overhead.rs b/tests/overhead.rs index 066f34c..c629275 100644 --- a/tests/overhead.rs +++ b/tests/overhead.rs @@ -1,9 +1,10 @@ use std::{ - fs::{read, read_dir}, + fs::{read, read_dir, ReadDir}, path::PathBuf, }; use wasm_instrument::{ - gas_metering, inject_stack_limiter, + gas_metering::{self, host_function, mutable_global, ConstantCostRules}, + inject_stack_limiter, parity_wasm::{deserialize_buffer, elements::Module, serialize}, }; @@ -14,60 +15,157 @@ fn fixture_dir() -> PathBuf { path } -/// Print the overhead of applying gas metering, stack height limiting or both. -/// -/// Use `cargo test print_overhead -- --nocapture`. -#[test] -fn print_size_overhead() { - let mut results: Vec<_> = read_dir(fixture_dir()) - .unwrap() +use gas_metering::Backend; +fn gas_metered_mod_len(orig_module: Module, backend: B) -> (Module, usize) { + let module = gas_metering::inject(orig_module, backend, &ConstantCostRules::default()).unwrap(); + let bytes = serialize(module.clone()).unwrap(); + let len = bytes.len(); + (module, len) +} + +fn stack_limited_mod_len(module: Module) -> (Module, usize) { + let module = inject_stack_limiter(module, 128).unwrap(); + let bytes = serialize(module.clone()).unwrap(); + let len = bytes.len(); + (module, len) +} + +struct InstrumentedWasmResults { + filename: String, + original_module_len: usize, + stack_limited_len: usize, + gas_metered_host_fn_len: usize, + gas_metered_mut_glob_len: usize, + gas_metered_host_fn_then_stack_limited_len: usize, + gas_metered_mut_glob_then_stack_limited_len: usize, +} + +fn size_overheads_all(files: ReadDir) -> Vec { + files .map(|entry| { let entry = entry.unwrap(); - let (orig_len, orig_module) = { - let bytes = read(&entry.path()).unwrap(); + let filename = entry.file_name().into_string().unwrap(); + + let (original_module_len, orig_module) = { + let bytes = match entry.path().extension().unwrap().to_str() { + Some("wasm") => read(&entry.path()).unwrap(), + Some("wat") => + wat::parse_bytes(&read(&entry.path()).unwrap()).unwrap().into_owned(), + _ => panic!("expected fixture_dir containing .wasm or .wat files only"), + }; + let len = bytes.len(); let module: Module = deserialize_buffer(&bytes).unwrap(); (len, module) }; - let (gas_metering_len, gas_module) = { - let module = gas_metering::inject( - orig_module.clone(), - &gas_metering::ConstantCostRules::default(), - "env", - ) - .unwrap(); - let bytes = serialize(module.clone()).unwrap(); - let len = bytes.len(); - (len, module) - }; - let stack_height_len = { - let module = inject_stack_limiter(orig_module, 128).unwrap(); - let bytes = serialize(module).unwrap(); - bytes.len() - }; - let both_len = { - let module = inject_stack_limiter(gas_module, 128).unwrap(); - let bytes = serialize(module).unwrap(); - bytes.len() - }; - let overhead = both_len * 100 / orig_len; + let (gm_host_fn_module, gas_metered_host_fn_len) = gas_metered_mod_len( + orig_module.clone(), + host_function::Injector::new("env", "gas"), + ); - ( - overhead, - format!( - "{:30}: orig = {:4} kb, gas_metering = {} %, stack_limiter = {} %, both = {} %", - entry.file_name().to_str().unwrap(), - orig_len / 1024, - gas_metering_len * 100 / orig_len, - stack_height_len * 100 / orig_len, - overhead, - ), - ) + let (gm_mut_global_module, gas_metered_mut_glob_len) = + gas_metered_mod_len(orig_module.clone(), mutable_global::Injector::new("gas_left")); + + let stack_limited_len = stack_limited_mod_len(orig_module).1; + + let (_gm_hf_sl_mod, gas_metered_host_fn_then_stack_limited_len) = + stack_limited_mod_len(gm_host_fn_module); + + let (_gm_mg_sl_module, gas_metered_mut_glob_then_stack_limited_len) = + stack_limited_mod_len(gm_mut_global_module); + + InstrumentedWasmResults { + filename, + original_module_len, + stack_limited_len, + gas_metered_host_fn_len, + gas_metered_mut_glob_len, + gas_metered_host_fn_then_stack_limited_len, + gas_metered_mut_glob_then_stack_limited_len, + } }) - .collect(); - results.sort_unstable_by(|a, b| b.0.cmp(&a.0)); - for entry in results { - println!("{}", entry.1); + .collect() +} + +fn calc_size_overheads() -> Vec { + let mut wasm_path = fixture_dir(); + wasm_path.push("wasm"); + + let mut wat_path = fixture_dir(); + wat_path.push("wat"); + + let mut results = size_overheads_all(read_dir(wasm_path).unwrap()); + let results_wat = size_overheads_all(read_dir(wat_path).unwrap()); + + results.extend(results_wat); + + results +} + +/// Print the overhead of applying gas metering, stack +/// height limiting or both. +/// +/// Use `cargo test print_size_overhead -- --nocapture`. +#[test] +fn print_size_overhead() { + let mut results = calc_size_overheads(); + results.sort_unstable_by(|a, b| { + b.gas_metered_mut_glob_then_stack_limited_len + .cmp(&a.gas_metered_mut_glob_then_stack_limited_len) + }); + + for r in results { + let filename = r.filename; + let original_size = r.original_module_len / 1024; + let stack_limit = r.stack_limited_len * 100 / r.original_module_len; + let host_fn = r.gas_metered_host_fn_len * 100 / r.original_module_len; + let mut_glob = r.gas_metered_mut_glob_len * 100 / r.original_module_len; + let host_fn_sl = r.gas_metered_host_fn_then_stack_limited_len * 100 / r.original_module_len; + let mut_glob_sl = + r.gas_metered_mut_glob_then_stack_limited_len * 100 / r.original_module_len; + + println!( + "{filename:30}: orig = {original_size:4} kb, stack_limiter = {stack_limit} %, \ + gas_metered_host_fn = {host_fn} %, both = {host_fn_sl} %,\n \ + {:69} gas_metered_mut_global = {mut_glob} %, both = {mut_glob_sl} %", + "" + ); + } +} + +/// Compare module size overhead of applying gas metering with two methods. +/// +/// Use `cargo test print_gas_metered_sizes -- --nocapture`. +#[test] +fn print_gas_metered_sizes() { + let overheads = calc_size_overheads(); + let mut results = overheads + .iter() + .map(|r| { + let diff = (r.gas_metered_mut_glob_len * 100 / r.gas_metered_host_fn_len) as i32 - 100; + (diff, r) + }) + .collect::>(); + results.sort_unstable_by(|a, b| b.0.cmp(&a.0)); + + println!( + "| {:28} | {:^16} | gas metered/host fn | gas metered/mut global | size diff |", + "fixture", "original size", + ); + println!("|{:-^30}|{:-^18}|{:-^21}|{:-^24}|{:-^11}|", "", "", "", "", "",); + for r in results { + let filename = &r.1.filename; + let original_size = &r.1.original_module_len / 1024; + let host_fn = &r.1.gas_metered_host_fn_len / 1024; + let mut_glob = &r.1.gas_metered_mut_glob_len / 1024; + let host_fn_percent = &r.1.gas_metered_host_fn_len * 100 / r.1.original_module_len; + let mut_glob_percent = &r.1.gas_metered_mut_glob_len * 100 / r.1.original_module_len; + let host_fn = format!("{host_fn} kb ({host_fn_percent:}%)"); + let mut_glob = format!("{mut_glob} kb ({mut_glob_percent:}%)"); + let diff = &r.0; + println!( + "| {filename:28} | {original_size:13} kb | {host_fn:>19} | {mut_glob:>22} | {diff:+8}% |" + ); } }