Skip to content

Commit 59e0aa4

Browse files
committed
Merge branch 'main' of github.com:DistCompiler/pgo
2 parents 5c4f614 + f5cbe22 commit 59e0aa4

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

omnilink/README.md

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,45 @@ This folder contains build definitions that automate most experiments.
44
For all commands, _run them from the repo root, not here_.
55
That's where `./mill` lives.
66

7-
The build definitions are in `package.mill`, with dependencies on `util.mill` and `GitRepo.mill`.
7+
The build definitions are in `package.mill`. Everything has been consolidated into a single build file.
88

99
Note: all system dependencies are installed by the Dockerfile inside `../.devcontainer`.
1010
If you use devcontainers, it will "just work".
1111
Otherwise, make sure you have the packages listed there installed, and consider running `./mill mill.tabcomplete/install` to get tab completions on build actions.
1212
You will use them a lot.
1313

1414
Each evaluated system lives in one subfolder.
15-
Currently, `setbench` and `wiredtiger` work.
15+
Currently, `concurrentqueue`, `setbench`, `wiredtiger` and `atomic` work.
1616
Note that you will need separate permission to check out a private form of `setbench`.
1717

18+
## System Prerequisites
19+
20+
### Actual Requirements
21+
22+
- **Linux** from recent few years. Linux must be running on **bare metal or a VM**; containers on other OS will not work.
23+
- **Nix** installation (see `.devcontainer/devcontainer.json` for setup)
24+
25+
### System Configuration for rr
26+
27+
Two system-level configurations are required:
28+
29+
**1. Performance counter access:**
30+
```bash
31+
sudo sysctl kernel.perf_event_paranoid=1. # <=3
32+
```
33+
34+
**2. AMD Zen CPU workaround (AMD EPYC/Ryzen only):**
35+
```bash
36+
curl -o /tmp/zen_workaround.py https://raw.githubusercontent.com/rr-debugger/rr/master/scripts/zen_workaround.py
37+
sudo modprobe msr
38+
sudo python3 /tmp/zen_workaround.py
39+
```
40+
41+
In VMs, run these commands on the host machine.
42+
1843
## Data management
1944

20-
All data is stored in a local DuckDB database named `eval.duckdb`.
45+
All data is stored in a local SQLite database named `eval.sqlite`.
2146
It is not committed to source control, and acts as a persistent cache for recorded executions and validation results.
2247
You should not need to interact with it directly.
2348

@@ -46,10 +71,10 @@ Note that the actual count reflects any and all traces you already have in a giv
4671
*Don't try to copy `out/`.*
4772
It will just lead to broken paths and frustration.
4873

49-
The `omnilink/eval.duckdb` is a self-contained record of everything you did, including traces and counterexamples.
74+
The `omnilink/eval.sqlite` is a self-contained record of everything you did, including traces and counterexamples.
5075
Copy that into the target machines `omnilink/` dir and run the commands you need (like extracting counterexamples).
5176

52-
How to merge different `eval.duckdb` is an open question.
77+
How to merge different `eval.sqlite` is an open question.
5378
For best future proofing, add build configs rather than editing existing ones, because the same config name doing different things would be confusing.
5479
The system is built so many contradictory configs / builds / etc can coexist under different names.
5580

0 commit comments

Comments
 (0)