Linux-ck

提供: ArchWiki
2021年6月21日 (月) 13:03時点におけるKusanaginoturugi (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

パッケージ

Linux-ckAURAURrepo-ck の非公式リポジトリにあるパッケージでインストールすることができ、それによって旧 Brain Fuck Scheduler (BFS) を置き換える MuQSS (Multiple Queue Skiplist Scheduler) などを含む Con Kolivas の ck パッチセットがあてられたカーネル/ヘッダーを動作させることが可能です。どんな負担がかかっているときも素晴らしいデスクトップの応答性とレスポンスを得ることができる MuQSS を求める多くの Archer はこのパッケージを使っています。

CK パッチセットはデスクトップ・ノートパソコンでの使用を想定して設計しておりサーバー向けではありません。CPU のコア数が16個以下の環境で低遅延システムを実現します。

リリースサイクル

Linux-ck は公式の ARCH カーネルのリリースサイクルにおおよそ従っています。リリースには以下が必要になります:

  • 最新のカーネルバージョンに対応した CK パッチセット
  • 対応する Arch カーネルが存在しないと nvidia など他のパッケージが壊れます。公式の linux パッケージについては git.archlinux.org を参照。

パッケージのデフォルト

コンフィグファイルには3つの変更がされています:

  1. ck パッチセットを有効化/無効化するオプション。
  2. tickrate を 100 Hz に設定 (CK の推奨事項)。
  3. コンパイル時に追加の CPU 最適化を有効化する GCC パッチの適用 (このオプションは標準の linux-ck パッケージには含まれていないためユーザーがカスタムオプションでコンパイルするときだけ利用できます)。

他のオプションはすべてメインカーネルのコンフィグファイルにそって ARCH のデフォルトに設定されています。もちろん、ユーザーは自由にコンフィグを修正することが可能です。linux-ckAUR パッケージには nconfig コンフィグエディタを使うオプションが含まれています (下のセクションを参照)。CK の BFS configuration FAQ に設定値の提案があります。

長期サポート版 (LTS) の CK リリース

linux-ck パッケージの他に、上記のパッチセットがあてられた以下の LTS カーネルリリースが存在します。上述の通りコンフィグファイルに修正が加えられています:

  • linux-lts-ckAUR - CK パッチセットがあたった最新の Arch Linux LTS カーネル
ノート: 上記パッケージは vishwin によってメンテナンスされています。パッケージ済みのバージョンは非公式の ck リポジトリには存在しません。

インストール

ノート: カーネルを追加したら、ユーザーは手動でブートローダーの設定ファイルを更新して新しいカーネルイメージが使われるようにする必要があります。

ユーザーがカーネルパッケージを入手する方法は2つあります。

ソースからパッケージをコンパイル

AUR には上述のパッケージのエントリが存在します。

PKGBUILD を修正することで linux-ck パッケージをカスタマイズすることが可能です:

  • nconfig でユーザーにあわせた細かい調整。
  • localmodconfig でモジュールを最小限にコンパイル。
  • 標準の ARCH コンフィグオプションを迂回して最新のカーネルの .config ファイルを使用。
  • BFQ I/O スケジューラ をデフォルトに設定。

オプションに関する詳細は PKGBUILD のラインコメントを見て下さい。AUR からコンパイルするときは絶対に読むようにしましょう。

ノート: AUR には linux-ck 専用のモジュールのための PKGBUILD が存在します。例えば nvidia-ckAUR[リンク切れ: パッケージが存在しません], nvidia-340xx-ckAUR[リンク切れ: パッケージが存在しません], broadcom-wl-ckAUR などがあります。もしくは適切な DKMS パッケージを使ってください。例えば NVIDIA#カスタムカーネルに書かれている nvidia-dkms をインストールします。

コンパイル済みのパッケージを使う

カーネルのコンパイルに時間を割きたくないユーザーのために、graysky によってメンテナンスされている非公式リポジトリが存在します。詳しくは Repo-ck を見てください。

BFQ I/O スケジューラを有効にする方法

ノート: BFQ (Budget Fair Queueing) と MuQSS (Multiple Queue Skiplist Scheduler) を混同してはいけません。MuQSS は CPU スケジューラでありデフォルトで有効にされますが、BFQ は I/O スケジューラであり使用するには明示的に有効にする必要があります。

Budget Fair Queueing は各プロセス/スレッドにディスクのスループットの一部を割り当てるディスクスケジューラです。開発者によって驚くようなレイテンシパフォーマンスを示す ベンチマーク が公開されています。

様々な I/O スケジューラの背景情報と "BFQ" を有効にする方法についてはパフォーマンスの最大化#I/O スケジューラの設定を参照してください。

MuQSS についての簡単な説明

MuQSS はデスクトップ指向の cpu プロセススケジューラであり、負担レベルが通常のときに極端な低レイテンシによって素晴らしい応答性を実現します。

MuQSS の設計目標

MuQSS には2つの大きな設計目標があります:

  1. デスクトップの優れた応答性とレスポンスを達成すること。ヒューリスティックやチューニングパラメータは使わない。理解するのが難しいし、効果を予測するのが困難で、何か一つのワークロードに合わせて設定すると他のワークロードに多大なダメージを与えることがあるため。
  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 をインストールした場合に推奨)

ノート: As of 17-Oct-2012, Repo-ck users can enjoy these modules as pre-compiled packages in the repo itself. If you built your linux-ck from the AUR you cannot use the repo as all packages in the repo are matched groups.

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
ノート: 2番目のコマンドの virtualbox のバージョン番号は適当に置き換えてください。執筆時点では、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 パッケージに関連する投稿であることをわかるように題名に含めてください。

参照