Skip to content

victorduta/pibe-reproduction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

331426b · Feb 15, 2021

History

24 Commits
Dec 14, 2020
Feb 14, 2021
Dec 14, 2020
Jan 21, 2021
Dec 14, 2020
Feb 14, 2021
Dec 14, 2020
Dec 16, 2020
Dec 14, 2020
Dec 14, 2020
Feb 15, 2021
Dec 14, 2020
Dec 14, 2020
Feb 15, 2021
Jan 21, 2021
Jan 21, 2021
Dec 14, 2020
Dec 16, 2020
Dec 16, 2020
Dec 14, 2020
Dec 14, 2020
Dec 14, 2020
Dec 14, 2020
Dec 14, 2020
Jan 20, 2021
Jan 20, 2021
Dec 14, 2020
Dec 15, 2020
Dec 14, 2020
Dec 14, 2020
Dec 16, 2020
Feb 14, 2021
Feb 14, 2021
Dec 14, 2020
Dec 16, 2020
Feb 14, 2021
Feb 14, 2021
Feb 14, 2021
Dec 14, 2020
Dec 14, 2020
Feb 14, 2021
Dec 14, 2020
Feb 14, 2021
Dec 14, 2020
Dec 14, 2020
Jan 8, 2021

Repository files navigation

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.

Some tips to navigate the repo

  • 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.)

Documentation

  1. In case you are using a kernel newer than 5.1.0 check this.
  2. All experiments enabled through our workflow are detailed here.
  3. For information on how to map results back to their corresponding tables check our results tutorial.
  4. Tips about regenerating kernel binaries are provided here.
  5. For regenerating profiling workloads check our profiling tutorial.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published