Difference between revisions of "Unofficial user repositories/Repo-ck"

From ArchWiki
Jump to: navigation, search
(How to Determine Which CPU Optimized Package Set to Select)
(fix ja link)
 
(137 intermediate revisions by 35 users not shown)
Line 1: Line 1:
 
[[Category:Kernel]]
 
[[Category:Kernel]]
{{Article summary start}}
+
[[ja:非公式ユーザーリポジトリ/Repo-ck]]
{{Article summary text|
+
{{Related articles start}}
Article details setup and usage of the an unofficial Arch Linux repo containing generic and CPU-optimized kernel and support packages containing the ck1 patchset featuring the Brain Fuck Scheduler by Con Kolivas.}}
+
{{Related|Linux-ck}}
{{Article summary heading|Related}}
+
{{Related articles end}}
{{Article summary wiki|Linux-ck}} - Main article.
+
''Repo-ck'' is an unofficial Arch Linux repository hosting generic and CPU-optimized kernels and support packages, featuring [http://ck-hack.blogspot.com MuQSS] (pronounced mux) and rest of the ck patchset by [[Wikipedia:Con Kolivas|Con Kolivas]]It has been in operation since 2011 and is maintained by [[User:graysky|graysky]].
{{Article summary wiki|Linux-ck/Changelog}} - Linux-ck Changelog.
 
{{Article summary wiki|http://repo-ck.com/stats.pdf Repo Statistics}} - Popularity of packages, # of downloads, etc.
 
{{Article summary end}}
 
  
== Details ==
+
== Setup ==
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:
+
Add the [[Unofficial user repositories#repo-ck|repo-ck]] repository to {{ic|pacman.conf}} and [[Pacman-key#Adding_unofficial_keys|sign]] [http://repo-ck.com/ graysky]'s key.
  
{| class="wikitable" align="left"
+
== Kernels and related packages ==
 +
 
 +
The official Arch Linux kernel provides a ''generic'' package which is built for the x86_64 architecture that will run on ''any'' compatible x86_64 CPU. Repo-ck also hosts a generic version of [[linux-ck]] but also provides optimized packages for specific CPUs.
 +
 
 +
{| class="wikitable" align="center"
 
|-
 
|-
 
! CPU Type !! Group Alias !! Details
 
! CPU Type !! Group Alias !! Details
 
|-
 
|-
| rowspan="1" bgcolor=#e3f7e6| '''<span style="color: #409044;">Generic</span>'''
+
| {{C|'''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-generic'' || Generic kernel similar to the official Arch Linux kernel.
 
|-
 
|-
| rowspan="7" bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''
+
| rowspan="11" {{G|'''Intel'''}}
| ''ck-atom'' || Intel Atom platform specific optimizations.   Intel Atom CPUs have an in-order pipelining architecture and thus can benefit from accordingly optimized code.
+
| ''ck-atom'' || Intel Atom specific optimizations.
 +
|-
 +
| ''ck-silvermont'' || Intel Silvermont specific optimizations.
 +
|-
 +
| ''ck-core2'' || Intel Core 2-family including Dual and Quads.
 
|-  
 
|-  
| ''ck-core2'' || Intel Core 2-family including Dual and Quads (Core 2/Newer Xeon/Mobile Celeron based on Core2).
+
| ''ck-nehalem'' || Intel 1st Generation Core i3/i5/i7-family
 
|-  
 
|-  
| ''ck-nehalem'' || Intel 1st Generation Core i3/i5/i7-family specific optimizations.
+
| ''ck-sandybridge'' || Intel 2nd Generation Core i3/i5/i7-family
 
|-  
 
|-  
| ''ck-sandybridge'' || Intel 2nd Generation Core i3/i5/i7-family specific optimizations.
+
| ''ck-ivybridge'' || Intel 3rd Generation Core i3/i5/i7-family
 
|-  
 
|-  
| ''ck-ivybridge'' ||  Intel 3rd Generation Core i3/i5/i7-family specific optimizations.
+
| ''ck-haswell'' ||  Intel 4th Generation Core i3/i5/i7-family  
 
|-  
 
|-  
| ''ck-p4'' ||  Intel Pentium-4 specific optimizations (P4/P4-based Celeron/Pentium-4 M/Older Xeon).
+
| ''ck-broadwell'' ||  Intel 5th Generation Core i3/i5/i7-family
 
|-  
 
|-  
| ''ck-pentm'' || Intel Pentium-M specific optimizations (Pentium-M notebook chips/not Pentium-4 M).
+
| ''ck-skylake'' || Intel 6th Generation Core i3/i5/i7-family
 
|-  
 
|-  
| rowspan="6" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD</span>'''
+
| ''ck-p4'' ||  Intel Pentium-4 (P4/P4-based Celeron/Pentium-4 M/Older Xeon).
| ''ck-kx'' ||  AMD K7/K8-family specific optimizations.
 
 
|-  
 
|-  
| ''ck-k10'' || AMD 61xx Eight-Core Magny-Cours, Athlon X2 7x50,P henom X3/X4/II, Athlon II X2/X3/X4, or Turion II-family processor.
+
| ''ck-pentm'' || Intel Pentium-M (Pentium-M notebook chips/not Pentium-4 M).
 
|-  
 
|-  
| ''ck-barcelona'' || CPUs based on AMD Family 10h cores with x86-64 instruction set support.
+
| rowspan="6" {{R|'''AMD'''}}
 +
| ''ck-kx'' || AMD K7/K8-family
 +
|-
 +
| ''ck-k10'' ||  AMD K10-family including 61xx Eight-Core Magny-Cours, Athlon X2 7x50, Phenom X3/X4/II, Athlon II X2/X3/X4, or Turion II-family processor.
 
|-
 
|-
 
|''ck-bobcat''|| CPUs based on AMD Family 14h cores with x86-64 instruction set support.
 
|''ck-bobcat''|| CPUs based on AMD Family 14h cores with x86-64 instruction set support.
Line 48: Line 54:
 
|-
 
|-
 
| ''ck-piledriver'' || 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.
|-  
+
|-
 +
| ''ck-zen'' || CPUs based on AMD Family 17h 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.
+
== Selecting the correct CPU optimized package ==
  
{{Note|Repo packages include the BFQ I/O Scheduler compiled as a module. Read the [[#How_to_Enable_the_BFQ_I.2FO_Scheduler|section]] below for instructions to load it and enable it should you wish to do so.}}
+
When unsure, install the '''ck-generic''' group, which works with any compatible CPU. Those wanting CPU-specific optimized packages can run the following command (assuming that {{Grp|base-devel}} is installed):
  
== Setup ==
+
  $ gcc -c -Q -march=native --help=target | grep march
1) Add the following to {{ic|/etc/pacman.conf}} (I placed my entry at the bottom of the file):
 
 
 
  [repo-ck]
 
SigLevel = PackageRequired
 
Server = http://repo-ck.com/$arch
 
 
 
To sign graysky's key, do the following:
 
# pacman-key -r 5EE46C4C
 
# pacman-key --lsign-key 5EE46C4C
 
 
 
2) Refresh via
 
# pacman -Syy
 
 
 
That's it.  To see the contents of the repo, just search as such:
 
 
 
$ pacman -Sl repo-ck
 
 
 
== Installation Examples ==
 
Use the '''ck-X''' group and select the desired packages for installation.  There are 6 groups corresponding to the 13 package sets: '''ck-generic, ck-atom, ck-core2, ck-nehalem, ck-sandybridge, ck-ivybridge, ck-p4, ck-pentm, ck-kx, ck-k10, ck-barcelona, ck-bulldozer, ck-piledriver'''
 
 
 
{{bc|1=# pacman -S ck-generic
 
:: There are 7 members in group ck-generic:
 
:: Repository repo-ck
 
  1) broadcom-wl-ck  2) linux-ck  3) linux-ck-headers  4) nvidia-304xx-ck  5) nvidia-ck
 
  6) virtualbox-ck-guest-modules  7) virtualbox-ck-host-modules
 
 
 
Enter a selection (default=all):}}
 
  
Alternatively, simply direct pacman to install the packages directly:
+
The resulting {{ic|-march}} is what GCC would use natively.  Refer to the table below for a mapping of this value to the correct group.
# pacman -S linux-ck linux-ck-headers
+
{{Warning|Intel CPU optimized packages support only full Core2 series and i3/i5/i7 series chips.  Many Pentium/Celeron chips lack the full requisite instruction sets to make use of the optimized packages.  Users of these chips should install the generic packages, even if GCC returns a value corresponding to full core i3/i5/i7 match such as haswell.}}
  
== How to Determine Which CPU Optimized Package Set to Select ==
+
{{Note|This table has been updated to show the new simplified march options that ship with GCC v4.9+. For more information see the [https://gcc.gnu.org/gcc-4.9/changes.html release notes].}}
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.
 
  
 
{| class="wikitable" align="center"
 
{| class="wikitable" align="center"
Line 98: Line 74:
 
! Brand !! Group !! March
 
! Brand !! Group !! March
 
|-
 
|-
| rowspan="7" bgcolor=#e3ecf7| '''<span style="color: #2a6dc8;">Intel</span>'''
+
| rowspan="11" {{G|'''Intel'''}}
| ''ck-atom'' || atom
+
| ''ck-atom'' || bonnell
 +
|-
 +
| ''ck-silvermont'' || silvermont
 
|-  
 
|-  
 
| ''ck-core2'' || core2
 
| ''ck-core2'' || core2
 
|-  
 
|-  
| ''ck-nehalem'' || corei7
+
| ''ck-nehalem'' || nehalem
 +
|-
 +
| ''ck-sandybridge'' || sandybridge
 
|-  
 
|-  
| ''ck-sandybridge'' || corei7-avx
+
| ''ck-ivybridge'' || ivybridge
 
|-  
 
|-  
| ''ck-ivybridge'' || core-avx-i
+
| ''ck-haswell'' || haswell
 
|-  
 
|-  
| ''ck-p4'' || pentium4
+
| ''ck-broadwell'' || broadwell
 
|-  
 
|-  
| ''ck-pentm'' || ?
+
| ''ck-skylake'' || skylake
 
|-  
 
|-  
| rowspan="6" bgcolor=#f7e3e3| '''<span style="color: #e62c2c;">AMD</span>'''
+
| ''ck-p4'' || pentium4, prescott, nocona
| ''ck-kx'' || athlon, athlon-4, athlon-tbird, athlon-mp, athlon-xp
+
|-
 +
| ''ck-pentm'' || pentm, pentium-m
 +
|-
 +
| rowspan="6" {{R|'''AMD'''}}
 +
| ''ck-kx'' || athlon, athlon-4, athlon-tbird, athlon-mp, athlon-xp, k8-sse3
 
|-  
 
|-  
 
| ''ck-k10'' || amdfam10
 
| ''ck-k10'' || amdfam10
|-
 
| ''ck-barcelona'' || barcelona
 
 
|-
 
|-
 
|''ck-bobcat''|| btver1
 
|''ck-bobcat''|| btver1
Line 125: Line 107:
 
|-
 
|-
 
| ''ck-piledriver'' || bdver2
 
| ''ck-piledriver'' || bdver2
 +
|-
 +
| ''ck-zen'' || vnver1
 
|-  
 
|-  
 
|}
 
|}
  
{{Note|Users are encouraged to add additional entries to this table.}}
+
{{Note|Add additional entries to this table based on experience.}}
  
Additional links can be used to help determine which package set to select:
+
For further help, see:
  
*http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel
+
* http://wiki.gentoo.org/wiki/Safe_CFLAGS#Intel
*http://en.gentoo-wiki.com/wiki/Safe_Cflags/AMD
+
* http://wiki.gentoo.org/wiki/Safe_CFLAGS#AMD
*http://www.linuxforge.net/docs/linux/linux-gcc.php  
+
* http://www.linuxforge.net/docs/linux/linux-gcc.php  
*http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
 
  
== How Much Faster Are the CPU Optimized Packages ==
+
=== Speed benefits of 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.
 
  
*[http://www.phoronix.com/scan.php?page=home phoronix labs]
+
Extensive testing comparing the effect of GCC compile options show varying results, from no change to rather significant speed ups. [https://bbs.archlinux.org/viewtopic.php?id=154333] [https://www.phoronix.com/scan.php?page=news_item&px=GCC-Optimizations-E3V5-Levels] [https://www.phoronix.com/scan.php?page=article&item=intel_core_avx2&num=2]
*[https://bbs.archlinux.org/viewtopic.php?id=154333 Kernel patch for more CPU families offers measurable speed increases].
 
  
Readers are encouraged to add to this list.
+
{{Expansion|Add results to this section where appropriate.}}
  
== How to Enable the BFQ I/O Scheduler ==
+
== BFQ I/O scheduler ==
Since release 3.0.4-2, the BFQ patchset is applied to the package by default.  Users must enable the BFQ scheduler to use it; it is dormant by default.
 
  
=== Globally (for all devices) ===
+
See [[Linux-ck#How to enable the BFQ I/O Scheduler]].
  
Add {{ic|1=elevator=bfq}} to boot loader [[Kernel parameters]].
+
== Repository statistics ==
{{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) ===
+
{{Note|The statistics are not updated daily but do give a snapshot of the data based on one mirror only.}}
  
Direct the kernel to use it on a device-by-device basis.  For example, to enable it for {{ic|/dev/sda}} simply:
+
Repo [http://repo-ck.com/stats.pdf statistics] are available (package and CPU popularity, number of downloads, and so forth).
# echo bfq > /sys/block/sda/queue/scheduler
 
  
To confirm, simply ''cat'' the same file:
+
== Mirrors ==
# 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.
+
There is at least one mirror available:
  
{{hc| /etc/tmpfiles.d/set_IO_scheduler.conf |<nowiki>
+
* https://mirror.archlinux.no/repo-ck/
w /sys/block/sdX/queue/scheduler - - - - noop
+
 
 +
== Troubleshooting ==
 +
 
 +
=== Support ===
 +
 
 +
Please use [https://bbs.archlinux.org/viewtopic.php?id=111715 the BBS thread].
 +
 
 +
=== Downloads interrupt regularly ===
 +
 
 +
[https://aur.archlinux.org/account/graysky Graysky] is using [[Wikipedia:Go Daddy|Go Daddy]] as his web host.  Some of the transfers from their poorly implemented server end in an incomplete transfer.  To combat this, list the repository address multiple times and pacman will automatically try the next available server. As repo-ck has only one address (no mirrors), use the same server line:
 +
{{bc|<nowiki>[repo-ck]
 +
Server = http://repo-ck.com/$arch
 +
Server = http://repo-ck.com/$arch
 +
Server = http://repo-ck.com/$arch
 +
Server = http://repo-ck.com/$arch
 +
Server = http://repo-ck.com/$arch
 
</nowiki>}}
 
</nowiki>}}
  
== Package Trivia/Repo Statistics ==
+
Alternatively, change the [[pacman]] downloader to [[Pacman/Tips_and_tricks#wget|wget]], which automatically resumes downloads.
*Various package sets are compiled via a Bash wrapper script for makepkg.  The script is publicly accessible at graysky's [https://github.com/graysky2/repo-ck github] repo.
+
 
*Repo [http://repo-ck.com/stats.pdf statistics] are available (popularity of packages, which CPU is most popular, # of downloads, etc.).
+
See [https://bbs.archlinux.org/viewtopic.php?pid=1422475#p1422475 this forum post] for an explanation of these issues.
{{Note|The statistics are not updated daily but do give a snapshot of the data.}}
+
 
 +
=== Error: signature from graysky is unknown trust ===
  
== Troubleshooting ==
+
Users must import and sign graysky's gpg key. Instructions along with his key ID are located at [http://repo-ck.com/ repo-ck.com]. See also [[Pacman/Package signing#Adding unofficial keys]].
=== Forum Support ===
 
Please use [https://bbs.archlinux.org/viewtopic.php?id=111715 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."
 

Latest revision as of 11:44, 18 January 2018

Repo-ck is an unofficial Arch Linux repository hosting generic and CPU-optimized kernels and support packages, featuring MuQSS (pronounced mux) and rest of the ck patchset by Con Kolivas. It has been in operation since 2011 and is maintained by graysky.

Setup

Add the repo-ck repository to pacman.conf and sign graysky's key.

Kernels and related packages

The official Arch Linux kernel provides a generic package which is built for the x86_64 architecture that will run on any compatible x86_64 CPU. Repo-ck also hosts a generic version of linux-ck but also provides optimized packages for specific CPUs.

CPU Type Group Alias Details
Generic ck-generic Generic kernel similar to the official Arch Linux kernel.
Intel ck-atom Intel Atom specific optimizations.
ck-silvermont Intel Silvermont specific optimizations.
ck-core2 Intel Core 2-family including Dual and Quads.
ck-nehalem Intel 1st Generation Core i3/i5/i7-family
ck-sandybridge Intel 2nd Generation Core i3/i5/i7-family
ck-ivybridge Intel 3rd Generation Core i3/i5/i7-family
ck-haswell Intel 4th Generation Core i3/i5/i7-family
ck-broadwell Intel 5th Generation Core i3/i5/i7-family
ck-skylake Intel 6th Generation Core i3/i5/i7-family
ck-p4 Intel Pentium-4 (P4/P4-based Celeron/Pentium-4 M/Older Xeon).
ck-pentm Intel Pentium-M (Pentium-M notebook chips/not Pentium-4 M).
AMD ck-kx AMD K7/K8-family
ck-k10 AMD K10-family including 61xx Eight-Core Magny-Cours, Athlon X2 7x50, Phenom X3/X4/II, Athlon II X2/X3/X4, or Turion II-family processor.
ck-bobcat CPUs based on AMD Family 14h 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.
ck-zen CPUs based on AMD Family 17h cores with x86-64 instruction set support.

Selecting the correct CPU optimized package

When unsure, install the ck-generic group, which works with any compatible CPU. Those wanting CPU-specific optimized packages can run the following command (assuming that base-devel is installed):

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

The resulting -march is what GCC would use natively. Refer to the table below for a mapping of this value to the correct group.

Warning: Intel CPU optimized packages support only full Core2 series and i3/i5/i7 series chips. Many Pentium/Celeron chips lack the full requisite instruction sets to make use of the optimized packages. Users of these chips should install the generic packages, even if GCC returns a value corresponding to full core i3/i5/i7 match such as haswell.
Note: This table has been updated to show the new simplified march options that ship with GCC v4.9+. For more information see the release notes.
Brand Group March
Intel ck-atom bonnell
ck-silvermont silvermont
ck-core2 core2
ck-nehalem nehalem
ck-sandybridge sandybridge
ck-ivybridge ivybridge
ck-haswell haswell
ck-broadwell broadwell
ck-skylake skylake
ck-p4 pentium4, prescott, nocona
ck-pentm pentm, pentium-m
AMD ck-kx athlon, athlon-4, athlon-tbird, athlon-mp, athlon-xp, k8-sse3
ck-k10 amdfam10
ck-bobcat btver1
ck-bulldozer bdver1
ck-piledriver bdver2
ck-zen vnver1
Note: Add additional entries to this table based on experience.

For further help, see:

Speed benefits of CPU optimized packages

Extensive testing comparing the effect of GCC compile options show varying results, from no change to rather significant speed ups. [1] [2] [3]

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Add results to this section where appropriate. (Discuss in Talk:Unofficial user repositories/Repo-ck#)

BFQ I/O scheduler

See Linux-ck#How to enable the BFQ I/O Scheduler.

Repository statistics

Note: The statistics are not updated daily but do give a snapshot of the data based on one mirror only.

Repo statistics are available (package and CPU popularity, number of downloads, and so forth).

Mirrors

There is at least one mirror available:

Troubleshooting

Support

Please use the BBS thread.

Downloads interrupt regularly

Graysky is using Go Daddy as his web host. Some of the transfers from their poorly implemented server end in an incomplete transfer. To combat this, list the repository address multiple times and pacman will automatically try the next available server. As repo-ck has only one address (no mirrors), use the same server line:

[repo-ck]
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch

Alternatively, change the pacman downloader to wget, which automatically resumes downloads.

See this forum post for an explanation of these issues.

Error: signature from graysky is unknown trust

Users must import and sign graysky's gpg key. Instructions along with his key ID are located at repo-ck.com. See also Pacman/Package signing#Adding unofficial keys.