Setup:
See the Repo-ck#Setup section below to enable and use the repo.

Details

The repo contains generic packages as well as CPU-specific packages. Many ARCH users are familiar with the concept of a generic kernel package. The official ARCH kernel is available in two flavors (either i686 or x86_64) which are generic packages in that i686 will work with any compatible x86 CPU and x86_64 will work with any compatible x86_64 CPU.

Users have a choice between the corresponding generic linux-ck packages or CPU-specific and optimized linux-ck packages:

GENERIC

ck-generic ==> Compiled with generic optimizations suitable for any compatible CPU just like the official ARCH linux package. This is true for both Intel and AMD processors.

ck-barcelona ==> CPUs based on AMD Family 10h cores with x86-64 instruction set support.

ck-bulldozer ==> CPUs based on AMD Family 15h cores with x86-64 instruction set support.

ck-piledriver ==> CPUs based on AMD Family 15h cores with x86-64 instruction set support.

CPU-specific optimization are invoked at compilation by selecting the corresponding option under Processor type and features>Processor family or by setting-up the .config file accordingly. These changes setup make specific gcc options including the $CFLAGS.

Note: Repo packages include the BFQ I/O Scheduler compiled as a module. Read the section below for instructions to load it and enable it should you wish to do so.

[Graysky's public key] used for package signing. Pacman v4 will automatically query the public key server, but if users would rather download and manually add the key, do so from the link.

Setup

1) Add the following to /etc/pacman.conf (I placed my entry at the bottom of the file):

How to Determine Which CPU Optimized Package Set to Select

Users unsure which package set to use can always install the ck-generic group which will drive any compatible CPU. For those wanting CPU-specific optimized packages, run the following command (assuming that base-devel is installed):

$ gcc -c -Q -march=native --help=target | grep march

The resulting value is what gcc would use as the march CFLAG. Refer to the table below for a mapping of this value to the correct group.

Brand

Group

March

AMD

ck- barcelona

barcelona

ck-bulldozer

bdver1

ck-piledriver

bdver2

ck-kx

athlon, athlon-4, athlon-tbird, athlon-mp, athlon-xp

Intel

ck-atom

atom

ck-core2

core2

ck-nehalem

core7i

ck-sandybridge

corei7-avx

ck-ivybridge

core-avx-i

ck-p4

pentium4

ck-pentm

?

Note: Users are encouraged to add additional entries to this table.

Additional links can be used to help determine which package set to select:

How Much Faster Are the CPU Optimized Packages

The answer is not that much faster. Extensive testing comparing the effect of gcc compile options on resulting binaries have been conducted by others with varying result from no change to rather significant speed ups.

Globally (for all devices)

Note: Users building the PKG from the AUR have an option in the PKGBUILD itself to globally use the BFQ as the default I/O scheduler.

Selectively (for only specified devices)

Direct the kernel to use it on a device-by-device basis. For example, to enable it for /dev/sda simply:

# echo bfq > /sys/block/sda/queue/scheduler

To confirm, simply cat the same file:

# cat /sys/block/sda/queue/scheduler
noop deadline cfq [bfq]

Setting this way will not survive a reboot. To make the change automatically at the next system boot, create the following tmpfile where "X" is the letter for the SSD device.

/etc/tmpfiles.d/set_IO_scheduler.conf

w /sys/block/sdX/queue/scheduler - - - - noop

Package Trivia/Repo Statistics

Various package sets are compiled via a Bash wrapper script for makepkg. The script is publicly accessible at graysky's github repo.

Repo statistics are available (popularity of packages, which CPU is most popular, # of downloads, etc.).

Note: The statistics are not updated daily but do give a snapshot of the data.

Troubleshooting

Forum Support

Please use this discussion thread to voice comments, questions, suggestions, requests, etc. Note from graysky, "I can add other CPU-specific builds upon request. I just wanna be sure people will actually use them if I take the time to compile them."