PIBE ASPLOS'21 reproduction artifact.
Copyright 2021 Victor Duta
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- kernel/backport: Linux Kernel 5.1.0 modified with support for LLVM LTO, and integrated with our optimization passes.
- playground/images: Contains all precompiled kernel binaries for the evaluation (details here).
- playground/performance: After the experiment finishes you will find a folder for each benchmarked kernel configuration here.
- playground/metadata: portable Apache2 (named apache2) and LMBench3 (dubbed lmbench3) workloads. All custom workloads created by user go here.
- tools/lmbench3: LMBench benchmarking suite v3 used for the evaluation.
- tools/llvm_10: Modified LLVM 10 framework with support for lvi-cfi and return retpolines.
- lkm: Profiling kernel module source tree.
- passes: PIBE's LLVM passes.
-
Most relevant passes are:
- vuprofiler: enables our profiling instrumentation on the Linux Kernel.
- linearpromotion: the indirect call promotion pass.
- vuinliner: our PGO inlining pass.
- icp_convert: transforms portable workloads obtained through profiling into LLVM sample-profile format.
-
To see how passes run in the kernel compilation pipeline check kernel/backport/scripts/link-vmlinux.sh for lto_incremental_modpost_link function.
-
- include: general include directory (used by kernel, kernel module, LLVM passes etc.)
- In case you are using a kernel newer than 5.1.0 check this.
- All experiments enabled through our workflow are detailed here.
- For information on how to map results back to their corresponding tables check our results tutorial.
- Tips about regenerating kernel binaries are provided here.
- For regenerating profiling workloads check our profiling tutorial.