Comments (6)
Cool. Then we can totally rely on docker images for running the tests. We can even build an unstable image every time a build runs in travis.
from apalache-tests.
Towards apalache-mc/apalache#182 and this issue, I've roughed out the following plan:
Instead of building each version from source, we'll can use the published docker images. We can use one script as a function from a docker image to benchmark data. A second script to take that data into a human-friendly report, and a third to take a set data and produce a summarizing report.
In types:
type exec = Docker_image
type data = CSV
type report = Markdown_file
val benchmark : exec -> data
val report : data -> report
val summary : data set -> report
val run_tests : exec set -> (reports * report)
We can then parallelize the execution by running a build matrix in our CI for each version we want to benchmark.
The implementation steps are roughly:
- Redesign the current workflows to run a single benchmark in the docker image containing the built apalache instance
- Tweak scripts to save the results to a database (which is just the current dir of CSVs)
- Tweak scripts to take a version number and extract reports from the CSV data.
- Set up CI to run the benchmarks.
from apalache-tests.
Instead of building each version from source, we'll use the published docker images
I like that. Do you know how big is the performance penalty when running images in docker?
from apalache-tests.
I like that. Do you know how big is the performance penalty when running images in docker?
It seems like, in principle, the performance penalty should be negligible, at least according to this nice SO answer. This follows from containerization just being an abstraction over the kernel services, rather than incurring the costs associated with virtualization. However, in practice it looks like it might cause a measure reduction on the order of single percentage points.
I can run some empirical tests tomorrow to see how Apalache performs on my machine in and out of containers.
One of my working assumptions here is that the important thing in the benchmarks is the relative change in a known context. Since we don't seem to mention hardware specs (or VPS specs) anywhere obvious here, I assumed the underlying system running the benchmarks isn't relevant to what we're testing. However, if we're really aiming benchmarking on the specs of some hardware or optimal system, then the containerization approach probably shouldn't be pursued!
Thoughts?
from apalache-tests.
Sweet. I'll move forward with this, then see if I can leverage any learnings to bring back into the apalache CI pipeline.
from apalache-tests.
Closed by #22
from apalache-tests.
Related Issues (15)
- Move to apalache HOT 6
- Add buggy benchmarks HOT 2
- Fix support for running tlc benchmarks HOT 5
- Migrate build system to the main apalache repo? HOT 1
- Add support for long-running benchmarks
- Support running benchmarks against the latest Apalache snapshot HOT 1
- Configure cron and manaully triggered CI jobs to run benchmarks HOT 1
- Tag benchmark runs with specifications of the machines they are run on
- extend these benchmarks with the Informal specifications,
- Fix the benchmarks to have new type annotations
- [BUG] Benchmarks are not reporting SMT clauses or arena cells
- A few issues with the Raft spec HOT 5
- Update Raft spec to TypeSystem 1.2
- Archive this repo
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apalache-tests.