... | ... | @@ -2,10 +2,12 @@ |
|
|
|
|
|
<b>Student</b> - Aditya Arora (@Adi_197)
|
|
|
<b>Mentor</b> - Philipp Wendler (@PhilippWendler)
|
|
|
<b>Project</b> - [Implement Cache allocation Technology in BenchExec](https://summerofcode.withgoogle.com/projects/#6380181764177920)
|
|
|
<b>Project</b> - [Implement Cache allocation Technology in BenchExec](https://summerofcode.withgoogle.com/projects/#6380181764177920)
|
|
|
|
|
|
|
|
|
## Description
|
|
|
As part of this project we created a python CLI named [pqos_wrapper](https://gitlab.com/sosy-lab/software/pqos-wrapper) which uses `pqos` C library to perform cache allocation and monitoring. The CLI produces a JSON like output which is then easily parsed by `BenchExec` to check status of execution and related errors.
|
|
|
As part of this project we created a python CLI named [pqos_wrapper](https://gitlab.com/sosy-lab/software/pqos-wrapper) which uses `pqos` C library to perform cache allocation and monitoring. The CLI produces a JSON like output which is then easily parsed by `BenchExec` to check status of execution and related errors.
|
|
|
The CLI was then integrated with `BenchExec` to allow cache allocation and monitoring for parallel benchmarks.
|
|
|
Sample output for the CLI:
|
|
|
```
|
|
|
{
|
... | ... | @@ -39,6 +41,9 @@ Currently the `pqos_wrapper` CLI has support for the following features: |
|
|
- Cache and Memory Bandwidth Monitoring
|
|
|
|
|
|
## Integration with BenchExec
|
|
|
|
|
|
Feature: [#227](https://github.com/sosy-lab/benchexec/issues/227)
|
|
|
|
|
|
The functions of `pqos_wrapper` were integrated in `BenchExec` using subprocess. This allowed BenchExec to allocate equal and disjoint cache ways among all the parallel benchmarks which in turn reduces cache contention thus reducing the influence on one run onto another.
|
|
|
In addition to cache allocation, cache/memory bandwidth monitoring feature was integrated in BenchExec which allowed the user to monitor cache related information for their benchmarks. Following events were monitored in `BenchExec` using `pqos_wrapper` for each run:
|
|
|
- LLC Occupancy
|
... | ... | @@ -53,4 +58,11 @@ We setup various [experiments](https://gitlab.com/sosy-lab/software/pqos-wrapper |
|
|
- [min-cache-sharing](https://gitlab.com/sosy-lab/software/pqos-wrapper/tree/min-cache-sharing): In this experiment we replicated a noisy neighbour scenario where a process is using most of the cache by allocating minimum possible cache ways to each benchmark.
|
|
|
- [optimal-cache-sharing-and-isolation](https://gitlab.com/sosy-lab/software/pqos-wrapper/tree/master): In this experiment equal and isolated cache ways were allocated to each of the parallel benchmark which was used to test how cache isolation affects performance of benchmarks.
|
|
|
|
|
|
The complete details about the experiment results and experiments can be found here: [Testing L3 Cache Influence on Parallel Benchmarks](https://gitlab.com/sosy-lab/software/pqos-wrapper/wikis/Testing-L3-Cache-influence-on-parallel-benchmarks) |
|
|
\ No newline at end of file |
|
|
The complete details about the experiment results and experiments can be found here: [Testing L3 Cache Influence on Parallel Benchmarks](https://gitlab.com/sosy-lab/software/pqos-wrapper/wikis/Testing-L3-Cache-influence-on-parallel-benchmarks)
|
|
|
|
|
|
## Code Contributions
|
|
|
The [Pqos Wrapper](https://gitlab.com/sosy-lab/software/pqos-wrapper) repository was created as part of the GSoC project and the complete source code for this repository has been commited in the work period of GSoC 2019.
|
|
|
In addtion to `Pqos Wrapper`, code was contributed in `BenchExec` to integrate functions of the `pqos_wrapper` CLI. The links to the major code contributions are as follows:
|
|
|
- [Adding pqos module for Cache Allocation](https://github.com/sosy-lab/benchexec/pull/434)
|
|
|
- [Integrating monitoring feature in BenchExec](https://github.com/sosy-lab/benchexec/commit/b2eed37c745e8f38ad5bd8cc590f7c9edecf70d4)
|
|
|
- [Adding monitoring data in output xml](https://github.com/sosy-lab/benchexec/commit/cd56c0fe0733d8e7ce1a12998b5548bb64f2f196) |