カーネルリリース Linux 7.2

2ヶ月の開発期間を経て、リーナス・トーバルズはカーネルをリリースした。 Linux 7.2. 最も注目すべき変更点としては、USB4STREAM データストリーミングメカニズム、btrfs、xfs、ext4 のパフォーマンス最適化、i486 CPU サポートのコードの継続的な削除、ネストされた SCHED_EXT スケジューラの作成機能、スワップサブシステムのメモリ消費量の削減、名前のないパイプの高速化、KVM での Intel MBEC および AMD GMET 拡張機能のサポート、AppleTalk プロトコルの削除、AMDGPU ドライバでの HDMI 2.1 FRL の初期サポートなどが挙げられます。

カーネル7.2の主な新機能(1、2、3):

  • ディスク サブシステム、I/O、およびファイル システム
    • iomapメカニズムでは、iomap_iter()関数で既に完了した反復処理に対してmemset関数を再度呼び出す処理が削除されました。これにより、高速NVMeドライブでI/O負荷が高い場合、ext4およびxfsファイルシステムを使用したテストにおいて、1秒あたりの入出力操作数(IOPS)が5%増加しました。
    • XFSは、ゾーンストレージデバイス(ブロックまたはセクターのグループをゾーンに分割し、各ゾーンにはデータの連続的な追加のみを許可し、ブロックグループ全体を更新するもの)のサポートに関して安定版であると宣言されました。
    • Btrfsはデフォルトで大きなフォリオをサポートするようになり、オーバーヘッドが削減され、集中的なシーケンシャルI/O時のパフォーマンスが向上しました。最大2MBの巨大なフォリオに対する実験的なサポートが追加されました。ユーザー空間でチェックサム情報を取得するための新しいioctl、GET_CSUMSが追加されました。これは、mkfsユーティリティや重複排除の最適化などに利用できます。シーケンシャル書き込みパフォーマンスは15%、直接I/Oパフォーマンスは59%向上しました。
    • Ext4ファイルシステムの「高速コミット」メカニズムが大幅に再設計され、競合やデッドロックが解消されました。/proc/fs/ext4/*/fc_info経由でinodeスナップショット統計情報をエクスポートできるようになりました。ディレクトリハッシュ計算のパフォーマンスが最適化されました(255文字の名前ではほぼ2倍、64文字の名前では27%、32文字の名前では11%の速度向上)。
    • F2FSはfserrorエラーリターンをサポートするようになり、ファイルシステムの問題をユーザー空間から監視できるようになりました。割り込み処理にかかる時間が短縮されました。
    • デバイスマッパー(DM)に、インライン暗号化機能を備えたハードウェアデバイスを使用してブロックデバイスの透過的な暗号化および復号化を行うための新しいdm-inlinecryptハンドラが追加されました。
    • カーネルに新しいファイルシステムを追加する方法に関するドキュメントが提供されています。
    • NFSでは、16GB以上のRAMを搭載したシステムでデフォルトのブロックサイズが4MBに増加しました(/proc/fs/nfsd/max_block_sizeを使用してブロックサイズを手動で変更できます)。ディレクトリ委任のサポートが追加され、特定のディレクトリに対する操作を一定期間実行しても、状態の変化をチェックしなくなりました。 サーバ.
    • SMBサーバーは、圧縮形式で保存されたファイルに加え、ネットワーク経由でのデータ送信時のデータ圧縮にも対応するようになりました。
    • 新しいNTFS実装(ntfsplus)では、シンボリックリンクのサポートが追加されました。 Windows また、様々な種類のメタデータ破損に対して適切な処理が保証されます。
    • EROFS(拡張読み取り専用ファイルシステム)のデータをキャッシュするためのfscacheバックエンドは、2年前に非推奨となり、削除されました。
    • Ceph FSは、クライアントセッションの手動リセットをサポートするようになりました。
    • 9Pファイルシステムは、プロジェクトビルドなどのシナリオにおけるパフォーマンスを向上させるために最適化されています。
    • ファイルシステムの大文字小文字の区別に関する情報を取得するためのフラグが、file_getattr() システムコールに追加されました。FS_XFLAG_CASEFOLD フラグは、ファイル名のチェックが大文字小文字を区別せずに実行されることを示し、FS_XFLAG_CASENONPRESERVING フラグは、新しいファイル名を作成する際に大文字小文字の情報が保持されないことを示します。これらのフラグは、大文字小文字を区別しない NFS クライアントで使用できます。
    • openat2() システムコールに O_EMPTYPATH フラグが追加され、空のファイルパスを渡せるようになりました。この場合、開かれるファイルのパスは渡されたファイルディスクリプタに基づいて決定されます。
    • openat2() システムコールに OPENAT2_REGULAR フラグが追加されました。このフラグを指定すると、通常のファイルのみを開くことができます(ソケット、パイプ、デバイスなどの特殊ファイルを開こうとすると、EFTYPE エラーが返されます)。
  • メモリおよびシステム サービス
    • USB4STREAMメカニズムは、USB4ポート経由で接続されたコンピュータ間でデータをストリーミングするために実装されました。/dev/tbstreamXデバイスが追加され、ファイルの読み書きと同様に、標準のread()関数とwrite()関数を使用してデータの読み書きが可能になります。たとえば、一方のホストで「echo hello > /dev/tbstream0」コマンドを使用して情報を送信し、もう一方のホストで「cat /dev/tbstream0」コマンドを使用してその情報を読み取ることができます。USB4STREAMメカニズムは、USB4ケーブル(thunderbolt_net)を介したネットワーク接続を確立する機能と組み合わせることも、ネットワークソケットをサポートしていないアプリケーション間でデータを転送するために単独で使用することもできます。
    • i486プロセッサのサポートを削除するための2回目の変更が行われました。FPUを搭載していないプロセッサ向けの浮動小数点演算ユニットのエミュレーションに関連する13行以上のコードが削除されました。CX8(8バイトの比較交換)およびTSC(タスクスケジューラで使用されるCPUサイクルカウンタ)のハードウェア操作のエミュレーションコードが削除されたため、これらの操作を搭載していないi486プロセッサのサポートも削除されました。
    • OLPC XO-1コンピュータで使用されているAMD Geodeプロセッサのサポートは終了したと発表されました。
    • IntelのTDX(Trusted Domain Extensions)実装の更新に対応しました。TDXは、ゲストシステムのRAMを暗号化するために使用されるメカニズムです。TDXは、BIOSが起動時にフラッシュメモリからRAMに転送する特殊なソフトウェアランタイムモジュールとして実装されています。カーネルには、このモジュールを管理し、再起動を必要とせずに実行中のシステム上で新しいバージョンに置き換える機能が追加されました。
    • 新しいGPUリソ​​ース割り当てスケジューラ(Fair GPUスケジューラ)が実装されました。これは、GPUを使用するプロセスから送信された処理がGPU上で実行される順序を決定するために使用されます。GPUリクエストに従来のFIDOキューを使用する代わりに、新しいスケジューラは、次のプロセスへの遷移時間を含む起動プランを使用するCompletely Fair Scheduler(CFS)タスクスケジューラに基づく公平なリソース割り当てメカニズムを利用します。新しいスケジューラの最も顕著な効果は、GPUを多用する対話型タスクの並列実行時に観察されます。カーネル7.2のリリース直前、Protonで特定のゲームを実行するとパフォーマンスの低下とGPU使用率100%を引き起こす回帰バグのデバッグが必要になったため、Fair GPUスケジューラは無効化され、古いFIFOスケジューラに戻されました。
    • eBPF サブシステムの変更点: 1 つの BPF プログラムを複数のトレースポイントにアタッチする機能を追加しました。トレースポイントにアタッチされた BPF プログラムは、未割り当てのメモリ ページ (ページ フォルト) を正しく処理して、ユーザー スペース コンポーネントのメモリにアクセスできるようになりました。bpf() システム コールは、標準属性 (log_buf、log_size、log_level、log_true_size) をサポートするようになり、BPF_PROG_LOAD、BPF_BTF_LOAD、BPF_MAP_CREATE に限らず、すべての BPF コマンドで統一されたメタデータ転送が可能になりました。BPF 関数に渡すパラメータを 5 つ以下に制限する機能が削除されました。未割り当てのメモリ ページ (ページ フォルト) にアクセスすることを恐れることなく、bpf_arena 共有メモリに安全にアクセスする機能を追加しました。動的なサイズ変更を可能にする、BPF ハッシュ マップ構造の新しいバージョンが実装されました。
    • 割り込み統計情報を含む「/proc/interrupts」出力の生成が最適化され、割り込みカウンタを格納するための構造体が最新化され、キャッシュ機能が追加されました。
    • libselinuxで使用される「/proc/filesystems」ファイルの生成が高速化されました。
    • タスクスケジューラは、プロセッサの内部キャッシュの状態を考慮しながら、CPUコア間での負荷分散をサポートするようになりました。スケジューラは、単一プロセス内のスレッドなど、共有リソースを使用するプロセスをグループ化して同じ高レベルキャッシュを共有させることで、必要なデータがキャッシュ内に見つかる可能性を高め、データアクセスの効率を向上させます。
    • BPFを使用してCPUスケジューラを作成できるSCHED_EXTメカニズムは、ネストされたスケジューラ(サブスケジューラ)を作成する機能を引き続き実装しており、これにより各cgroupが独自のタスクスケジューラを使用できるようになります。
    • Rust-for-ブランチからの変更の移行を継続LinuxRustをドライバやカーネルモジュールの開発における第二言語として使用することに関連する機能です(Rustのサポートはデフォルトでは有効になっておらず、カーネルのビルドに必須の依存関係としてRustは含まれていません)。カーネルにおけるRustのサポートはs390アーキテクチャ向けに実装されています。「unsafe」モードのコードに高速なメモリプリミティブを提供する「zerocopy」パッケージが含まれています。
    • カーネルのビルドに必要なLLVMツールセットの最小バージョンが17.0.1に引き上げられました。
    • カーネルソースコードに付属する最小限のCライブラリnolibcでは Linux また、OpenRISCおよび32ビットPA-RISCアーキテクチャをサポートする、基本的なシステムコールのためのフレームワークを提供する。
    • スワップサブシステムは、静的メタデータの保存時のオーバーヘッドを排除し、トーム使用時に匿名メモリと共有メモリを統合することで、サブシステム自体のパフォーマンス向上と共有メモリ消費量の削減を実現するよう最適化されています。メモリ削減効果は非常に大きく、例えば1TBのスワップパーティションをマウントすると、メモリ消費量が約512MB削減されます。
    • システムに負荷がかかった際にメモリを削除したり、スワップ領域に移動したりしてメモリを解放するメモリ解放メカニズムの性能が向上しました。YCSB(Yahoo! Cloud Serving Benchmark)を使用してMongoDBをテストするなど、特定のワークロードにおいて、最大30%の性能向上が確認されています。
    • ビルドシステムに「make sbom」コマンドが追加されました。このコマンドは、現在のカーネルビルドで使用されるコンポーネント、ライブラリ、依存関係、およびコードファイル内のSPDXヘッダーから取得したライセンス情報を反映したSBOM(ソフトウェア部品表)リストを生成します。
    • 無名パイプの実装はロック処理に最適化されており(メモリ割り当て操作はロックの範囲外に移動される)、これにより無名パイプのスループットが21~48%向上し、レイテンシが17~33%削減されました。
  • 仮想化とセキュリティ
    • スラブアロケータは、Clang 22コンパイラで実装されたアロケーショントークンの使用をサポートするようになりました。トークンを使用すると、メモリ割り当て操作に一意の識別子を割り当てたり、異なる種類のオブジェクトを個別に割り当てたりできるため、バッファオーバーフローの脆弱性を悪用することが難しくなります(分離することで、ある種類のオブジェクトで発生したバッファオーバーフローが、他の種類のオブジェクトに損害を与えるために悪用されることは容易ではありません)。
    • ページ キャッシュ内のデータを改ざんするために Copy Fail 脆弱性で悪用された AF_ALG メカニズムは非推奨となり、将来のリリースで削除される予定です。AF_ALG はカーネルの Crypto API で暗号化計算用のハードウェア アクセラレータを有効にしますが、かなり特殊な状況で使用されます。カーネル 7.2 では、非同期 I/O、レガシー ドライバ、skcipher および aead 実装のゼロ コピー メカニズムのサポートが AF_ALG から削除されました。暗号化アルゴリズムのソフトウェア実装のみが保持され、AF_ALG は攻撃対象領域を大幅に拡大するにもかかわらず、ユーザー空間の暗号化実装と比較してパフォーマンス上の利点がないため、カーネルの Crypto API でのハードウェア暗号化アクセラレータのサポートは削除されました。AF_ALG は Cryptsetup ツールキットで使用されていましたが、最近の 2.8.7 リリースでサポートが削除されました。
    • 外部サービスがカーネルサブシステムの状態を検証してその真正性を保証するIMA(Integrity Measurement Architecture)メカニズムに、測定結果を含む内部テーブルをユーザー空間にエクスポートし、カーネルバッファから削除してメモリを節約する機能が追加されました。
    • Landlockモジュールは、特権を持たないプログラムにカーネルオブジェクトの使用を制限する手段を提供する。 Linux (ファイル階層、ネットワークソケット、ioctlなど)に加え、UDPソケットへのアクセス制御のサポートが追加され、オブジェクトロック情報のログへの出力を選択的に無効にして、ログが不要な情報で溢れるのを防ぐ機能も追加されました。
    • カーネルでは、入力文字列から指定されたバイト数をコピーする strncpy() 関数の使用が非推奨となりました。strncpy() を使用すると、文字列の末尾にヌル文字が欠落したり、ゼロによる余分なパディングが行われたりしてエラーが発生するリスクがありました。strncpy() の代わりに、ヌル終端文字列をコピーする場合は strscpy() および strscpy_pad() 関数を、既知の固定サイズの文字列をコピーする場合は strtomem_pad()、memcpy_and_pad()、memcpy() 関数を使用することをお勧めします。カーネルにおける strncpy() の使用を非推奨にする作業は 2020 年に開始され、70 人の開発者による 362 のコミットが必要でした。
    • ハイパーバイザーでは KVM Intel MBEC(モードベース実行制御)およびAMD GMET(ゲストモード実行トラップ)拡張機能のサポートを追加しました。これにより、メモリ変換テーブルでゲストシステムのカーネルとユーザー空間の実行権限を個別に処理できるようになります。従来、IntelおよびAMDのハードウェア仮想化拡張機能では、メモリページを1ビットのみで実行可能としてマークすることができ、ハイパーバイザレベルでカーネルとユーザー空間の権限をソフトウェアベースで分離していました。MBECとGMETを使用することで、ハイパーバイザ側の権限チェックが不要になり、ゲストシステムからVMexitハイパーバイザへのリソース集約型の制御転送が大幅に削減されます。
  • ネットワークサブシステム
    • TCP-AO(TCP認証オプション、RFC 5925)拡張機能が新しいlibcrypto暗号ライブラリに移行され、コードが簡素化され、パフォーマンスが向上しました。TCP-AOは、MAC(メッセージ認証コード)コードを使用してTCPヘッダーを検証することを可能にし、より新しいHMAC-SHA-1-96およびAES-128-CMAC-96アルゴリズムを使用します。これは、旧式のMD5アルゴリズムに依存していた以前のTCP-MD5オプションに代わるものです。
    • マルチパスTCP(MPTCP)接続でサポートされるサブストリームの数が、8から64に増加しました。
    • カーネルネットワークスタックにおけるrtnl_lockグローバルロックの使用を削減するための作業が継続された。
    • カーネルは、1985年からAppleコンピュータで使用され、1990年代に置き換えられたAppleTalkプロトコルスタックの実装を削除しました。 TCP/IPさらに、PPPoATM に関係のない ATM データ転送技術コンポーネント、ISA および PCMCIA バスに基づく ARCnet ネットワーク インターフェイス、PCMCIA インターフェイスを備えた Bluetooth アダプタ、Chelsea TLS アクセラレータ、TLS と sockmap を統合するためのコード、および cfg80211/mac80211 ワイヤレス スタックの 5/10 MHz 周波数帯域のサポートが削除されました。未解決のブロッキング問題とメンテナの不足のため、TCP オフロード エンジンに基づく TLS 処理アクセラレーションの特定の実装が削除されました (より一般的な TLS オフロード実装は保持されます)。64 ビット システム上の 32 ビット x_tables との互換性コードは無効化され、削除される予定です。
    • PPPoEドライバは、パケットの再構成とセグメンテーションをハードウェアアクセラレーションするためのGRO(Generic Receive Offload)およびGSO(Generic Segmentation Offload)メカニズムをサポートするようになりました。GROとGSOを使用することで、受信トラフィックのスループットが大幅に向上します。例えば、アドレス変換機能を搭載したMediaTek MT7621デバイスでは、最大スループットが130 Mbit/sから630 Mbit/sに増加しました。
  • 機器
    • AMDGPUドライバーにHDMI 2.1 FRL(Fixed Rate Link)技術の初期サポートが追加され、4K/120Hzおよび8K/60Hzでの非圧縮ビデオ伝送が可能になりました。HDMI Forumのライセンス要件のため、これまでオープンソースドライバーではHDMI 2.1のサポートは実現困難でしたが、AMDは今回同様の実装を実現しました。
    • i915ドライバは、ディスプレイコントローラの背景色設定をサポートするようになりました。pin_params.needs_low_addressパラメータが実装されています。
    • Intel Arcシリーズグラフィックスカードおよび統合グラフィックス(Tiger Lakeプロセッサ以降)に採用されているIntel Xeアーキテクチャに基づくGPU向けXe DRM(Direct Rendering Manager)ドライバの開発が継続されました。CRI(Crescent Island)プラットフォームの初期サポートが追加されました。また、Xe3p dGPUプラットフォーム向けシステムコントローラが実装されました。
    • Nouveauドライバーは、NVIDIA GA100 GPUに関する問題を解決します。
    • v3dドライバが更新され、Raspberry Piボード上でのv3D GPUの消費電力を管理する機能が追加されました。
    • TuringマイクロアーキテクチャをベースとしたNVIDIA GeForce RTX 2000シリーズ以降で使用されているGSPファームウェアを搭載したNVIDIA GPU向けに、Novaドライバコンポーネントの統合を継続しました。このドライバはRustで記述されています。NVIDIA GA100、Hopper、およびBlackwellシリーズのGPUのサポートが追加されました。
    • ARM ボード、SoC、デバイスのサポートを追加しました: Apple t8122 (M3)、Motorola Edge 30、Nothing Phone 3a、Google Pixel 3a XL、Qualcomm Dragonwing IPQ9650、Huawei Hawi、ZTE zx297520v3、Renesas R-Car M3Le、ASPEED AST27xx、Cortina Gemini、NXP i.MX6/8/9、NXP LX2160A、TI K3 AM62x。

同時に、ラテンアメリカ自由ソフトウェア財団は、完全に自由なカーネル7.2のバージョンを作成しました。 Linux-libre 7.2-gnu、非フリーのコンポーネントまたはメーカーによって範囲が限定されたコードセクションを含むファームウェアおよびドライバ要素がクリーンアップされました。リリース 7.2 には、新しい rt722-sdca および tac5xx2 ドライバのブロブ クリーンアップが含まれています。amdgpu、nova core、qcom iris、q6v5、iwlwifi、amdxnda、adreno、r8152、および mt792x ドライバのクリーンアップ コードが更新されました。ファームウェアをロードするためのインターフェイスが調整されました。ARM チップのデバイスツリー (dts) ファイルのブロブ名がクリーンアップされました。

出所: オープンネット.ru

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster