カスタムLinuxカーネルを作るのにおすすめのパッチ

Linuxでシステムを構築した場合、現在公開されているLinuxカーネルでも十分な性能を発揮させる事が出来ます。しかし、パフォーマンスやレスポンスを向上させる事を目的としたパッチを当ててビルドを行う事で、用途に最適なカスタムカーネルを作る事が出来ます。

1.CPUスケジューラー

LinuxカーネルのデフォルトのCPUスケジューラーは、CFSです。この他にも、パフォーマンス・レスポンスを向上する用途で使える物として、MuQSSやPDSやBMQなどがあります。

MuQSSは、Con Kolivas氏が開発したCPUスケジューラーです。CK1パッチと呼ばれるカーネルのパフォーマンスやレスポンスを向上させるパッチセットと組み合わせる事で快適なデスクトップ環境を構築出来ます。MuQSS独自のカーネル設定が行えるので、環境に合わせた調整も可能です。


PDSとBMQは、Alfred Chen氏が開発しているCPUスケジューラーです。PDSは、元々旧版MuQSSを派生して作られたCPUスケジューラーで、その特性は旧版MuQSSによく似ています。BMQは、Alfred Chen氏がGoogleのマイクロカーネル「Zircon」をフューチャーして開発が進められたCPUスケジューラーです。現在は、PDSとBMQを選択してビルド出来るようにProject Cと言うプロジェクト上でカーネルとパッチが公開されています。


MuQSS・PDS・BMQは、ソフトウェア的にリアルタイム処理が行えます。低レイテンシー版のバニラカーネルよりも高いリアルタイム処理が行えますが、もっと厳密に行いたい場合にはハードウェアリアルタイム処理が出来る仕組みが必要になってきます。それを実現出来るのが、PREEMPT_RTパッチです。

実際にこれらのパッチを適用してパフォーマンス向上やレスポンス向上の効果はあるのか気になるところですが、レスポンスに関しては効果を感じられます。しかし、パフォーマンス向上に関しては、CFSのパフォーマンスがかなり改善してきた事もあって、別途CPUスケジューラーのパッチを当てる必要は無くなりつつあります。この事に着目して作られたカスタムカーネルとしては、Xanmod kernelがあります。

Xanmod kernelは、かつてMuQSSを採用している時期もありましたが、カーネルコンフィグで調整を行う事で、CFSでもゲーム向けの用途で使っても十分にパフォーマンスが出るようにしています。

CFSやMuQSSを採用し、かなり多くのパッチを当てているのがZen kernelです。開発者の一人であるSteven Barrett(damentz)氏は、更に調整を行ったLiquorix kernelのパッチを公開しています。

2.I/Oスケジューラー

パフォーマンスアップやレスポンスアップを行いたい場合、CPUスケジューラー以外にも注目しておきたいのが、I/Oスケジューラーです。特にハードディスクを使っている場合に効果が期待出来ます。一方で、SSDの場合は高速である為、I/OスケジューラーをNoneに設定しておくと何も処理を行わないので、SSDの性能を発揮させられます。

I/Oスケジューラーに関しては、Arch LinuxのWikiに分かり易く説明されているので、そちらを参考にすると良いでしょう。

3.futex2

最近のLinuxカーネルパッチの中でも、特にゲーミング分野で注目されているのがfutex2です。Steamの運営会社であるValve社がCodeWeavers社と共同開発している、Linux上でWindowsのソフトウェアを動作させる環境「Proton」によって、Steam Playを使うと、従来よりもWindowsソフトウェアを快適に動作させる事が可能になりました。futex2は、Valve社とCollabora社が共同開発している仕組みで、複数のfutexを待機させて、Windowsの動作に一層近い形にする事を実現しています。

Protonは、Linux版SteamでWindowsゲームの動作を実現する為のWindows APIレイヤーです。ベースになっているのは、Windows APIレイヤー「Wine」であり、これにSteam向けのパッチが多数当てられています。

この公式版Protonに更に最新ゲーム向けのパッチと各種調整を施しているのが、GloriousEggroll版Proton(Proton GE)です。Steam Playで、どのバージョンのProtonが良いのかはゲームによって異なります。古いバージョンと相性が良い物もあれば、Proton GEの最新版と相性が良い場合もあります。

対応ゲームに関しては、ProtonDBというデータベースサイトで検索する事が出来ます。

話を戻すと、カスタムカーネルにfutex2パッチを当てると、Steam Play上でのゲームのパフォーマンスが良くなる可能性があります。その為、ゲーミング用途でカスタムカーネルを使いたい時には、futex2パッチを当てておくと良いでしょう。ちなみに、futexを使うかどうかはSteam上での各ゲームのプロパティ画面から起動オプションで設定する事が可能です。

4.UKSMとle9

メモリーの使用量を抑制するパッチとして使われているのが、UKSMとle9です。UKSMはNai Xia氏が開発した仕組みで、Linuxにデフォルトで組み込まれているKSMよりも強力な処理を行えます。結果的にはメモリーの使用量を抑える事が出来ますが、UKSMは処理をするデータの量が多いほどCPUリソースを使うので、ある程度CPU性能に余裕があるマシンで使うと良いかもしれません。LinuxデフォルトのKSMでも十分に強力な処理が行えるので、UKSMのパッチを当てつつ、マシンに応じて選択してビルドするといった使い方も良いかもしれません。

le9は、ファイルキャッシュがRAMから削除されないように保護をしてくれます。スラッシングが起こったり、メモリー不足に近い状態になると、高遅延が発生して、コンピューターを快適に使いづらくなってきます。このような状態を防ぐのに役立つのがle9パッチです。特に、メモリー容量が少ないマシンでの効果が期待出来ます。le9パッチを適用出来るのであれば、当てておいた方が良いでしょう。

5.Aufs

岡島順治郎氏によって開発されたファイルシステムサービスです。複数のファイルシステム上にあるフォルダやファイルを透過的にマージする事が出来るのが特徴です。かつて、コンテナ技術「Docker」で使われていたので必須技術でしたが、Dockerの最近のバージョンはLinuxカーネルにデフォルトで組み込まれているoverlayfsベースのoverlay2を使うので、Aufsを使うシーンはLiveCDにカーネルを組み込むなど限定されつつあります。

カスタムカーネルを作る時には一応組み込んでいますが、必要が無ければ、組み込む必要は無いと思います。

この他にも、環境に合わせてパッチを適用するとパフォーマンスが改善する事があります。Linuxカーネル公式の最近のバージョンに組み込まれた物も多数存在しています。その為、その時々に新たなパッチが出てくるので、取捨選択を行って組み込んでいくと良いでしょう。

Linuxのメーリングリストでパッチを探すのが大変であるなら、Phoronixの記事は有用なパッチ探しをする際に役立つのでおすすめです。



この記事が気に入ったらサポートをしてみませんか?