Git Product home page Git Product logo

Comments (6)

konnov avatar konnov commented on September 24, 2024 1

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.

shonfeder avatar shonfeder commented on September 24, 2024

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.

konnov avatar konnov commented on September 24, 2024

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.

shonfeder avatar shonfeder commented on September 24, 2024

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.

shonfeder avatar shonfeder commented on September 24, 2024

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.

shonfeder avatar shonfeder commented on September 24, 2024

Closed by #22

from apalache-tests.

Related Issues (15)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.