「Linux-ck」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(3人の利用者による、間の9版が非表示)
2行目: 2行目:
 
[[en:Linux-ck]]
 
[[en:Linux-ck]]
 
[[ru:Linux-ck]]
 
[[ru:Linux-ck]]
[[zh-CN:Linux-ck]]
+
[[zh-hans:Linux-ck]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related4|Linux-ck/Changelog}}
+
{{Related|Repo-ck}}
{{Related4|Repo-ck}}
+
{{Related|Modprobed-db}}
{{Related4|Modprobed-db}}
 
 
{{Related articles end}}
 
{{Related articles end}}
   
 
== パッケージ ==
 
== パッケージ ==
   
{{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]] や [[#コンパイル済みのパッケージを使う|repo-ck の非公式リポジトリ]]にあるパッケージでインストールすることができ、それによって Brain Fuck Scheduler (BFS) を置き換える MuQSS (Multiple Queue Skiplist Scheduler) などを含む Con Kolivas の ck パッチセットがあてられたカーネル/ヘッダーを動作させることが可能です。どんな負担がかかっているときも素晴らしいデスクトップの応答性とレスポンスを得ることができる MuQSS を求める多くの Archer はこのパッケージを使っています。
  +
  +
CK パッチセットはデスクトップ・ノートパソコンでの使用を想定して設計しておりサーバー向けではありません。CPU のコア数が16個以下の環境で低遅延システムを実現します。
   
 
=== リリースサイクル ===
 
=== リリースサイクル ===
17行目: 18行目:
 
Linux-ck は公式の ARCH カーネルのリリースサイクルにおおよそ従っています。リリースには以下が必要になります:
 
Linux-ck は公式の ARCH カーネルのリリースサイクルにおおよそ従っています。リリースには以下が必要になります:
   
  +
* 最新のカーネルバージョンに対応した CK パッチセット
* 上流のコード
 
  +
* 対応する Arch カーネルが存在しないと nvidia など他のパッケージが壊れます。公式の {{Pkg|linux}} パッケージについては [https://git.archlinux.org/svntogit/packages.git/log/trunk?h=packages/linux git.archlinux.org] を参照。
* CK のパッチセット
 
* BFQ パッチセット
 
* ARCH config/config.x86_64 セット (メジャーバージョンが上がったときだけ)
 
   
 
=== パッケージのデフォルト ===
 
=== パッケージのデフォルト ===
26行目: 25行目:
 
コンフィグファイルには3つの変更がされています:
 
コンフィグファイルには3つの変更がされています:
 
# ck パッチセットを有効化/無効化するオプション。
 
# ck パッチセットを有効化/無効化するオプション。
  +
# tickrate を 100 Hz に設定 (CK の推奨事項)。
# BFQ パッチセットをユーザーとの対話なくコンパイルするのに必要なオプション。
 
 
# コンパイル時に追加の CPU 最適化を有効化する [https://github.com/graysky2/kernel_gcc_patch GCC パッチ]の適用 (このオプションは標準の linux-ck パッケージには含まれていないためユーザーがカスタムオプションでコンパイルするときだけ利用できます)。
 
# コンパイル時に追加の CPU 最適化を有効化する [https://github.com/graysky2/kernel_gcc_patch GCC パッチ]の適用 (このオプションは標準の linux-ck パッケージには含まれていないためユーザーがカスタムオプションでコンパイルするときだけ利用できます)。
   
他のオプションはすべてメインカーネルのコンフィグファイルにそって ARCH のデフォルトに設定されています。もちろん、ユーザーは自由にコンフィグを修正することが可能です。linux-ck パッケージには ''nconfig'' コンフィグエディタを使うオプションが含まれています (下のセクションを参照)。CK の [http://ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt BFS configuration FAQ] に設定値の提案があります。
+
他のオプションはすべてメインカーネルのコンフィグファイルにそって ARCH のデフォルトに設定されています。もちろん、ユーザーは自由にコンフィグを修正することが可能です。{{AUR|linux-ck}} パッケージには ''nconfig'' コンフィグエディタを使うオプションが含まれています (下のセクションを参照)。CK の [http://ck.kolivas.org/patches/bfs/bfs-configuration-faq.txt BFS configuration FAQ] に設定値の提案があります。
   
 
=== 長期サポート版 (LTS) の CK リリース ===
 
=== 長期サポート版 (LTS) の CK リリース ===
35行目: 34行目:
 
linux-ck パッケージの他に、上記のパッチセットがあてられた以下の LTS カーネルリリースが存在します。上述の通りコンフィグファイルに修正が加えられています:
 
linux-ck パッケージの他に、上記のパッチセットがあてられた以下の LTS カーネルリリースが存在します。上述の通りコンフィグファイルに修正が加えられています:
   
* {{AUR|linux-lts-ck}} - CK パッチセットがあたった最新の ArchLinux LTS カーネル
+
* {{AUR|linux-lts-ck}} - CK パッチセットがあたった最新の Arch Linux LTS カーネル
* {{AUR|linux-lts310-ck}} - CK パッチセットがあたった 3.10 LTS カーネル
 
* {{AUR|linux-lts312-ck}} - CK パッチセットがあたった 3.12 LTS カーネル
 
   
上記3つのパッケージは clfarron4 によってメンテナンスされています。パッケージ済みのバージョンは非公式の ck リポジトリには存在しません。
+
{{Note|上記パッケージは vishwin によってメンテナンスされています。パッケージ済みのバージョンは非公式の ck リポジトリには存在しません。}}
   
 
== インストール ==
 
== インストール ==
   
  +
{{Note|カーネルを追加したら、ユーザーは手動で[[ブートローダー]]の設定ファイルを更新して新しいカーネルイメージが使われるようにする必要があります。}}
{{Note|As with *any* additional kernel, users will need to manually edit their boot loader's config file to make it aware of the new kernel images. For example, users of [[GRUB]] should execute "grub-mkconfig -o /boot/grub/grub.cfg". Syslinux, GRUB-legacy, etc. will need to be modified as well.}}
 
   
 
ユーザーがカーネルパッケージを入手する方法は2つあります。
 
ユーザーがカーネルパッケージを入手する方法は2つあります。
60行目: 57行目:
 
オプションに関する詳細は PKGBUILD のラインコメントを見て下さい。AUR からコンパイルするときは絶対に読むようにしましょう。
 
オプションに関する詳細は PKGBUILD のラインコメントを見て下さい。AUR からコンパイルするときは絶対に読むようにしましょう。
   
{{Note|AUR には linux-ck 専用のモジュールのための PKGBUILD が存在します。例えば {{AUR|nvidia-ck}}, {{AUR|nvidia-304xx-ck}},{{AUR|nvidia-340xx-ck}}, {{AUR|broadcom-wl-ck}} などがあります。}}
+
{{Note|AUR には linux-ck 専用のモジュールのための PKGBUILD が存在します。例えば {{AUR|nvidia-ck}}, {{AUR|nvidia-340xx-ck}}, {{AUR|broadcom-wl-ck}} などがあります。もしくは適切な [[DKMS]] パッケージを使ってください。例えば [[NVIDIA#カスタムカーネル]]に書かれている {{pkg|nvidia-dkms}} をインストールします。}}
   
 
=== コンパイル済みのパッケージを使う ===
 
=== コンパイル済みのパッケージを使う ===
   
カーネルのコンパイルに時間を割きたくないユーザーのために、[[en2:User:Graysky|graysky]] によってメンテナンスされている非公式リポジトリが存在します。
+
カーネルのコンパイルに時間を割きたくないユーザーのために、[[en2:User:Graysky|graysky]] によってメンテナンスされている非公式リポジトリが存在します。詳しくは [[Repo-ck]] を見てください
   
  +
== BFQ I/O スケジューラを有効にする方法 ==
詳しくは、次を見て下さい: [[en2:Repo-ck|Repo-ck]]。
 
  +
{{Note|BFQ (Budget Fair Queueing) と MuQSS (Multiple Queue Skiplist Scheduler) を混同してはいけません。MuQSS は CPU スケジューラでありデフォルトで有効にされますが、BFQ は I/O スケジューラであり使用するには明示的に有効にする必要があります。}}
   
  +
Budget Fair Queueing は各プロセス/スレッドにディスクのスループットの一部を割り当てるディスクスケジューラです。開発者によって驚くようなレイテンシパフォーマンスを示す [https://www.youtube.com/watch?v=KhZl9LjCKuU ベンチマーク] が公開されています。
上述の LTS ブランチの非公式リポジトリも存在します。[[en2:User:clfarron4|clfarron4]] によってメンテナンスされている [[非公式ユーザーリポジトリ#linux-lts-ck|linux-lts-ck]], [[非公式ユーザーリポジトリ#linux-lts31x-ck|linux-lts31x-ck]] です。
 
   
== BFQ I/O スケジューラを有効にする方法 ==
+
様々な I/O スケジューラの背景情報と "BFQ" を有効にする方法については[[パフォーマンスの最大化#I/O スケジューラの設定]]を参照してください。
{{Note|BFS (Brain Fuck Scheduler) と BFQ (Budget Fair Queueing) を混同してはいけません。BFS は CPU スケジューラでありデフォルトで有効にされますが、BFQ は I/O スケジューラであり使用するには明示的に有効にする必要があります。}}
 
   
  +
== MuQSS についての簡単な説明 ==
Budget Fair Queueing は各プロセス/スレッドにディスクのスループットの一部を割り当てるディスクスケジューラです。開発者によって驚くようなレイテンシパフォーマンスを示す [http://www.youtube.com/watch?v=KhZl9LjCKuU ベンチマーク] が公開されています。
 
   
  +
MuQSS はデスクトップ指向の cpu プロセススケジューラであり、負担レベルが通常のときに極端な低レイテンシによって素晴らしい応答性を実現します。
linux-ck-3.0.4-2 から、BFQ パッチセットはデフォルトでパッケージに適用されるようになっていますが、BFQ スケジューラは手動で有効にする必要があります。有効にする方法は複数存在します。
 
   
  +
=== MuQSS の設計目標 ===
=== 全てのデバイスで BFQ を有効にする ===
 
   
  +
MuQSS には2つの大きな設計目標があります:
AUR からコンパイルする場合は、ビルドする前に PKGBUILD の BFQ フラグを "y" に設定してください:
 
  +
#デスクトップの優れた応答性とレスポンスを達成すること。ヒューリスティックやチューニングパラメータは使わない。理解するのが難しいし、効果を予測するのが困難で、何か一つのワークロードに合わせて設定すると他のワークロードに多大なダメージを与えることがあるため。
_BFQ_enable_="y"
 
  +
#cpu プロセススケジューラの過去の複雑な設計を完全に廃止して、とてもシンプルな必要最小限の設計でスケジューラを実装すること。
   
  +
=== 待ち行列理論に関する動画 ===
[[repo-ck]] を使っている場合やビルド前に PKGBUILD に修正を加えなかった場合は[[カーネルパラメータ]]に {{ic|1=elevator=bfq}} を追加することができます。
 
   
  +
[http://www.youtube.com/watch?v=F5Ri_HhziI0 この動画] はスーパーのレジを使って待ち行列理論について説明しています。CK によれば、"BFS が単一の待ち行列を使っているのに対して、メインラインの Linux カーネルでは複数の待ち行列を使用する設計がされていることと動画には関連性があります。人々はタスクであり、レジは CPU です。もちろん単なる待ち行列の設計と CPU スケジューラを同じものとすることはできませんが、この動画は仕組みを上手く言い当てていると感じました。"
=== 特定のデバイスでだけ BFQ を有効にする ===
 
   
  +
=== MuQSS が有効になっているか確認 ===
もしくはデバイスごとに BFQ を使うようにカーネルに指示することもできます。例えば、{{ic|/dev/sda}} で BFQ を有効にするには:
 
# echo bfq > /sys/block/sda/queue/scheduler
 
   
  +
MuQSS が有効になっていればカーネルリングバッファに以下のスタートアップメッセージが表示されるはずです:
有効になっていることを確認:
 
  +
$ dmesg | grep -i muqss
# cat /sys/block/sda/queue/scheduler
 
  +
...
noop deadline cfq [bfq]
 
  +
MuQSS CPU scheduler v0.120 by Con Kolivas.
  +
  +
=== MuQSS パッチのあたったカーネルと systemd ===
   
  +
MuQSS が cgroups をサポートしてないと思ってしまうのはよくある間違いです。MuQSS は cgroups をサポートしています、ただし cgroups の機能を全てはサポートしてません (例: CPU の制限は動作しません)。
この方法では再起動すると設定が戻ってしまうので注意してください。次のブート時に自動的に変更させるには、以下の tmpfile を作成します (sdX は適当なデバイスに置き換えて下さい):
 
{{hc|/etc/tmpfiles.d/set_IO_scheduler.conf|
 
w /sys/block/sdX/queue/scheduler - - - - bfq}}
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
116行目: 114行目:
 
=== VirtualBox で Linux-ck を動作させる ===
 
=== VirtualBox で Linux-ck を動作させる ===
   
  +
VirtualBox は Linux-ck などのカスタムカーネルでも問題なく動作します。公式の ARCH カーネルヘッダのパッケージをインストールしておく必要はありません。
VirtualBox works just fine with custom kernels such as Linux-ck ''without'' the need to keep any of the official ARCH kernel-headers packages on the system!
 
   
 
忘れずにユーザーを ''vboxusers '' グループに追加してください:
 
忘れずにユーザーを ''vboxusers '' グループに追加してください:
125行目: 123行目:
 
{{Note|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.}}
 
{{Note|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 を使用する方法は [[en2:Repo-ck|Repo-ck]] の記事を見て下さい。
+
pacman で直接 http://repo-ck.com を使用する方法は [[Repo-ck]] の記事を見て下さい。
   
 
==== virtualbox-ck-host-modules パッケージ (AUR から linux-ck をビルドした場合に推奨) ====
 
==== virtualbox-ck-host-modules パッケージ (AUR から linux-ck をビルドした場合に推奨) ====
137行目: 135行目:
 
# dkms install vboxhost/4.3.12
 
# dkms install vboxhost/4.3.12
   
  +
{{Note|2番目のコマンドの virtualbox のバージョン番号は適当に置き換えてください。執筆時点では、4.3.12 が最新です。}}
{{Note|Make sure to substitute the correct version number of virtualbox in the second command. At the time of writing, 4.3.12 is current.}}
 
   
 
=== ダウングレード ===
 
=== ダウングレード ===
   
 
前のバージョンの linux-ck にダウングレードしたい場合、複数の選択肢があります:
 
前のバージョンの linux-ck にダウングレードしたい場合、複数の選択肢があります:
* Source archives are [http://repo-ck.com/bench.htm available] dating back to linux-ck-3.3.7-1.
+
* linux-ck-3.3.7-1 までのソースアーカイブが [http://repo-ck.com/bench.htm 存在] します。
* [http://pkgbuild.com/git/aur-mirror.git/log/linux-ck AUR.git] holds AUR git commits for linux-ck dating back to linux-ck-2.6.39.3-1.
+
* [http://pkgbuild.com/git/aur-mirror.git/log/linux-ck AUR.git] には linux-ck-2.6.39.3-1 までの linux-ck の git コミットが保存されています。
   
 
=== フォーラムのサポート ===
 
=== フォーラムのサポート ===
   
  +
フォーラムにサポートのスレッドを作るときは、linux-ck パッケージに関連する投稿であることをわかるように題名に含めてください。
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 パッチセットに関する資料|BFS と CK パッチセットに関する資料]]を見て下さい。
 
 
=== 待ち行列理論に関する動画 ===
 
 
See [http://www.youtube.com/watch?v=F5Ri_HhziI0 this video] about queuing theory for an interesting parallel with
 
supermarket checkouts. Quote from CK, "the relevance of that video is that BFS uses a single queue, whereas the mainline Linux kernel uses a multiple queue design. The people are tasks, and the checkouts are CPUs. Of course there's a lot more to a CPU scheduler than just the queue design, but I thought this video was very relevant."
 
 
=== パフォーマンスの比較: BFS vs. CFS ===
 
 
A major benefit of using the BFS is increased responsiveness. The benefits however, are not limited to desktop feel. [[en2:User:Graysky|Graysky]] put together some non-responsiveness based benchmarks to compare it to the CFS contained in the "stock" linux kernel. Seven different machines were used to see if differences exist and, to what degree they scale using performance based metrics. Again, these end-points were never factors in the primary design goals of the bfs. Results were encouraging.
 
 
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.
 
 
[http://repo-ck.com/bench/cpu_schedulers_compared.pdf CPU_Schedulers_Compared.pdf] がダウンロードできます。
 
 
=== 有効になっているか確認 ===
 
 
BFS が有効になっていればカーネルリングバッファに以下のスタートアップメッセージが表示されるはずです:
 
# dmesg | grep scheduler
 
...
 
[ 0.380500] BFS CPU scheduler v0.420 by Con Kolivas.
 
 
== BFS の作り話 ==
 
 
=== BFS パッチのあたったカーネルは systemd を使うことができる ===
 
 
BFS が cgroups をサポートしてないと思ってしまうのはよくある間違いです。BFS は crgoups をサポートしています、ただし cgroups の機能を全てはサポートしてません (例: CPU の制限は動作しません)。
 
   
  +
== 参照 ==
== BFS と CK パッチセットに関する資料 ==
 
   
* [http://ck.kolivas.org/patches/bfs/bfs-faq.txt Con Kolivas の BFS に関する白書]
+
* [http://ck.kolivas.org/patches/ Con Kolivas のカーネルパッチリポジトリ]
  +
* [http://ck-hack.blogspot.it/ Con Kolivas のブログ]
* [[Wikipedia:ja:Brain Fuck Scheduler|Wikipedia の BFS 記事]]
 
  +
* [http://lkml.org/lkml/2009/9/6/136 Linux カーネルメーリングリストにおける Con Kolivas による BFS の最初のアナウンス]
* [http://ck-hack.blogspot.com/ Con Kolivas のブログ]
 
  +
* [[wikipedia:Con_Kolivas|Wikipedia の Con Kolivas についての記事]]
  +
* [[wikipedia:ja:Brain_Fuck_Scheduler|Wikipedia の BFS 記事]]

2018年5月8日 (火) 21:41時点における版

関連記事

パッケージ

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 パッケージに関連する投稿であることをわかるように題名に含めてください。

参照