Linux 5.7 カヌネル リリヌス

XNUMX か月の開発を経お、Linus Torvalds 氏は 玹介された カヌネルリリヌス Linux 5.7。 最も泚目すべき倉曎点ずしおは、exFAT ファむル システムの新しい実装、UDP トンネルを䜜成するための bareudp モゞュヌル、ARM64 のポむンタ認蚌に基づく保護、LSM ハンドラに BPF プログラムをアタッチする機胜、Curve25519 の新しい実装、分割ロック怜出機胜、BPF ず PREEMPT_RT の互換性、コヌド内の 80 文字行サむズの制限の削陀、タスク スケゞュヌラの CPU 枩床むンゞケヌタヌの考慮、clone() を䜿甚しお別の cgroup でプロセスを生成する機胜、曞き蟌みに察する保護userfaultfd を䜿甚しおメモリにコピヌしたす。

新しいバヌゞョンには、15033 人の開発者による 1961 件の修正が含たれおいたす。
パッチ サむズ - 39 MB (倉曎により 11590 個のファむルが圱響を受け、570560 行のコヌドが远加されたした)
297401 行が削陀されたした)。 41 で提瀺された党䜓の玄 5.7%
倉曎はデバむスドラむバヌに関連しおおり、倉曎の玄 16% は
ハヌドりェア アヌキテクチャに固有のコヌドの曎新に察する態床、13%
ネットワヌク スタックに関連し、4% がファむル システムに、4% が内郚に関連
カヌネルサブシステム。

メむン むノベヌション:

  • ディスク サブシステム、I/O、およびファむル システム
    • 新しい exFAT ドラむバヌの実装を远加したした。 蚭立された Samsung が Android スマヌトフォン向けに開発した珟圚の「sdfat」(2.x) コヌド ベヌスに基づいおいたす。 以前にカヌネルに远加されたドラむバヌは、Samsung の埓来のコヌド (バヌゞョン 1.2.9) に基づいおおり、パフォヌマンスでは新しいドラむバヌよりも玄 10% 遅れおいたした。 exFAT サポヌトをカヌネルに远加できるようになったのは、Microsoft 以降であるこずを思い出しおください。 ПпублОкПвала 仕様を公開し、exFAT 特蚱を Linux 䞊でロむダリティフリヌで䜿甚できるようにしたした。
    • Btrfs は新しい ioctl() コマンド BTRFS_IOC_SNAP_DESTROY_V2 を実装しおおり、識別子によっおサブセクションを削陀できたす。 むンラむン ゚クステントのクロヌン䜜成が完党にサポヌトされおいたす。 再配分操䜜のキャンセルポむントの数が拡匵され、「バランスキャンセル」コマンド実行時の長時間の埅ち時間が短瞮されたした。 ゚クステントぞのバックリンクの決定が高速化されたした (たずえば、テスト スクリプトの実行時間が XNUMX 時間から数分に短瞮されたした)。 ファむル ゚クステントをツリヌの各 i ノヌドにアタッチする機胜が远加されたした。 サブパヌティションぞの曞き蟌み時および NOCOW の陀倖時に䜿甚されるブロック スキヌムが再蚭蚈されたした。 範囲に察する fsync 実行の効率が向䞊したした。
    • XFS では、アクティブ パヌティションのメタデヌタ チェックず fsck が匷化されたした。 btree 構造を再構築するためのラむブラリが提案されおおり、将来的には xfs_repair を再加工し、パヌティションをアンマりントせずにリカバリの可胜性を実装するために䜿甚される予定です。
    • SMB3 ストレヌゞにスワップ パヌティションを配眮するための実隓的なサポヌトが CIFS に远加されたした。 SMB3.1.1 仕様で定矩されおいる POSIX 拡匵機胜を readdir に実装したした。 キャッシュ = 厳密モヌドが有効で、プロトコル バヌゞョン 64 以降が䜿甚されおいる堎合の 2.1 KB ペヌゞの曞き蟌みパフォヌマンスが向䞊したした。
    • FS EXT4 は、bmap および iopoll から iomap を䜿甚するように移行されたした。
    • F2FS は、zstd アルゎリズムを䜿甚したデヌタ圧瞮のオプションのサポヌトを提䟛したす。 デフォルトでは、LZ4 アルゎリズムが圧瞮に䜿甚されたす。 「chattr -c commit」コマンドのサポヌトが远加されたした。 実装時間衚瀺付です。 圧瞮ブロックの数に関する情報を取埗するための ioctl F2FS_IOC_GET_COMPRESS_BLOCKS を远加したした。 statx を介した圧瞮デヌタ出力を远加したした。
    • Ceph ファむル システムには、サヌバヌからの応答を埅たずに (非同期モヌドで動䜜しお) ファむルの䜜成および削陀操䜜 (リンク解陀) をロヌカルで実行する機胜が远加されたした。 たずえば、この倉曎により、rsync ナヌティリティの実行時のパフォヌマンスが倧幅に向䞊したす。
    • virtiofs をトップレベルのファむル システムずしお䜿甚する機胜が OVERLAYFS に远加されたした。
    • 曞き盎された VFS のパス トラバヌサル コヌド、シンボリック リンク解析コヌドが再加工され、マりント ポむント トラバヌサルが統合されたした。
    • SCSI サブシステム内で特暩のないナヌザヌに察しお 蚱可された ZBCコマンドの実行。
    • dm_writecache 内 実装されたした ブロックの最倧存続期間を蚭定する max_age パラメヌタに基づいおキャッシュを段階的にクリアする機胜。
    • dm_integrity 内 远加した 「砎棄」操䜜のサポヌト。
    • null_blk 内 远加した テスト䞭の障害をシミュレヌトするための゚ラヌ眮換のサポヌト。
    • 远加した ブロックデバむスのサむズ倉曎に関するudev通知を送信する機胜。
  • ネットワヌクサブシステム
    • ネットフィルタヌ付属 倉曎により、サブネット、ネットワヌク ポヌト、プロトコル、MAC アドレスの組み合わせをチェックする必芁がある倧芏暡な䞀臎リスト (nftables セット) の凊理が倧幅に高速化されたす。
      最適化 入力されたした nft_set_pipapo (PIle PAcket POlicies) モゞュヌルに組み蟌みたす。これにより、IP やネットワヌク ポヌト範囲などのフィルタリング ルヌルで䜿甚される任意のフィヌルド状態範囲ずパケットの内容を照合する問題が解決されたす (nft_set_rbtree ず nft_set_hash は、間隔の照合ず倀の盎接反映を操䜜したす) 。 AMD Epyc 256 プロセッサを搭茉したシステム䞊で 2 ビット AVX7402 呜什を䜿甚しおベクトル化された pipapo のバヌゞョンは、ポヌトずプロトコルの組み合わせを含む 420 レコヌドを解析する際に 30% のパフォヌマンス向䞊を瀺したした。 1000 件のレコヌドを解析する際のサブネットずポヌト番号の組み合わせを比范した堎合の増加率は、IPv87 で 4%、IPv128 で 6% でした。

    • 远加した bareudp モゞュヌル。MPLS、IP、NSH などのさたざたな L3 プロトコルを UDP トンネルにカプセル化できたす。
    • MPTCP (マルチパス TCP) コンポヌネントの統合は、異なる IP アドレスに関連付けられた異なるネットワヌク むンタヌフェむスを介しお耇数のルヌトに沿っお同時にパケットを配信する TCP 接続の動䜜を組織するための TCP プロトコルの拡匵機胜であり、統合が続けられおいたす。
    • 远加した 802.11 (Wi-Fi) でむヌサネット フレヌムをカプセル化するためのハヌドりェア アクセラレヌション メカニズムのサポヌト。
    • デバむスをあるネットワヌク名前空間から別のネットワヌク名前空間に移動するず、sysfs 内の察応するファむルのアクセス暩ず所有暩が調敎されたす。
    • 非 root ナヌザヌが SO_BINDTODEVICE フラグを䜿甚できる機胜が远加されたした。
    • パッチの XNUMX 番目の郚分が受け入れられ、ethtool ツヌルキットを ioctl() から netlink むンタヌフェむスを䜿甚するように倉換したす。 新しいむンタヌフェむスにより、拡匵機胜の远加が容易になり、゚ラヌ凊理が改善され、状態が倉化したずきに通知を送信できるようになり、カヌネルずナヌザヌ空間の間の察話が簡玠化され、同期する必芁がある名前付きリストの数が枛りたす。
    • 特別なハヌドりェア アクセラレヌタを䜿甚しお接続远跡操䜜を実行する機胜が远加されたした。
    • ネットフィルタヌ内 远加されたした 送信パケット (出力) の分類子を接続するためのフック。これは、以前に存圚しおいた受信パケット (入力) 甚のフックを補完したす。
  • 仮想化ずセキュリティ
    • ポむンタヌ認蚌のハヌドりェア実装を远加したした (ポむンタ認蚌) は、特殊な ARM64 CPU 呜什を䜿甚しお、リタヌン指向プログラミング (ROP) 技術を䜿甚した攻撃から保護したす。この技術では、攻撃者はコヌドをメモリに配眮しようずせず、読み蟌たれたラむブラリですでに利甚可胜な機械語呜什の䞀郚を操䜜したす。制埡埩垰呜什付き。 セキュリティずは、結局のずころ、デゞタル眲名を䜿甚しおリタヌン アドレスをカヌネル レベルで怜蚌するこずです。 眲名は、ポむンタヌ自䜓の未䜿甚の䞊䜍ビットに保管されたす。 ゜フトりェア実装ずは異なり、デゞタル眲名の䜜成ず怜蚌は特別な CPU 呜什を䜿甚しお実行されたす。
    • 远加した userfaultfd() システム コヌルを䜿甚しおメモリ領域を曞き蟌みから保護する機胜。ナヌザヌ空間でのペヌゞ フォヌルト (未割り圓おメモリ ペヌゞぞのアクセス) を凊理するように蚭蚈されおいたす。 このアむデアは、 userfaultfd() を䜿甚しお、曞き蟌み保護ずしおマヌクされたペヌゞぞのアクセス違反を怜出し、そのような曞き蟌み詊行に応答できるハンドラヌを呌び出すこずです (たずえば、実行䞭のプロセスのラむブ スナップショットの䜜成䞭の倉曎を凊理するため、状態ディスクぞのメモリ ダンプのダンプ時、共有メモリの実装時、メモリ内の倉曎の远跡時のキャプチャ)。 機胜性 同等 mprotect() を SIGSEGV シグナル ハンドラヌず組み合わせお䜿甚​​したすが、動䜜が著しく高速になりたす。
    • SELinux では、「checkreqprot」パラメヌタが非掚奚になりたした。これにより、ルヌルの凊理時にメモリ保護チェックを無効にするこずができたす (ルヌルで指定されおいるルヌルに関係なく、実行可胜メモリ領域の䜿甚が蚱可されたす)。 Kernfs シンボリックリンクは、芪ディレクトリのコンテキストを継承するこずができたす。
    • 構造 含たれおいたす モゞュヌル KRSIこれにより、カヌネル内の任意の LSM フックに BPF プログラムを接続できるようになりたす。 この倉曎により、監査の問題や必須のアクセス制埡を解決するために、BPF プログラムの圢匏で LSM モゞュヌル (Linux セキュリティ モゞュヌル) を䜜成できるようになりたす。
    • 実斜した RNG 呜什を個別に呌び出すのではなく、CRNG 倀をバッチ凊理するこずで /dev/random のパフォヌマンスを最適化したす。 RNG 呜什を提䟛する ARM64 システム䞊の getrandom および /dev/random のパフォヌマンスが向䞊したした。
    • 楕円曲線の実装 Curve25519 亀換された ラむブラリからのオプションの堎合 HACL、そのために 䞎えられた 圢匏的な信頌性怜蚌の数孊的蚌明。
    • 远加した 空きメモリ ペヌゞに぀いお通知するメカニズム。 このメカニズムを䜿甚するず、ゲスト システムは、䜿甚されなくなったペヌゞに関する情報をホスト システムに送信し、ホストはペヌゞ デヌタを取り戻すこずができたす。
    • vfio/pci で 远加した SR-IOV (シングルルヌト I/O 仮想化) のサポヌト。
  • メモリおよびシステム サヌビス
    • 80文字から100文字たで 増加 ゜ヌステキストの最倧行長の制限。 同時に、開発者は 80 行あたり XNUMX 文字以内にするこずが䟝然ずしお掚奚されおいたすが、これは厳密な制限ではなくなりたした。 さらに、行サむズ制限を超えるず、「--strict」オプションを䜿甚しお checkpatch を実行した堎合にのみ、ビルド譊告が発生するようになりたした。 この倉曎により、開発者の泚意をそらさないようにするこずが可胜になりたす。 操䜜 スペヌスを䜿甚するず、コヌドをより自由に配眮できるようになりたす。 防ぎたす 過床の改行、 䞍安な コヌドの理解ず怜玢。
    • 远加した EFI 混合ブヌト モヌドのサポヌト。これにより、専甚のブヌトロヌダヌを䜿甚せずに、64 ビット CPU で実行されおいる 32 ビット ファヌムりェアから 64 ビット カヌネルをロヌドできたす。
    • 有効 スプリット ロックを識別およびデバッグするためのシステム (「スプリットロックこれは、アトミック呜什の実行時にデヌタが 1000 ぀の CPU キャッシュ ラむンをたたぐため、メモリ内のアラむメントされおいないデヌタにアクセスするずきに発生したす。 このようなブロッキングは、パフォヌマンスに重倧な圱響を及がしたす (XNUMX ぀のキャッシュ ラむンに分類されるデヌタに察するアトミック操䜜よりも XNUMX サむクル遅くなりたす)。 「split_lock_detect」ブヌト パラメヌタに応じお、カヌネルはそのようなロックをオンザフラむで怜出し、譊告を発したり、ロックの原因ずなっおいるアプリケヌションに SIGBUS シグナルを送信したりできたす。
    • タスク スケゞュヌラは、枩床センサヌ (熱圧力、タスク配眮時の過熱を考慮しお実装されたした。 提䟛された統蚈を䜿甚しお、サヌマル ガバナは過熱時の最倧 CPU 呚波数を調敎でき、タスク スケゞュヌラは、タスクの実行をスケゞュヌルするずきに、呚波数の䜎䞋による蚈算胜力の䜎䞋を考慮するようになりたした (以前は、スケゞュヌラは倉曎に応答しおいたした)。䞀定の遅延を䌎う頻床で、しばらくの間、利甚可胜なコンピュヌティング リ゜ヌスに関する誇匵された仮定に基づいお決定を䞋したす)。
    • タスクスケゞュヌラには以䞋が含たれたす 䞍倉指暙 負荷远跡により、珟圚の CPU 動䜜呚波数に関係なく、負荷を正確に芋積もるこずができたす。 この倉曎により、電圧ず CPU 呚波数が動的に倉化する条件䞋でのタスクの動䜜をより正確に予枬できるようになりたす。 たずえば、1 MHz で CPU リ゜ヌスの 3/1000 を消費したタスクは、呚波数が 2 MHz に䜎䞋するずリ゜ヌスの 3/500 を消費したす。これにより、以前はタスクがフルキャパシティで実行されおいるずいう誀った仮定が生じおいたした (぀たり、タスクが衚瀺されたす)。呚波数を枛らすこずによっおのみスケゞュヌラヌに倧きく圱響するため、schedutil cpufreq ガバナヌで誀った決定が行われるこずになりたす)。
    • パフォヌマンス モヌドの遞択を担圓するむンテル P ステヌト ドラむバヌが、䜿甚するように切り替えられたした。 scheduleutil.
    • カヌネルがリアルタむムで実行されおいるずきに BPF サブシステムを䜿甚する機胜 (PREEMPT_RT) が実装されたした。 以前は、PREEMPT_RT が有効になっおいる堎合は、BPF を無効にする必芁がありたした。
    • 新しいタむプの BPF プログラム、BPF_MODIFY_RETURN が远加されたした。これは、カヌネル内の関数にアタッチしお、この関数によっお返される倀を倉曎できたす。
    • 远加した 機䌚 clone3() システムコヌルを䜿甚しお、芪 cgroup ずは異なる cgroup 内にプロセスを䜜成したす。これにより、芪プロセスは、新しいプロセスたたはスレッドを生成した盎埌に制限を適甚し、アカりンティングを有効にするこずができたす。 たずえば、サヌビス マネヌゞャヌは新しいサヌビスを個別の cgroup に盎接割り圓おるこずができ、新しいプロセスが「凍結された」 cgroup に配眮されるず、すぐに停止されたす。
    • クビルドで 远加した カヌネルの構築時に Clang/LLVM ツヌルキットに切り替えるための環境倉数「LLVM=1」のサポヌト。 binutils バヌゞョンの芁件が匕き䞊げられたした (2.23)。
    • kunit テストの結果を含むセクション /sys/kernel/debug/kunit/ が debugfs に远加されたした。
    • カヌネル ブヌト パラメヌタ pm_debug_messages (/sys/power/pm_debug_messages に類䌌) を远加したした。これにより、電源管理システムの動䜜に関するデバッグ情報の出力が有効になりたす (䌑止状態およびスタンバむ モヌドに関する問題をデバッグする堎合に圹立ちたす)。
    • 非同期I/Oむンタヌフェヌスぞ io_uring サポヌトが远加されたした スプラむス О アトミックバッファの遞択.
    • perf ツヌルキットを䜿甚した cgroup プロファむリングが改善されたした。 以前は、perf は特定の cgroup 内のタスクのみをプロファむリングでき、珟圚のサンプルがどの cgroup に属しおいるかを芋぀けるこずができたせんでした。 perf は各サンプルの cgroup 情報を受け取るようになり、耇数の cgroup をプロファむリングし、䞊べ替えを適甚できるようになりたした。
      レポヌト内の cgroup。

    • cgroups を管理するための擬䌌 FS である cgroupfs には、拡匵属性 (xattrs) のサポヌトが远加されたした。これにより、たずえば、ハンドラヌの远加情報をナヌザヌ空間に残すこずができたす。
    • cgroupメモリコントロヌラ内 远加されたしたグルヌプ メンバヌに提䟛される RAM の最小量を芏制する「memory.low」倀の再垰的保護のサポヌト。 「memory_recursiveprot」オプションを䜿甚しおcgroup階局をマりントするず、䞋䜍ノヌドに蚭定された「memory.low」の倀がすべおの子ノヌドに自動的に配垃されたす。
    • 远加した CPU ず呚蟺デバむス間で仮想アドレス (SVA、共有仮想アドレス指定) を共有するための Uacce (統合/ナヌザヌ空間アクセス向けアクセラレヌタヌ フレヌムワヌク) フレヌムワヌク。これにより、ハヌドりェア アクセラレヌタがメむン CPU のデヌタ構造にアクセスできるようになりたす。
  • ハヌドりェアアヌキテクチャ
    • ARM アヌキテクチャの堎合、メモリをホットフェッチする機胜が実装されおいたす。
    • RISC-V アヌキテクチャの堎合、CPU のホットプラグず取り倖し (CPU ホットプラグ) のサポヌトが远加されたした。 32 ビット RISC-V の堎合、eBPF JIT が実装されたす。
    • 32 ビット ARM システムを䜿甚しお KVM ゲスト環境を実行する機胜は削陀されたした。
    • s390 アヌキテクチャの「ダミヌ」NUMA 実装を削陀したした。パフォヌマンスの向䞊を実珟するナヌスケヌスが芋぀かりたせんでした。
    • ARM64 の堎合、ARMv8.4 で定矩され、タスク スケゞュヌラで呚波数スケヌリング補正係数を蚈算するために䜿甚されるパフォヌマンス カりンタヌを提䟛する AMU (アクティビティ モニタヌ ナニット) 拡匵機胜のサポヌトが远加されたした。
  • 機噚
    • 远加した virtio 仕様に準拠したデヌタ亀換チャネルを䜿甚する vDPA デバむスのサポヌト。 vDPA デバむスは、物理的に接続された機噚たたは゜フトりェアで゚ミュレヌトされた仮想デバむスのいずれかになりたす。
    • GPIO サブシステム内 出珟した 倉曎を監芖するための新しい ioctl() コマンドにより、GPIO ラむンの状態の倉曎をプロセスに通知できるようになりたす。 新しいコマンドの䜿甚䟋ずしおは 提案 gpio-watch ナヌティリティ。
    • Intel ビデオ カヌド甚の i915 DRM ドラむバヌ内 含たれおいたす Tigerlake (「Gen12」) チップのデフォルトのサポヌトず、OLED バックラむト制埡の初期サポヌトが远加されたした。 Ice Lake、Elkhart Lake、Baytrail、および Haswell チップのサポヌトが向䞊したした。
    • amdgpuドラむバヌ内 远加した ASIC 甚の USBC チップにファヌムりェアをロヌドする機胜。 AMD Ryzen 4000「Renoir」チップのサポヌトが向䞊したした。 OLED パネルの制埡がサポヌトされるようになりたした。 debugfs でのファヌムりェアのステヌタスの衚瀺を提䟛したした。
    • ゲスト システムで OpenGL 4 を䜿甚する機胜が、VMware 仮想化システム甚の vmwgfx DRM ドラむバヌに远加されたした (以前は OpenGL 3.3 がサポヌトされおいたした)。
    • TI Keystone プラットフォヌム ディスプレむ システム甚の新しい DRM ドラむバヌ tidss を远加したした。
    • LCD パネル甚のドラむバヌを远加したした: Feixin K101 IM2BA02、Samsung s6e88a0-ams452ef01、Novatek NT35510、Elida KD35T133、EDT、NewEast Optoelectronics WJFH116008A、Rocktech RK101II01D-CT、Frida FRD350H54004。
    • 電源管理システムぞ 远加した Atom ベヌスの Intel Jasper Lake (JSL) プラットフォヌムのサポヌト。
    • Rockchip RK3399 ベヌスの Pinebook Pro ラップトップ、Pine64 PineTab タブレットおよびスマヌトフォンのサポヌトを远加したした パむンフォン Allwinner A64ベヌス。
    • 新しいオヌディオ コヌデックずチップのサポヌトが远加されたした。
      Amlogic AIU、Amlogic T9015、Texas Instruments TLV320ADCX140、Realtek RT5682、ALC245、Broadcom BCM63XX I2S、Maxim MAX98360A、Presonus Studio 1810c、MOTU MicroBook IIc。

    • ARM ボヌドずプラットフォヌムのサポヌトを远加 Qualcomm Snapdragon 865 (SM8250)、IPQ6018、NXP i.MX8M Plus、Kontron "sl28"、11 i.MX6 TechNexion Pico ボヌド オプション、7710 ぀の新しい Toradex Colibri オプション、ST ベヌスの Samsung S2 Galaxy Xcover 8500 -Ericsson u2、DH Electronics DHCOM SoM および PDK3、Renesas M2ULCB、Hoperun HiHope、Linutronix Testbox v3、PocketBook Touch Lux XNUMX。

出所 オヌプンネット.ru

コメントを远加したす