コンテンツにスキップ

CachyOS カーネル

CachyOS カーネルは、アップストリームの機能強化、設定、パッチを活用したカスタムカーネルです。

  • 高度なコンパイル: GCC と Clang の両コンパイラーに対応した高度にカスタマイズ可能な PKGBUILD
  • リンク時最適化 (LTO): メインの linux-cachyos パッケージでは、パフォーマンス向上のためデフォルトで Clang Thin LTO を有効化
  • Distributed ThinLTO: Distributed Clang ThinLTO ビルドに対応しカーネルのコンパイル速度を向上
  • プロファイルガイド最適化: デフォルトのカーネル用に AutoFDO + Propeller プロファイリングで最適なコード生成を実現 (詳細はこちら)
  • カーネル制御フロー整合性 (kCFI): LLVM 使用時にセキュリティ機能として利用可能
  • タイマー周波数オプション: 100Hz, 250Hz, 300Hz, 500Hz, 600Hz, 750Hz, 1000Hz から設定可能 (デフォルト: 1000Hz)
  • アーキテクチャ最適化: x86-64-v3, x86-64-v4, AMD Zen4 向け専用ビルドに対応
  • コンパイラ最適化: -fivopts-fmodulo-sched を含む高度な GCC フラグ
  • PREEMPT_DYNAMIC: プリエンプションモードを実行中でも選択できるように (full, lazy, voluntary, none)
  • 複数のスケジューラ: 処理内容や用途に応じて BORE, EEVDF, BMQ スケジューラを選択可能
  • POC Selector: scx_cake から着想を得た高速なアイドル CPU 選択を行う Piece-Of-Cake セレクタで、ウェイクアップレイテンシを削減
  • CachyOS Sauce: スケジューラとシステムのチューニング向けの独自の CONFIG_CACHY 設定
  • AMD P-State の強化: Preferred Core 対応と linux-next からの最新の amd-pstate の改善パッチ
  • リアルタイム対応: BORE スケジューラを統合した RT カーネルビルドを提供
  • 低レイテンシ最適化: 応答性の向上とジッター低減のためのパッチ
  • sched/wait LIFO accept(): accept() ソケットを LIFO 順で処理し、キャッシュ効率を向上
  • BBR3 TCP: 別モジュールで BBRv3 輻輳制御に対応 (BBRv1 も使用可)
  • ZFS 対応: コンパイル済みモジュールにより ZFS ファイルシステムに組み込みで対応
  • NTFS の改善: MFT ミラーの検証、属性の境界チェック、ログファイルの処理に対応する上流の NTFS ドライバの修正
  • MGLRU の強化: ダーティページのライトバック処理の改善、vmscan の reclaim 統計の簡略化、Cachy Sauce MM チューニング (LRU-gen のワーキングセット保護、コンパクション・ウォーターマークの調整、ヒュージページの reclaim) を実施
  • NVIDIA への対応:
    • パッチ済みのプロプライエタリ版 NVIDIA ドライバモジュール
    • オープンソース版 NVIDIA ドライバに対応
    • すぐに使えるモジュールをリポジトリ内で提供
  • I/O スケジューラの改善:
    • BFQ と mq-deadline のパフォーマンス強化
    • ADIOS v3.2.0 マルチキュー I/O スケジューラに対応
  • VRAM Cgroup (DMEM): DRM サブシステムにおいて、cgroup ごとに GPU の VRAM 使用量を制限するデバイスメモリコントローラ
  • AMD ISP4: 対応するプラットフォーム向けの新しい AMD ISP 4 カメラドライバ
  • ゲーミングハードウェア: Steam Deck パッチ (オーディオ, HW Quirks, HID), ROG Ally, MSI Claw HID ドライバ (deckify) 対応
  • Apple 製ハードウェア: ステージング段階の apple-bce ドライバによる T2 MacBook への対応
  • ASUS 製ハードウェア: ASUS ハードウェアの互換性を向上するパッチ
  • Lenovo 製ハードウェア: WMI バッテリー充電制限、GPU/CPU tunable 属性, capdata debugfs
  • HP 製ハードウェア: OMEN Slim と OMEN MAX ノート PC に hp-wmi で対応
  • グラフィックス: HDR サポートを有効化、AMDGPU の min_powercap オーバーライド (amdgpu_ignore_min_pcap)
  • ディスプレイ: AMD 環境での HDMI VRR, ALLM と passive VRR のコネクタプロパティ、EDID からの VESA DSC bits-per-pixel 解析
  • オーディオコーデック: AW88399 と MAX98390 HDA サイドコーデックに対応
  • マルチメディア: v4l2loopback モジュールをデフォルトで内蔵
  • 仮想化: VFIO/GPU パススルー向け ACS オーバーライドに対応
  • アップストリーム統合: Clear Linux と linux-next から厳選したパッチを取り込み

CachyOS カーネルには、ユーザー体験を向上させる、細かいながらも重要な機能がほかにもあります。

  • ストリップなしのカーネルバイナリをもつ、デバッグ向けバージョンのカーネルを内蔵しています。これは AutoFDO でカーネルをプロファイリングするために必要です。
  • Waydroid に必要なモジュールである Binder がカーネル設定で標準で有効になっており、すでに設定済みです。

CachyOS は幅広いカーネルに対応しています。対応するすべてのカーネルには CachyOS ベースパッチセットが適用されています。 それぞれのカーネルには、GCC の代わりに Clang でビルドされた対応する -lto バリアントがあります。

  • linux-cachyos
    • 標準のカーネル、迷ったらこれ
    • 応答性向上のため 1000Hz ティックレートを採用
    • Clang と ThinLTO でビルド
    • パフォーマンス向上のため独自の AutoFDO プロファイルでプロファイリング済み、プロファイリングに使用したスクリプトはこちら
  • linux-cachyos-bore
    • BORE スケジューラを採用
  • linux-cachyos-bmq
    • Alfred Chen による Project C の BMQ スケジューラを採用
      • sched-ext には非対応です。
  • linux-cachyos-deckify
    • ハンドヘルドデバイス向けの標準のカーネル
      • ハンドヘルドデバイスでほかのカーネルを使用することはおすすめせずサポート対象外です。
    • BORE スケジューラを採用
    • ベースパッチセットに加え、ハンドヘルドデバイスでの互換性と全体的な体験を向上させるハンドヘルド専用パッチを適用
  • linux-cachyos-eevdf
    • 応答性向上のためデフォルトカーネルスケジューラをチューニング
  • linux-cachyos-lts
    • 最新の長期サポート (LTS) カーネルをベースに構築
    • BORE スケジューラを採用
    • 最大限の安定性を確保するため、ほかのカーネルと比べてパッチ数を最小限に
  • linux-cachyos-hardened
    • BORE スケジューラを採用
    • linux-hardened パッチセットを適用済み
    • linux-hardened の設定をベースにしたカーネル設定
      • 非常に積極的なセキュリティ強化が施されており、パフォーマンスとユーザー体験に大きな影響があります。
      • sched-ext には非対応です。
  • linux-cachyos-rc
    • Linus のツリーからの最新メインラインカーネルをベースに構築
    • パッチセットに新機能を導入するメインカーネル
  • linux-cachyos-server
    • デスクトップではなくサーバーワークロード向けにチューニング
      • 300Hz ティックレート
      • プリエンプションなし
      • チューニングなしの EEVDF
  • linux-cachyos-rt-bore
    • リアルタイムプリエンプション
    • BORE スケジューラを採用

標準のカーネルに関する提案や改善がある場合は linux-cachyos GitHub で Issue の投稿をお願いします。

Terminal window
linux-cachyos # 標準カーネルのベースパッケージ、Clang と ThinLTO でコンパイル済み
linux-cachyos-hardened # hardened カーネルのベースパッケージ、GCC でコンパイル済み
linux-cachyos-hardened-lto # linux-cachyos-hardened の Clang コンパイル版
linux-cachyos-hardened-{,lto-}headers
linux-cachyos-hardened-{,lto-}nvidia
linux-cachyos-hardened-{,lto-}nvidia-open
linux-cachyos-hardened-{,lto-}zfs
linux-cachyos-hardened-{,lto-}dbg

プリビルドカーネルモジュール

Section titled “プリビルドカーネルモジュール”

より多くのユーザーに対応するために、CachyOS はよく使われる主要なカーネルモジュールをカーネルに搭載した状態で用意しています。これにより、カーネルのアップデートや新しいカーネルのインストールをするごとにモジュールを再コンパイルする必要がなくなり、リポジトリからインストールするだけで使えます。そのため、同じモジュールをプリコンパイル版として提供している -dkms パッケージは実質的に不要になります。

ZFS は CachyOS がサポートする多くのファイルシステムのひとつです。CDDL ライセンスが理由で Linux カーネルのライセンスと互換性がなく、カーネルツリーへのマージができません。提供しているモジュールは最新カーネルとの互換性を確保するため、アップストリームの最新機能と修正が含まれています。

CachyOS はクローズドソースとオープンソースの両方のカーネルモジュールのプリコンパイル版を提供しています。NVIDIA のカーネルモジュール開発はツリー外で行われるため、カーネルのリリースサイクルとは一致せず、デフォルトの設定が最新カーネルと互換性がないことがあります。回避策として、CachyOS はコミュニティが作成したパッチや NVIDIA から直接提供されたパッチをモジュールに適用しています。

なぜ AutoFDO はほかのカーネルバリアントには使われないの?

Section titled “なぜ AutoFDO はほかのカーネルバリアントには使われないの?”

カーネルを実質的に2回ビルドする必要があるため、コンパイルに多くの時間とリソースがかかるからです。AutoFDO を使ったカーネルビルドは以下の手順で行われます。

  1. AutoFDO とデバッグ機能を有効にしてカーネルをビルド
  2. プロファイルを作成 (最適化に必要なプロファイリングデータを収集するためのワークロードを実行)
  3. AutoFDO プロファイルを使ってカーネルを再ビルド

こうした事情により、現時点では linux-cachyos バリアントのみに適用されています。

AutoFDO の詳細についてはこちらをご覧ください。

リアルタイムカーネルでゲームのパフォーマンスを改善できる?

Section titled “リアルタイムカーネルでゲームのパフォーマンスを改善できる?”

リアルタイムカーネルでは改善できません。リアルタイムカーネルは通常のプリエンプティブ (PREEMPT) カーネルと比べて多くのコードのプリエンプトを許容するため、ゲームプロセスなどのたくさんのタスクが頻繁にプリエンプトされ、システムリソースが強制的に奪われることによりパフォーマンスを低下させます。