You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Initial commit for WasmScore"
* add github actions to compile and test x64 benchmarks (#1)
* Add github actions to compile and test x64 benchmarks
* Refactor driver to match refactored sightglass
* Continue refactor and cleanup. Better use of df
* Prints out efficiency and wasm scores
* Remove unneeded comments
* Add printing of results to a file and the screen
* Improve quiet printing
* Add simdscore placeholder and validate runall
* Update tag for docker images
* Update workflow to include running of all available benchmarks
* Update wasmtime commit
* Add code of conduct
Code of conduct is a copy from wasmtime repo.
* Add contributor documentation
* Add license agreement
* Update security policy
* Add dependabot support for pip
* Update simplify config.inc
* Use a local benchmarks directory instead of the Sightglass version
* Fix for failures caused by missing results directory on some runs
* Remove unnecessary installs in Dockerfile
* Separate security section to it's own file
* Update printed comments
* Update container entry point and build message
* Update README and add example screenshots in asset folder
If you think you have found a security issue in WasmScore, please file a github issue with details, reproducible steps, and a clearly defined impact.
17
-
Once an issue is reported, we will assess, respond, and priortize a solution. In the case that WasmScore has planned updates at a regular time candence, the fix of a security vulnerability may warrant an intermediate release of WasmScore depending on the severity of the vulnerability.
This benchmark is designed to provide a simple, convenient and portable view of the performance of WebAssembly outside the browser on the underlying platform it is run on. It uses a containerized suite of real codes and micros leveraged directly from [Sightglass](https://github.com/bytecodealliance/sightglass) to benchmark the platform and provide a “WasmScore” that is based on a formula that aggregates execution time. In addition, the driver for the benchmark serves as an easy-to-use tool for executing any user determined assortment of Sightglass benchmarks supported by the driver.
4
-
5
-
One of the most important and challenging aspect of benchmarking is deciding how to interpret the results; should you consider the results to be good or bad? To decide, you really need context on what it is you are trying to achieve, and this often starts with a baseline used to serve as a point of comparison. That baseline could be the execution of that same original source but before some transformation was applied when lowered to WebAssembly, or that baseline could be a modified configuration of the runtime that executes the WebAssembly. In the case of WasmScore, a novel aspect is that for every Wasm real code and micro that is run, WasmScore also executes the native versions of those code compiled from the same high-level source used to generate the Wasm. In this way WasmScore provides a comparison point for the Wasm performance which will ideally be the theoretical upper for the performance of WebAssembly. This feature allows a user to quickly gauge the performance impact of using Wasm instead of using a native compile of the same code when run on that particular platform. It allows developers to see opportunity to improve compilers, or to improve Wasm runtimes, or improve the Wasm spec, or to suggest other solutions (such as Wasi) to address gaps.
6
-
7
-
Another important feature of WasmScore is simplicity and convenience. Specifically, the user is not expected to have to build the benchmark where they might have to deal with installing or updating dependencies. The user is also not expected contend interpreting the need for turning on or off a myriad of flags and features; to get a platforms WasmScore the user simply runs wasmscore.sh inside the container. Still, while it is meant for the user to simply pull a containerized image and then run the benchmark on the desired platform without worrying, WasmScore can of course be built and then run either within or outside (TODO) the containerized environment. In either case is intended for the compile of all codes to properly utilizes underlying hardware features. To that end, the ideal use case and indeed the target use case for WasmScore is for a quick, simple and consistent cross platform view of Wasm performance. The benchmark especially wants to target usecases and applications that are emerging for Wasm in standalone client and cloud environments. WasmScore is intended to be run on X86-64 and AArch64 Linux platforms.
8
-
3
+
## Intro
4
+
WasmScore aims to provide a view of WebAssembly performance when executed outside the browser. It uses a containerized suite of benchmarks (both user facing codes and purpose built benchmarks) and leverages [Sightglass](https://github.com/bytecodealliance/sightglass) to benchmark the underline platform. A score based on a formula that aggregates execution time of the suites that make up the "wasmscore" test is provided. In addition to scoring wasm performance, the benchmark is also a tool capable of executing any assortment of other tests, suites, or benchmarks supported by the driver. This WasmScore is work in development.
5
+
6
+
## Description
7
+
One of the most important and challenging aspect of benchmarking is deciding how to interpret the results; should you consider the results to be good or bad? To decide, you really need context on what it is you are trying to achieve, and this often starts with a baseline used to serve as a point of comparison. For example, that baseline could be the execution of that same original source but before some transformation was applied when lowered to WebAssembly, or that baseline could be a modified configuration of the runtime that executes the WebAssembly. In the case of WasmScore, for every Wasm real code and micro that is run, WasmScore also executes the native code compile from the same high-level source used to generate the Wasm to serve as a baseline. In this way WasmScore provides a comparison point for the Wasm performance which will ideally be the theoretical upper for the performance of WebAssembly. This allows a user to quickly gauge the performance impact of using Wasm instead of using a native compile of the same code when run on that particular platform. It allows developers to see opportunity to improve compilers, or to improve Wasm runtimes, or improve the Wasm spec, or to suggest other solutions (such as Wasi) to address gaps.
8
+
9
+
## Benchmarks
10
+
Typically a benchmark reports either the amount of work done over a constant amount of time or it reports the time taken to do a constant amount of work. The benchmarks here all do the later. The initial commit of the benchmarks avaialble have been pulled Sightglass however the benchmarks used with WasmScore come from the local directory here and have no dependency on the benchmarks stored there. However, how the benchmarks here are built and run directly dependent on changes to the external Sightglass repo.
11
+
12
+
Also, benchmarks are often categorized based on their origin. Two such buckets of benchmarks are (1) codes written with the intent of being user facing (library paths, application use cases) and (2) codes written specifically to benchmark some important/common code construct or platform feature. WasmScore will not necessarily favor either of these benchmarking buckets as both are valuable for the evaluation of standalone Wasm performance depending on what you want to know. The extent that it does will depending on the test run, where currently there is only the primary "wasmscore" test though a simdscore test is in the plans.
13
+
14
+
## Goals
15
+
A standalone benchmark that is:
16
+
- Convenient to build and run with easy to interpret results
17
+
- Is portable and enables cross-platform comparisons
18
+
- Provides a breadth of coverage for current standalone binaries
19
+
- Is convenient to analyze
20
+
21
+
## WasmScore Suites
22
+
Any number of test can be created but WasmScore is the initial and default test. It includes a mix of relevant in use codes and targeted benchmarks Wasm performance outside the browser that is broken down into categories:
23
+
- App: [‘Meshoptimizer’]
24
+
- Core: [‘Ackermann', ‘Ctype', ‘Fibonacci’]
25
+
- Crypto: [‘Base64', ‘Ed25519', ‘Seqhash']
26
+
- AI: (Coming)
27
+
- Regex: (Coming)
28
+
29
+
## Plan
30
+
Next steps include:
31
+
- Improving stability and user experience
32
+
- Adding benchmarks to the AI, Regex, and APP suites
33
+
- Adding more benchmarks
34
+
- Complete the SIMD test
35
+
- Publish a list of planned milestone
9
36
10
37
## Usage
11
38
@@ -15,17 +42,17 @@ Download and run the latest prebuilt benchmark image:
docker run -it ghcr.io/jlb6740/wasmscore/wasmscore_aarch64:latest /bin/bash /wasmscore.sh
55
+
docker run -it ghcr.io/bytecodealliance/wasm-score/wasmscore_aarch64_linux:latest
29
56
```
30
57
31
58
### Build and Run Yourself
@@ -36,29 +63,10 @@ To build:
36
63
```
37
64
To run from this local build:
38
65
```
39
-
docker run -ti wasmscore /bin/bash wasmscore.sh --help
66
+
docker run -ti wasmscore <--help>
40
67
```
41
68
42
69
To build containerless:
43
70
> Not yet supported
44
71
45
-
### Other Useful Commands
46
-
47
-
For a detached setup that allows for copying files to the image or entering the container (being mindful of the container name), use the following commands:
If you think you have found a security issue in WasmScore, please file a github issue with details, reproducible steps, and a clearly defined impact.
2
+
Once an issue is reported, we will assess, respond, and priortize a solution. In the case that WasmScore has planned updates at a regular time candence, the fix of a security vulnerability may warrant an intermediate release of WasmScore depending on the severity of the vulnerability.
0 commit comments