「Linux-ck」の版間の差分
Kusakata.bot (トーク | 投稿記録) 細 (文字列「http://www.youtube.com/」を「https://www.youtube.com/」に置換) |
(MuQSSの追加) タグ: visualeditor |
||
11行目: | 11行目: | ||
== パッケージ == |
== パッケージ == |
||
− | {{AUR|Linux-ck}} は [[AUR]] や [[#コンパイル済みのパッケージを使う|linux-ck の非公式リポジトリ]]にあるパッケージでインストールすることができ、それによって Brain Fuck Scheduler (BFS) などを含む Con Kolivas の ck1 パッチセットがあてられたカーネル/ヘッダーを動作させることが可能です。どんな負担がかかっているときも素晴らしいデスクトップの応答性とレスポンスを得ることができる BFS を求める多くの Archer はこのパッケージを使っています。さらに、bfs には応答性だけでなく性能の向上も望めます。例えば、次を参照: [http://repo-ck.com/bench/cpu_schedulers_compared.pdf CPU_Schedulers_Compared.pdf]。 |
+ | {{AUR|Linux-ck}} は [[AUR]] や [[#コンパイル済みのパッケージを使う|linux-ck の非公式リポジトリ]]にあるパッケージでインストールすることができ、それによって 旧Brain Fuck Scheduler (BFS) を置き換えるMuQSS (Multiple Queue Skiplist Scheduler) などを含む Con Kolivas の ck1 パッチセットがあてられたカーネル/ヘッダーを動作させることが可能です。どんな負担がかかっているときも素晴らしいデスクトップの応答性とレスポンスを得ることができる BFS を求める多くの Archer はこのパッケージを使っています。さらに、bfs には応答性だけでなく性能の向上も望めます。例えば、次を参照: [http://repo-ck.com/bench/cpu_schedulers_compared.pdf CPU_Schedulers_Compared.pdf]。 |
+ | |||
+ | CK パッチセットは16CPU以下の環境で正常に動作します。 |
||
=== リリースサイクル === |
=== リリースサイクル === |
||
70行目: | 72行目: | ||
上述の LTS ブランチの非公式リポジトリも存在します。[[en2:User:clfarron4|clfarron4]] によってメンテナンスされている [[非公式ユーザーリポジトリ#linux-lts-ck|linux-lts-ck]], [[非公式ユーザーリポジトリ#linux-lts31x-ck|linux-lts31x-ck]] です。 |
上述の LTS ブランチの非公式リポジトリも存在します。[[en2:User:clfarron4|clfarron4]] によってメンテナンスされている [[非公式ユーザーリポジトリ#linux-lts-ck|linux-lts-ck]], [[非公式ユーザーリポジトリ#linux-lts31x-ck|linux-lts31x-ck]] です。 |
||
− | == |
+ | == MuQSS I/O スケジューラを有効にする方法 == |
− | {{Note|BFS (Brain Fuck Scheduler) と BFQ (Budget Fair Queueing) を混同してはいけません。BFS は CPU スケジューラでありデフォルトで有効にされますが、BFQ は I/O スケジューラであり使用するには明示的に有効にする必要があります。}} |
+ | {{Note|BFS (Brain Fuck Scheduler) と BFQ (Budget Fair Queueing) 、MuQSS (Multiple Queue Skiplist Scheduler) を混同してはいけません。BFS は CPU スケジューラでありデフォルトで有効にされますが、BFQ は I/O スケジューラであり使用するには明示的に有効にする必要があります。}} |
Budget Fair Queueing は各プロセス/スレッドにディスクのスループットの一部を割り当てるディスクスケジューラです。開発者によって驚くようなレイテンシパフォーマンスを示す [https://www.youtube.com/watch?v=KhZl9LjCKuU ベンチマーク] が公開されています。 |
Budget Fair Queueing は各プロセス/スレッドにディスクのスループットの一部を割り当てるディスクスケジューラです。開発者によって驚くようなレイテンシパフォーマンスを示す [https://www.youtube.com/watch?v=KhZl9LjCKuU ベンチマーク] が公開されています。 |
||
linux-ck-3.0.4-2 から、BFQ パッチセットはデフォルトでパッケージに適用されるようになっていますが、BFQ スケジューラは手動で有効にする必要があります。有効にする方法は複数存在します。 |
linux-ck-3.0.4-2 から、BFQ パッチセットはデフォルトでパッケージに適用されるようになっていますが、BFQ スケジューラは手動で有効にする必要があります。有効にする方法は複数存在します。 |
||
+ | |||
+ | MuQSS は BFS をさらに改良して作られたCPUスケジューラです。現在のck パッチではBFSではなくMuQSSがデフォルトのスケジューラになっています。 |
||
+ | |||
+ | === MuQSSが有効になっているか確認する === |
||
+ | MuQSSが有効になっている場合、ブートメッセージに出力がされます。 |
||
+ | $ dmesg | grep -i muqss |
||
+ | ... |
||
+ | MuQSS CPU scheduler v0.120 by Con Kolivas. |
||
=== 全てのデバイスで BFQ を有効にする === |
=== 全てのデバイスで BFQ を有効にする === |
||
185行目: | 195行目: | ||
== BFS の作り話 == |
== BFS の作り話 == |
||
− | === BFS パッチのあたったカーネルは systemd を使うことができ |
+ | === BFS パッチのあたったカーネルは systemd を使うことができない === |
BFS が cgroups をサポートしてないと思ってしまうのはよくある間違いです。BFS は cgroups をサポートしています、ただし cgroups の機能を全てはサポートしてません (例: CPU の制限は動作しません)。 |
BFS が cgroups をサポートしてないと思ってしまうのはよくある間違いです。BFS は cgroups をサポートしています、ただし cgroups の機能を全てはサポートしてません (例: CPU の制限は動作しません)。 |
2018年5月6日 (日) 18:59時点における版
目次
パッケージ
Linux-ckAUR は AUR や linux-ck の非公式リポジトリにあるパッケージでインストールすることができ、それによって 旧Brain Fuck Scheduler (BFS) を置き換えるMuQSS (Multiple Queue Skiplist Scheduler) などを含む Con Kolivas の ck1 パッチセットがあてられたカーネル/ヘッダーを動作させることが可能です。どんな負担がかかっているときも素晴らしいデスクトップの応答性とレスポンスを得ることができる BFS を求める多くの Archer はこのパッケージを使っています。さらに、bfs には応答性だけでなく性能の向上も望めます。例えば、次を参照: CPU_Schedulers_Compared.pdf。
CK パッチセットは16CPU以下の環境で正常に動作します。
リリースサイクル
Linux-ck は公式の ARCH カーネルのリリースサイクルにおおよそ従っています。リリースには以下が必要になります:
- 上流のコード
- CK のパッチセット
- BFQ パッチセット
- ARCH config/config.x86_64 セット (メジャーバージョンが上がったときだけ)
パッケージのデフォルト
コンフィグファイルには3つの変更がされています:
- ck パッチセットを有効化/無効化するオプション。
- BFQ パッチセットをユーザーとの対話なくコンパイルするのに必要なオプション。
- コンパイル時に追加の CPU 最適化を有効化する GCC パッチの適用 (このオプションは標準の linux-ck パッケージには含まれていないためユーザーがカスタムオプションでコンパイルするときだけ利用できます)。
他のオプションはすべてメインカーネルのコンフィグファイルにそって ARCH のデフォルトに設定されています。もちろん、ユーザーは自由にコンフィグを修正することが可能です。linux-ck パッケージには nconfig コンフィグエディタを使うオプションが含まれています (下のセクションを参照)。CK の BFS configuration FAQ に設定値の提案があります。
長期サポート版 (LTS) の CK リリース
linux-ck パッケージの他に、上記のパッチセットがあてられた以下の LTS カーネルリリースが存在します。上述の通りコンフィグファイルに修正が加えられています:
- linux-lts-ckAUR - CK パッチセットがあたった最新の ArchLinux LTS カーネル
- linux-lts310-ckAUR[リンク切れ: パッケージが存在しません] - CK パッチセットがあたった 3.10 LTS カーネル
- linux-lts312-ckAUR[リンク切れ: パッケージが存在しません] - CK パッチセットがあたった 3.12 LTS カーネル
上記3つのパッケージは clfarron4 によってメンテナンスされています。パッケージ済みのバージョンは非公式の ck リポジトリには存在しません。
インストール
ユーザーがカーネルパッケージを入手する方法は2つあります。
ソースからパッケージをコンパイル
AUR には上述のパッケージのエントリが存在します。
PKGBUILD を修正することで linux-ck パッケージをカスタマイズすることが可能です:
- nconfig でユーザーにあわせた細かい調整。
- localmodconfig でモジュールを最小限にコンパイル。
- 標準の ARCH コンフィグオプションを迂回して最新のカーネルの .config ファイルを使用。
- BFQ I/O スケジューラ をデフォルトに設定。
オプションに関する詳細は PKGBUILD のラインコメントを見て下さい。AUR からコンパイルするときは絶対に読むようにしましょう。
コンパイル済みのパッケージを使う
カーネルのコンパイルに時間を割きたくないユーザーのために、graysky によってメンテナンスされている非公式リポジトリが存在します。
詳しくは、次を見て下さい: Repo-ck。
上述の LTS ブランチの非公式リポジトリも存在します。clfarron4 によってメンテナンスされている linux-lts-ck, linux-lts31x-ck です。
MuQSS I/O スケジューラを有効にする方法
Budget Fair Queueing は各プロセス/スレッドにディスクのスループットの一部を割り当てるディスクスケジューラです。開発者によって驚くようなレイテンシパフォーマンスを示す ベンチマーク が公開されています。
linux-ck-3.0.4-2 から、BFQ パッチセットはデフォルトでパッケージに適用されるようになっていますが、BFQ スケジューラは手動で有効にする必要があります。有効にする方法は複数存在します。
MuQSS は BFS をさらに改良して作られたCPUスケジューラです。現在のck パッチではBFSではなくMuQSSがデフォルトのスケジューラになっています。
MuQSSが有効になっているか確認する
MuQSSが有効になっている場合、ブートメッセージに出力がされます。
$ dmesg | grep -i muqss ... MuQSS CPU scheduler v0.120 by Con Kolivas.
全てのデバイスで BFQ を有効にする
AUR からコンパイルする場合は、ビルドする前に PKGBUILD の BFQ フラグを "y" に設定してください:
_BFQ_enable_="y"
repo-ck を使っている場合やビルド前に PKGBUILD に修正を加えなかった場合はカーネルパラメータに elevator=bfq
を追加することができます。
特定のデバイスでだけ BFQ を有効にする
もしくはデバイスごとに BFQ を使うようにカーネルに指示することもできます。例えば、/dev/sda
で BFQ を有効にするには:
# echo bfq > /sys/block/sda/queue/scheduler
有効になっていることを確認:
# cat /sys/block/sda/queue/scheduler noop deadline cfq [bfq]
この方法では再起動すると設定が戻ってしまうので注意してください。次のブート時に自動的に変更させるには、以下の tmpfile を作成します (sdX は適当なデバイスに置き換えて下さい):
/etc/tmpfiles.d/set_IO_scheduler.conf
w /sys/block/sdX/queue/scheduler - - - - bfq
トラブルシューティング
ブートローダーと 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 にダウングレードしたい場合、複数の選択肢があります:
- Source archives are available dating back to linux-ck-3.3.7-1.
- AUR.git holds AUR git commits for linux-ck dating back to linux-ck-2.6.39.3-1.
フォーラムのサポート
Always feel free to open a thread in the forums for support. Be sure to give the thread a descriptive title to draw attention to the fact that the post relates to the Linux- ck package.
BFS についての簡単な説明
Brain Fuck Scheduler はデスクトップ指向の cpu プロセススケジューラであり、負担レベルが通常のときに極端な低レイテンシによって素晴らしい応答性を実現します。
BFS の設計目標
BFS には2つの大きな設計目標があります:
- デスクトップの優れた応答性とレスポンスを達成すること。ヒューリスティックやチューニングパラメータは使わない。理解するのが難しいし、効果を予測するのが困難で、何か一つのワークロードに合わせて設定すると他のワークロードに多大なダメージを与えることがあるため。
- cpu プロセススケジューラの過去の複雑な設計を完全に廃止して、とてもシンプルな必要最小限の設計でスケジューラを実装すること。
詳しい情報は BFS と CK パッチセットに関する資料を見て下さい。
待ち行列理論に関する動画
この動画 はスーパーのレジを使って待ち行列理論について説明しています。CK によれば、"BFS が単一の待ち行列を使っているのに対して、メインラインの Linux カーネルでは複数の待ち行列を使用する設計がされていることと動画には関連性があります。人々はタスクであり、レジは CPU です。もちろん単なる待ち行列の設計と CPU スケジューラを同じものとすることはできませんが、この動画は仕組みを上手く言い当てていると感じました。"
パフォーマンスの比較: BFS vs. CFS
BFS を使用する一番のメリットはレスポンスの向上です。ただし、メリットが感じられるのはデスクトップに限りません。標準の linux カーネルに含まれている CFS と比較するために Graysky はレスポンスに関係ないベンチマークもいくつか行っています。7つの異なるマシンを使って、違いが存在しないかどうか確認し、性能がどの程度変わるのか測定しました。BFS の設計目標とは相容れないベンチマークですが、結果は耳寄りなものでした。
For those not wanting to see the full report, here is the conclusion: Kernels patched with the ck1 patch set including the bfs outperformed the vanilla kernel using the cfs at nearly all the performance-based benchmarks tested. Further study with a larger test set could be conducted, but based on the small test set of 7 PCs evaluated, these increases in process queuing, efficiency/speed are, on the whole, independent of CPU type (mono, dual, quad, hyperthreaded, etc.), CPU architecture (32-bit and 64-bit) and of CPU multiplicity (mono or dual socket).
Moreover, several "modern" CPUs (Intel C2D and Ci7) that represent common workstations and laptops, consistently outperformed the cfs in the vanilla kernel at all benchmarks. Efficiency and speed gains were small to moderate.
CPU_Schedulers_Compared.pdf がダウンロードできます。
有効になっているか確認
BFS が有効になっていればカーネルリングバッファに以下のスタートアップメッセージが表示されるはずです:
# dmesg | grep scheduler ... [ 0.380500] BFS CPU scheduler v0.420 by Con Kolivas.
BFS の作り話
BFS パッチのあたったカーネルは systemd を使うことができない
BFS が cgroups をサポートしてないと思ってしまうのはよくある間違いです。BFS は cgroups をサポートしています、ただし cgroups の機能を全てはサポートしてません (例: CPU の制限は動作しません)。