4.9. カーネル
RHEL 9.1 のカーネルバージョン
Red Hat Enterprise Linux 9.1 は、カーネルバージョン 5.14.0-162 で配布されます。
list_lru
のメモリー消費が最適化されました
内部カーネルデータ構造 list_lru
は、カーネル i ノードとファイルのディレクトリーエントリーの「最近使用されていない」ステータスを追跡します。以前は、list_lru
に割り当てられた構造体の数は、マウントポイント数および現在のメモリー cgroups
数に正比例していました。これらの数値は両方とも、実行中のコンテナーの数とともに増加し、メモリー消費は O(n^2)
になります。この場合の n
は実行中のコンテナーの数です。この更新により、システム内の list_lru
のメモリー消費が O(n)
に最適化されます。その結果、特に実行中のコンテナーが多数あるシステムで、ユーザーアプリケーションに十分なメモリーを使用できるようになりました。
(BZ#2013413)
BPF が Linux カーネルバージョン 5.16 にリベースされました。
Berkeley Packet Filter (BPF) 機能が Linux カーネルバージョン 5.16 にリベースされ、複数のバグ修正と機能拡張が行われました。以下は、主な変更点です。
内部 BPF プログラムセクションの処理と
libbpf
ユーザー空間ライブラリーのbpf_program__set_attach_target()
API を合理化しました。bpf_program__set_attach_target()
API は、BPF ベースのプログラムで BTF ベースの接続ターゲットを設定します。-
宣言にタグ付けできる
BTF_KIND_TAG
kind のサポートが追加されました。 -
bpf_get_branch_snapshot()
ヘルパーのサポートが追加されました。これにより、トレースプログラムはハードウェアから最後の分岐レコード (LBR) をキャプチャできるようになります。 -
libbpf
ユーザー空間ライブラリーにレガシーkprobe
イベントサポートが追加されました。これにより、レガシーインターフェイスを介してkprobe
トレースポイントイベントを作成できます。 -
__sk_buff
ヘルパー関数を使用し、BPF 固有の構造を介してハードウェアタイムスタンプにアクセスする機能が追加されました。 -
i40e
およびice
ドライバーのサポートにより、AF_XDP
バッファープールにおける RX バッファー割り当て用バッチインターフェイスのサポートが追加されました。 -
最近マージされたレガシー
kprobe
を補完するために、libbpf
ユーザー空間ライブラリーにレガシーuprobe
のサポートが追加されました。 -
bpf_trace_vprintk()
が可変printk
ヘルパーとして追加されました。 -
libbpf
1.0 の取り組みの一環として、より厳密な BPF プログラムセクション名の処理のためにlibbpf
オプトインが追加されました。 -
perf RB
などの特殊なマップを検索し、作成中に BTF タイプ識別子を内部的に削除するための、libbpf
サポートが追加されました。 -
セット内に要素が存在するかどうかをテストする
Bloomfilter
BPF マップタイプが追加されました。 - BPF からのカーネルモジュール関数呼び出しに対するサポートが追加されました。
-
ライトスケルトンでタイプレスの弱い
ksym
に対するサポートが追加されました。 -
BTF_KIND_DECL_TAG
kind に対するサポートが追加されました。
実行中のカーネルで使用可能な BPF 機能の完全なリストの詳細は、bpftool feature
コマンドを使用してください。
(BZ#2069045)
BTF データがカーネルモジュールに配置されるようになりました
BPF Type Format (BTF) は、BPF プログラムおよびマップに関連するデバッグ情報をエンコードするメタデータ形式です。以前は、カーネルモジュールの BTF データは kernel-debuginfo
パッケージに格納されていました。そのため、カーネルモジュールに BTF を使用するには、対応する kernel-debuginfo
パッケージをインストールする必要がありました。今回の更新により、BTF データがカーネルモジュールに直接配置されるようになりました。その結果、BTF を機能させるために追加のパッケージをインストールする必要はありません。
(BZ#2097188)
kernel-rt
ソースツリーが RHEL 9.1 ツリーに更新されました。
kernel-rt
ソースが更新され、最新の Red Hat Enterprise Linux カーネルソースツリーを使用するようになりました。リアルタイムパッチセットも、最新のアップストリームバージョン v5.15-rt
に更新されました。これらの更新は、バグ修正および機能強化を多数提供します。
(BZ#2061574)
ARM、AMD、および Intel 64 ビットアーキテクチャーで動的プリエンプティブスケジューリングが有効になりました
RHEL 9 は、ARM、AMD および Intel 64 ビットアーキテクチャーで動的スケジューリング機能を提供します。この機能拡張により、コンパイル時ではなく、起動時または実行時にカーネルのプリエンプションモードを変更できるようになりました。/sys/kernel/debug/sched/preempt
ファイルには現在の設定が含まれており、runtime
の変更が可能です。
DYNAMIC_PREEMPT
オプションを使用すると、起動時に preempt=
変数を none
、voluntary
または full
に設定できます。デフォルトは、voluntary
プリエンプションです。動的プリエンプティブ処理を使用すると、デフォルトのプリエンプションモデルをオーバーライドして、スケジューリングレイテンシーを改善できます。
(BZ#2065226)
stalld
がバージョン 1.17 にリベースされました
stall
デーモンを提供する stalld
プログラムは、Linux システムでオペレーティングシステムスレッドの枯渇状態を防ぐためのメカニズムです。このバージョンは、スレッドの枯渇状態を監視します。枯渇は、スレッドが枯渇しきい値より長く CPU 実行キューにある場合に発生します。
この stalld
バージョンには、以前のバージョンからの改善とバグ修正が多数含まれています。注目すべき変更には、実行可能な停止寸前のタスクを検出する機能が含まれます。
stalld
が枯渇スレッドを検出すると、プログラムはスレッドのスケジューリングクラスを SCHED_DEADLINE
ポリシーに変更します。これにより、指定された CPU がスレッドを実行するためのわずかな時間がスレッドに与えられます。timeslice
が使用されると、スレッドは元のスケジューリングポリシーに戻り、stalld
は引き続きスレッドの状態を監視します。
tpm2-tools
パッケージが tpm2-tools-5.2-1
バージョンにリベースされました
tpm2-tools
パッケージがバージョン tpm2-tools-5.2-1
にリベースされました。このアップグレードでは、多くの重要な昨日書く古布とバグ修正が行われました。以下は、主な変更点です。
-
tpm2_createprimary
およびtpm2_create
ツールを使用したプライマリーオブジェクト作成時の公開鍵出力に対するサポートが追加されました。 -
公開鍵の出力形式を出力する
tpm2_print
ツールのサポートが追加されました。tpm2_print
は、トラステッドプラットフォームモジュール (TPM) データ構造をデコードし、囲まれた要素を出力します。 -
64 KB を超えるログを読み取る
tpm2_eventlog
ツールに対するサポートが追加されました。 -
セッション属性の表示と設定をサポートする
tpm2_sessionconfig
ツールが追加されました。
重要な変更の詳細は、/usr/share/doc/tpm2-tools/Changelog.md
ファイルを参照してください。
(BZ#2090748)
Intel E800 デバイスが iWARP および RoCE プロトコルをサポートするように
この機能拡張により、enable_iwarp
および enable_roce
devlink パラメーターを使用して、iWARP または RoCE プロトコルのサポートをオンまたはオフにできるようになりました。この必須機能を使用すると、いずれかのプロトコルを使用してデバイスを設定できます。Intel E800 デバイスは、同じポートで両方のプロトコルを同時にサポートしません。
特定の E800 デバイスの iWARP プロトコルを有効または無効にするには、まずカードの PCI の場所を確認します。
$ lspci | awk '/E810/ {print $1}' 44:00.0 44:00.1 $
次に、プロトコルを有効または無効にします。devlink コマンドの引数として、カードの最初のポートに pci/0000:44:00.0
を使用し、2 番目のポートに pci/0000:44:00.1
を使用できます。
$ devlink dev param set pci/0000:44:00.0 name enable_iwarp value true cmode runtime $ devlink dev param set pci/0000:44:00.0 name enable_iwarp value false cmode runtime
特定の E800 デバイスの RoCE プロトコルを有効または無効にするには、上記のようにカードの PCI の場所を確認します。次に、以下のコマンドの 1 つを使用します。
$ devlink dev param set pci/0000:44:00.0 name enable_roce value true cmode runtime $ devlink dev param set pci/0000:44:00.0 name enable_roce value false cmode runtime
(BZ#2096127)