カーネルの主な機能
UEK R6のベース・カーネル・バージョンとして使用された5.4リリースと、UEK R7のベース・カーネル・バージョンとして使用された5.15.0カーネル・リリースの間に、いくつかの主要なコア・カーネル機能がアップストリーム・カーネルで実装されています。 更新リリースでは、一部の機能はUEK R6カーネルにバック・ポートされましたが、UEK R7で使用可能な重要な新機能は次のとおりです:
-
BPF改善
UEK R7では、次のような多くのBerkeleyパケット・フィルタ(BPF)の改善が導入されています:
-
libbpf
で、およびLLVMとBPFタイプ・フォーマット (BTF)でのCompile Once Run Everywhereの紹介。 この変更により、BPFベリファイアはカーネル内BTFを使用して、BPFアセンブリ・コードをチェックし、BPFトレースをより安全かつ高速にします。 -
BPFトランポリンは、カーネル・コードがほぼゼロのオーバーヘッドでBPFプログラムを呼び出せる機能であり、x86_64アーキテクチャで使用できます。 このリリースでは、メモリー・マッピングBPF配列マップおよびその他の改善のサポートも導入されています。
-
カーネル関数を直接呼び出すためのBPFサポート。 この機能拡張により、Transmission Control Protocol (TCP)輻輳制御の実装を再利用するためにカーネル関数を最初に呼び出すBPFプログラムが有効になります。
-
BPFプログラムは実行中にスリープ可能であり、ソケットをアドレスまたはポート番号の範囲にバインドするメカニズムを簡素化します。 新しい
BPF_PROG_TYPE_SK_LOOKUP
プログラム・タイプは、カーネルが受信接続のためにオープン・ソケットを検索するときに実行されます。 このメカニズムは、接続を受信するソケットを決定できます。 このメカニズムは、より簡単な方法でソケットをアドレスまたはポート番号の範囲にバインドする方法として追加されました。 現在、この機能はトレースおよびセキュリティ・モジュール・プログラムに限定されています。
-
-
コア・スケジューリング機能を含む
コア・スケジューリングでは、同じコアで実行されているプロセスのグループを分離できるため、サイド・チャネル攻撃に対する最大限の保護が可能になります。 同時マルチスレッド(SMT)を有効にし、SMTを無効にするためのパフォーマンス・ペナルティを回避しながら、Spectraクラスの脆弱性攻撃を防ぐメソッドとしてコア・スケジューリングを使用できます。
-
新しいcgroup slabメモリー・コントローラ
UEK R7では、新しい制御グループ(cgroup)スラブ・メモリー・コントローラが導入され、メモリーcgroup間でスラブ・メモリーを共有できます。 このスラブ・メモリー・コントローラの新しい実装では、複数のメモリーcgroup間でスラブ・ページを共有することによって、スラブの使用率が大幅に向上します。 また、アカウンティングはページ単位ではなくオブジェクトごとに実行されます。 新しい機能によって大量のメモリーが節約されるため、非効率性が大幅に低下します。
-
io_uringの機能拡張
io_uring
システム・コール(非同期I/O,のLinux API)は、QEMUでサポートされている以前のLinux AIO APIよりも高いパフォーマンスのために設計されています。io_uring
に対するいくつかの拡張は、UEK R7で導入され、そのほとんどはネットワーク化されたI/Oを中心としています。I/Oに関連する
io_uring
パフォーマンスの改善の1つは、内部メモリー管理のオーバーヘッドを除去するための新しいBIOリサイクル・メカニズムです。これは、io_uring
が継続できるI/O操作の数を10%増加すると報告されています。io_uring
のその他の重要な変更には、Oracle ASMLib v3 + oracaleasm-supportがあります。 このリリースでは、Oracle ASMLibは、UEK R7で削除されたレガシーoracleasm
ドライバ・インタフェースのかわりにio_uring
システム・コールを使用します。 -
分割ロック検出
このリリースでは、アイス・レイク・プロセッサなどの機能を持つx86_64システムでは、分割ロック検出CPU機能がデフォルトで有効になっています。 split_lock_detect bootコマンドを使用すると、分割ロックを使用するアプリケーションに
SIGBUS
(バス・エラー・シグナル)を警告または送信できます。 分割ロックは、2つのキャッシュ行にまたがるデータに対してアトミックCPU命令が動作すると発生します。 この操作はキャッシュ・ライン内のアトミック操作より大幅に遅く、他のコアのパフォーマンスが中断されます。split_lock_detect=off
を設定すると、カーネルのこの機能を無効にできます。