Linux-ck
関連記事
一般的なパッケージの詳細
Linux-ckAUR は AUR や repo-ck の非公式リポジトリにあるパッケージでインストールすることができ、それによって旧 Brain Fuck Scheduler (BFS) を置き換える MuQSS (Multiple Queue Skiplist Scheduler) などを含む Con Kolivas の ck パッチセットがあてられたカーネル/ヘッダーを動作させることが可能です。どんな負担がかかっているときも素晴らしいデスクトップの応答性とレスポンスを得ることができる MuQSS を求める多くの Archer はこのパッケージを使っています。
CK パッチセットはデスクトップ・ノートパソコンでの使用を想定して設計しておりサーバー向けではありません。CPU のコア数が16個以下の環境で低遅延システムを実現します。
リリースサイクル
Linux-ck は公式の ARCH カーネルのリリースサイクルにおおよそ従っています。リリースには以下が必要になります:
- 最新のカーネルバージョンに対応した CK パッチセット
インストール
ユーザーがカーネルパッケージを入手する方法は2つあります。
ソースからパッケージをコンパイル
AUR には上述のパッケージのエントリが存在します。
PKGBUILD を修正することで linux-ck パッケージをカスタマイズすることが可能です:
- nconfig でユーザーにあわせた細かい調整。
- localmodconfig でモジュールを最小限にコンパイル。
- 標準の ARCH コンフィグオプションを迂回して最新のカーネルの .config ファイルを使用。
- BFQ I/O スケジューラ をデフォルトに設定。
オプションに関する詳細は PKGBUILD のラインコメントを見て下さい。AUR からコンパイルするときは絶対に読むようにしましょう。
コンパイル済みのパッケージを使う
カーネルのコンパイルに時間を割きたくないユーザーのために、graysky によってメンテナンスされている非公式リポジトリが存在します。詳しくは Repo-ck を見てください。
MuQSS についての簡単な説明
MuQSS はデスクトップ指向の cpu プロセススケジューラであり、負担レベルが通常のときに極端な低レイテンシによって素晴らしい応答性を実現します。
MuQSS の設計目標
MuQSS には2つの大きな設計目標があります:
- デスクトップの優れた応答性とレスポンスを達成すること。ヒューリスティックやチューニングパラメータは使わない。理解するのが難しいし、効果を予測するのが困難で、何か一つのワークロードに合わせて設定すると他のワークロードに多大なダメージを与えることがあるため。
- cpu プロセススケジューラの過去の複雑な設計を完全に廃止して、とてもシンプルな必要最小限の設計でスケジューラを実装すること。
待ち行列理論に関する動画
この動画 はスーパーのレジを使って待ち行列理論について説明しています。CK によれば、"BFS が単一の待ち行列を使っているのに対して、メインラインの Linux カーネルでは複数の待ち行列を使用する設計がされていることと動画には関連性があります。人々はタスクであり、レジは CPU です。もちろん単なる待ち行列の設計と CPU スケジューラを同じものとすることはできませんが、この動画は仕組みを上手く言い当てていると感じました。"
MuQSS が有効になっているか確認
MuQSS が有効になっていればカーネルリングバッファに以下のスタートアップメッセージが表示されるはずです:
$ dmesg | grep -i muqss ... MuQSS CPU scheduler v0.120 by Con Kolivas.
MuQSS パッチのあたったカーネルと systemd
MuQSS が cgroups をサポートしてないと思ってしまうのはよくある間違いです。MuQSS は cgroups をサポートしています、ただし cgroups の機能を全てはサポートしてません (例: CPU の制限は動作しません)。
トラブルシューティング
ブートローダーと Linux-ck
(新しい) カーネルイメージが見つかるようにブートローダーを設定する必要があります。GRUB の場合、GRUB#メイン設定ファイルの生成を見て下さい。他のブートローダーの場合、カスタムエントリを追加する必要があります。
REFInd を使っている場合にカスタムエントリを追加するときの例:
refind.conf
menuentry Linux { icon EFI/refind/icons/os_linux.png ostype Linux volume boot loader /vmlinuz-linux-ck initrd /initramfs-linux-ck.img options "root=/dev/mapper/root elevator=bfq" }
VirtualBox で Linux-ck を動作させる
VirtualBox は Linux-ck などのカスタムカーネルでも問題なく動作します。公式の ARCH カーネルヘッダのパッケージをインストールしておく必要はありません。
忘れずにユーザーを vboxusers グループに追加してください:
# gpasswd -a USERNAME vboxusers
非公式リポジトリを使う (Repo-ck から linux-ck をインストールした場合に推奨)
pacman で直接 http://repo-ck.com を使用する方法は Repo-ck の記事を見て下さい。
virtualbox-ck-host-modules パッケージ (AUR から linux-ck をビルドした場合に推奨)
virtualbox-ck-host-modulesAUR パッケージをインストールしてから virtualbox パッケージをインストールしてください。
DKMS を使う (やや複雑、LTS リリースを使う場合に推奨)
virtualbox-host-dkms パッケージで virtualbox をインストールしてください。それから以下のように dkms を設定します:
# pacman -S virtualbox virtualbox-host-dkms # dkms install vboxhost/4.3.12
ダウングレード
前のバージョンの linux-ck にダウングレードしたい場合、複数の選択肢があります:
- linux-ck-3.3.7-1 までのソースアーカイブが 存在 します。
- AUR.git には linux-ck-2.6.39.3-1 までの linux-ck の git コミットが保存されています。
フォーラムのサポート
フォーラムにサポートのスレッドを作るときは、linux-ck パッケージに関連する投稿であることをわかるように題名に含めてください。