機械翻訳について

カーネルの主な機能

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を設定すると、カーネルのこの機能を無効にできます。