docs: I'd recommend to use this at least for x86/x86-64. I think any OOO processor with small or moderate register file which does not use the 1st insn scheduling might benefit from this too. On SPEC2000 for x86/x86-64 (I use Haswell processor, -O3 with general tuning), the optimization usage results in smaller code size in average (for floating point and integer benchmarks in 32- and 64-bit mode). The improvement better visible for SPECFP2000 (although I have the same improvement on x86-64 SPECInt2000 but it might be attributed mostly mcf benchmark unstability). It is about 0.5% for 32-bit and 64-bit mode. It is understandable, as the optimization has more opportunities to improve the code on longer BBs. Different from other heuristic optimizations, I don't see any significant worse performance. It gives practically the same or better performance (a few benchmarks imporoved by 1% or more upto 3%). The single but significant drawback is additional compilation time (4%-6%) as the 1st insn scheduling pass is quite expensive. Source of docs: https://gcc.gnu.org/legacy-ml/gcc-patches/2013-11/msg00420.html
ALHP
Buildbot for Archlinux-based repos build with different
x86-64 feature levels, -O3
and
LTO.
⚠️ NVIDIA graphic users using the proprietary driver is highly recommended reading the FAQ about Linux kernel modules ⚠️
Quickstart
1. Check your system for support
Important
: Before you enable any of these repos, check if your system supports the feature level you want to enable (e.g.
x86-64-v3
). If you don't check beforehand, you might be unable to boot your system anymore and need to downgrade any package that you may have upgraded.
Check which feature-levels your CPU supports with
/lib/ld-linux-x86-64.so.2 --help
Example output snippet for a system supporting up to x86-64-v3
:
Subdirectories of glibc-hwcaps directories, in priority order:
x86-64-v4
x86-64-v3 (supported, searched)
x86-64-v2 (supported, searched)
2. Install keyring & mirrorlist
Install alhp-keyring and alhp-mirrorlist from AUR.
Example with yay
:
yay -S alhp-keyring alhp-mirrorlist
alhp-keyring
provides the current signing keys used by ALHP, alhp-mirrorlist
a selection of mirrors.
3. Choose a mirror (optional)
Edit /etc/pacman.d/alhp-mirrorlist
and comment out/in mirrors you want to have enabled/disabled. Per default selected
is a cloudflare-based mirror which
should provide decent speed worldwide.
Note: Only
alhp.harting.dev
is hosted by ALHP directly. If you have problems with a mirror, open an issue at the mirrorlist repo.
4. Modify /etc/pacman.conf
Add the appropriate repos above your regular Archlinux repos.
Example for x86-64-v3
:
[core-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist
[extra-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist
[community-x86-64-v3]
Include = /etc/pacman.d/alhp-mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
Replace x86-64-v3
with the x86-64 feature level you want to enable.
ALHP only builds for
x86-64-v3
andx86-64-v2
at the moment (list is subject to change). You can see all available repositories here.
5. Update package database and upgrade:
pacman -Suy
How to disable
To disable ALHP remove all x86-64-vX entries in /etc/pacman.conf
and remove alhp-keyring
and alhp-mirrorlist
.
After that you can refresh pacmans databases and downgrade all packages like:
pacman -Suuy
FAQ
LTO
Enabled for all packages build after 04 Nov 2021 12:07:00 UTC. More details. LTO status is visible per package on the package status page.
Linux Kernel
ALHP provides patched kernels (except linux-zen
) that build with -march=x86-64-vN
. Thanks to
graysky for providing these patches.
Directly linked kernel modules
Above-mentioned patching breaks all directly linked modules like nvidia
(not nvidia-dkms
) or
virtualbox-host-modules-arch
(not virtualbox-host-dkms
). Their respective dkms
-variant is not affected. This
issue is being tracked in #68, a solution is being worked on.
Mirrors
You want to mirror ALHP? You are welcome to do so, see alhp-mirrorlist for how to become one.
What packages are built
Packages excluded from building (besides all 'any' architecture packages) are being listed in issue #16. Also package status page.
Debug symbols
ALHP provides a debuginfod instance under debuginfod.harting.dev
.
To use it, have debuginfod
installed on your system and add it to your DEBUGINFOD_URLS
with:
echo "https://debuginfod.harting.dev" > /etc/debuginfod/alhp.urls
Donations
I appreciate any money you want to throw my way, but donations are strictly optional. Donations are primarily used to pay for server costs. Also consider donating to the Archlinux Team, without their work ALHP would not be possible.