Add RaceBench workload (blackscholes, streamcluster, fluidanimate)#57
Add RaceBench workload (blackscholes, streamcluster, fluidanimate)#57nkaretnikov wants to merge 19 commits into
Conversation
There was a problem hiding this comment.
note: these inputs are binary files
There was a problem hiding this comment.
note: these inputs are also binary files
|
Note: I will try to do the Bedrock run again after setting the margin to 16 on my CPU and see if I can get reproducible results with the same seed. |
|
I have a local patch which causes Bedrock to abort immediately when PEBS skid exceeds host margin (the current behavior can be achieved with an environment variable Otherwise, I might need to add a similar one for APIC timer late injects. Will submit as separate PRs once I'm done with testing. I'm also thinking about bumping the margin from 8 to 16 on Ice Lake-SP because every other run now aborts due to the skid. This is with 8: These warnings are runs aborting at boot due to the skid. |
|
I've pushed the code that triggers an abort when PEBS margin is exceeded and bumped the margin to 16 on Ice Lake-SP, which allows to clear that check. I then let RaceBench run overnight: This produced the same crash as earlier, but on a different seed: Unfortunately, this is still not reproducible: The reason is most likely PEBS late injects, so I will add an abort on that condition as well. As mentioned earlier elsewhere, these tend to happen during early boot, so I will also need to do what I did on the I will then do another run and see if the seed would be reproducible with that config. If so, I'll submit the abort patches and the PEBS margin increase as separate PRs, so that they could be merged independently. Then I will rebase this branch, so that only RaceBench changes are part of this diff. |
|
I've just pushed 3 more commits:
With these, I conducted several tests:
Commands used:
|
|
CI passes again and determinism issues are fixed, so I'm doing another night run to see if (1) I'm able to reproduce the same bug (2) the bug is reproducible given a (boot seed, child seed) pair. |
|
The night run finished (which I have not pushed yet) and triggered the same bug, now at seed 77: But I couldn't reproduce this with standalone parent/child workflows or by rerunning the above command from seed 76 to 78. I did notice, however, that when I ran the fork-parent workload, the image was rebuilt. The workload is scheduler based, but I wonder if a different guest image could be causing this, so I'm going to make sure that is reproducible as well. The reason this likely happens is because There's also this code: where |
|
The new run that was executing during the night did not trigger any bugs, so I'm running one more, from guest seed 3001. |
This PR copies part of the RaceBench dataset and adds it as a workload, so we could use it to benchmark various scheduling strategies as well as detection oracles. The files are copied for security and reproducibility reasons. For security reasons, I also do not copy the provided binaries, which are used to demonstrate that the bugs are reachable.
Information on RaceBench:
.1samples copied from here, with some data removed)The programs added are part of the PARSEC benchmark suite (Princeton Application Repository for Shared-memory Computers), which is a standard set of multithreaded programs used to study parallel/shared-memory performance, but they have bugs injected into them by the RaceBench authors.
Why RaceBench:
RACEBENCH_STATfile records which of the target's 20 injected bugs(trigger_num[bug_id])was hit. With 3 files, we get 60 bugs total.My tests outside of Bedrock:
My tests with Bedrock:
Now that we have these results, we should check the following:
max pebs skid > margin_for_host_cpu(9 > 8), so there's non-determinism):or the following from root (for full logs):
Instead of adding this to CI, the proposed workflow would be to run this locally and share results in PR comments (compared to
main) because:The following files provide documentation on the workload and scripts:
workloads/racebench/README.mdworkloads/racebench/scripts/README.md.Comparing the files in this PR vs the files in RaceBench (cb79cc578e064e026e0ed041c8a24501c4d91f58):
Bedrock:
RaceBench:
Diff: