The paper makes the following claims on pg. 2 (Comments to AEC reviewers after :):
-
A collection of benchmark programs: these are POSIX shell programs that perform a variety of tasks.
-
Permanent and scalable storage of varying inputs: "permanent" means Zenodo; "scalable" means Brown university servers, which allows for faster download compared to Zenodo. There are three input sizes---
mintake about a few minutes,smalltake a few hours, andfulltake several days---but note AEC reviewers are encouraged to only try the first two sizes. -
Tooling and automation for reuse: additional scripts automating dependency setup, input validation, and correctness checking.
-
Characterization and implications: additional infrastructure performing static and dynamic program analysis of the benchmark programs.
This artifact targets the following badges:
- Artifact available: Reviewers are expected to confirm that the benchmark programs, their inputs, and automation scripts are all publicly available (about 10 minutes).
- Artifact functional: Reviewers are expected to confirm sufficient documentation, key components as described in the paper, and execution with
mininputs (about 20 minutes); execution withsmallinputs (3 hours)is encouraged only after completion of the full artifact evaluation. - Results reproducible: Reviewers are expected to reproduce key results of sections 3, 5, 6, and 7 of the paper (2 hours).
Confirm that the benchmark programs, their inputs, and automation scripts are all publicly available:
-
The benchmark code is permanently hosted at: https://github.com/binpash/benchmarks
-
Data are available on permanent (i.e., archival-level durable, but slow) and scalable (i.e., fast, but not archival-level durable) storage:
- Permanent archival storage on Zenodo, split across multiple DOIs due to Zenodo's max 50GB limit (AEC Reviewers: this is slow, do not try to download—just confirm their existence): code & software dependencies,
smallinputs;fullin 5 parts: 1, 2 3, 4, 5.
- Permanent archival storage on Zenodo, split across multiple DOIs due to Zenodo's max 50GB limit (AEC Reviewers: this is slow, do not try to download—just confirm their existence): code & software dependencies,
- Scalable storage on a Brown University cluster (additional clusters being set up at Stevens and UCLA), accessible via
https://atlas.cs.brown.edu/data(see the full table for all inputs in Appendix I: All Inputs below.)
- Additional scripts are available in the
infrastructure/directory of the repository.
AEC Reviewers: From this point on, scripts use the Brown links, as Zenodo is significantly slower.
Confirm sufficient documentation, key components as described in the paper, and execution with min inputs (about 20 minutes):
-
Documentation: The top-level README file and benchmark-specific documentation available within each benchmark directory, containing information about each computation, input data, and expected output: aurpkg, bio, covid-mts, file-enc, log-analysis, makeself, max-temp, media-conv, nlp, oneliners, riker, sklearn, unix50, vps-audit, web-index.
-
Key components: 15 benchmarks (i.e., aurpkg, bio, covid-mts, file-enc, log-analysis, makeself, max-temp, media-conv, nlp, oneliners, riker, sklearn, unix50, vps-audit, web-index) and several scripts in
infrastructure/. -
Exercisability: Instructions below set up an Debian-based container and run all benchmarks on
mininputs (all.sh) or run specific benchmarks.
At this point, run
git clone https://github.com/binpash/benchmarksandcd benchmarks.
Quickstart: Running a single benchmark (e.g., nlp): To quickly execute a specific benchmark such as nlp, invoke the top-level main.sh script—which will set up a Debian-based container image, install dependencies, download benchmark-specific min inputs, and execute the benchmark (2 minutes):
./main.sh nlpThe reason this is easier to evaluate in a container is that some scripts assume that some dependencies on the host system (e.g. git). The scripts also assume a docker executable in the PATH, which can be configured with the KOALA_CONTAINER_CMD.
Complete run: Running all benchmarks: To execute the full set of benchmarks, invoke the top-level all.sh script—which essentially runs the previous command in a loop (20 minutes):
./all.shNot recommended on the first run:
Both scripts above take additional optional parameters: Using
--smallwill execute the benchmark(s) with thesmallinputs (about 3 hours) and--barewill execute the benchmarks on the host system (which might not satisfy dependencies). To replace the shell interpreter,settheKOALA_SHELLvariable — e.g.,KOALA_SHELL="bash --posix".
The key results of the analysis are the following:
- Principal Component Analysis (§3, Fig. 2);
- Syntactic Characterization & Analysis (§5, Fig. 4 & 5);
- Dynamic Characterization & Analysis (§6, Fig. 6).
Most of these results are easily reproducible by running specific scripts in the repo. A part of PCA depends on embeddings, whose calculation incurs some financial costs due to OpenAI—thuse we have cashed these embeddings in the repo. Although summarized earlier in the paper (§3), PCA depends on the results of the static and dynamic analyses, so we start with no. 2 and 3 before returning to no. 1.
Preparation: The dynamic analysis requires running Koala in a pre-set container due to elevated privileges:
mkdir -p /tmp/plots
sudo docker pull ghcr.io/binpash/benchmarks:latest
sudo docker run -it --rm -v "/tmp/plots":/tmp/plots ghcr.io/binpash/benchmarks:latest bash
./setup.sh # Inside the containerStatic characterization: To generate the static characterization, run the following commands:
./infrastructure/static-analysis.sh /tmp/plotsThis will place the heatmap plot showing the results of the static analysis in the /tmp/plots directory on the host system.
Dynamic characterization: To generate the dynamic characterization, run the following commands: Note: This step will run the entire suite again, now having tracing enabled (~3 hours).
./infrastructure/dynamic-analysis.sh --smallPrincipal component analysis: Part of the PCA analysis involves sending the source code of the benchmarks to a remote embedding model using OpenAI's API; for convenience and cost concerns, we provide the results the embedding model in infrastructure/data/embeddings.csv (generatable by running python3 infrastructure/do_embedding.py).
./infrastructure/pc-analysis.sh /tmp/plots/pca.pdfThis section is about setting up and running other systems on the Koala benchmarks. Crucially:
- The difficulty of evaluating prototype systems using Koala depends on these systems (i.e., not our contribution) as well as access to specific hardware (e.g., large multiprocessors).
- The authors of these systems are free to make any modifications to the benchmarks, the inputs, or the scripts according to the contributions claimed by their systems, not Koala.
Therefore, this evaluation outside the scope of the Koala artifact evaluation.
For questions or bug reports, please contact koala@brown.edu or open an issue on GitHub.
The table below contains all links to the inputs. AEC reviewers: Some of these inputs are extremely large and hosted on low-bandwidth permanent-storage services such as Zenodo. To confirm existence, simply click on the URL to to start a download and then stop downloading a few seconds later.
| Benchmark | Min | Small | Full |
|---|---|---|---|
aurpkg |
Github Repo | Brown Zenodo | Brown Zenodo |
bio |
Github Repo | Brown Zenodo | Brown Zenodo |
covid-mts |
Github Repo | Brown Zenodo | Brown Zenodo |
file-enc |
Github Repo | Brown Zenodo | Brown Zenodo |
log-analysis |
Github Repo | Brown Zenodo | Brown Zenodo |
makeself |
No inputs | No inputs | No inputs |
max-temp |
Github Repo | Brown Zenodo | Brown Zenodo |
media-conv |
Github Repo | Brown Zenodo | Brown Zenodo |
nlp |
Brown | Brown Zenodo | Brown Zenodo |
oneliners |
Brown | Brown Zenodo | Brown Zenodo |
riker |
Github Repo | Brown Zenodo | Brown Zenodo |
sklearn |
Github Repo | Brown Zenodo | Brown Zenodo |
unix50 |
Github Repo | Brown Zenodo | Brown Zenodo |
vps-audit |
No inputs | No inputs | No inputs |
web-index |
Brown | Brown Zenodo | Brown Zenodo |