A containerized tool for automatically generating AutoFDO and Propeller optimization profiles for Linux kernels. Utilizes Phoronix test suites and perf to collect performance data for kernel tuning.
- Auto-generate AutoFDO optimization profiles
- Auto-generate Propeller optimization profiles
- Containerized execution ensures environment consistency
- Persistent output storage
- MIT Licensed
- Podman
- Linux kernel debug symbols (vmlinux)
- Recommended 16GB+ RAM
Base on phoronix-test-suite (Maybe you have better idea, please tell we)
CPU suite:
- pts/rodinia
- pts/namd
- pts/stockfish
- pts/x264
- pts/x265
- pts/kvazaar
- pts/compress-7zip
- pts/blender
- pts/asmfish
- pts/build-linux-kernel
- pts/build-gcc
- pts/radiance
- pts/openssl
- pts/ctx-clock
- pts/sysbench
- pts/povray
podman build -t autofdo .podman run --rm \
-v $PWD/output:/output \
-v /usr/lib/modules/$(uname -r)/build/vmlinux:/vmlinux \
-it --privileged \
autofdo /vmlinux amd autofdopodman run --rm \
-v $PWD/output:/output \
-v /usr/lib/modules/$(uname -r)/build/vmlinux:/vmlinux \
-it --privileged \
autofdo /vmlinux amd propeller- Build an init kernel
- Reboot to the kernel
- Generate AutoFDO Profile
- Build an kernel with AutoFDO Profile
- Reboot to the new kernel
- Generate Propeller Profile
- Build an kernel with AutoFDO Profile and Propeller Profile
- Reboot and enjoy!
Below are the performance comparison results before and after applying the kernel optimization profiles:
- No kernel optimization profiles: https://openbenchmarking.org/result/2502094-NE-CPU25415319
- AutoFDO and Propeller: https://openbenchmarking.org/result/2502105-NE-CPU23727229
Profiles will be saved to ./output directory:
- AutoFDO:
kernel.afdo - Propeller:
propeller/propeller_cc_profile.txt,propeller/propeller_ld_profile.txt
| Parameter | Description |
|---|---|
/vmlinux |
Mount path for kernel debug symbols |
amd |
Target architecture (supports amd/intel) |
autofdo/propeller |
Optimization type selector |
--privilegedflag required for performance profiling- Ensure mounted vmlinux matches current kernel version
- High CPU/memory load expected - recommend dedicated hardware
- Output directory requires write permissions
We welcome community improvements! Please:
- Open issues to discuss test suite enhancements
- Submit PRs for better benchmark coverage validation
- Suggest additional profiling optimizations