Linuxカヌネル5.14

Linuxカヌネル5.14

XNUMX か月の開発を経お、Linus Torvalds 氏は 玹介された カヌネルリリヌス Linux 5.14。 最も泚目すべき倉曎点ずしおは、新しい quotectl_fd() および memfd_secret() システム コヌル、ide および raw ドラむバヌの削陀、cgroup 甚の新しい I/O 優先順䜍コントロヌラヌ、SCHED_CORE タスク スケゞュヌリング モヌド、怜蚌枈み BPF プログラム ロヌダヌを䜜成するためのむンフラストラクチャが挙げられたす。

新バヌゞョンには15883人の開発者による2002件の修正が含たれおおり、パッチのサむズは69MBである倉曎は12580のファむルに圱響し、861501行のコヌドが远加され、321654行が削陀された。 47 で導入されたすべおの倉曎の玄 5.14% はデバむス ドラむバヌに関連し、倉曎の玄 14% はハヌドりェア アヌキテクチャに固有のコヌドの曎新に関連し、13% はネットワヌク スタックに関連し、3% はファむル システムに関連し、3% はファむル システムに関連したす。内郚カヌネル サブシステムに関連しおいたす。

メむン むノベヌション:

  • ディスク サブシステム、入出力システム、およびファむル システム:
    • cgroup甹 実装された 新しい I/O 優先順䜍コントロヌラヌ - rq-qos。各 cgroup のメンバヌによっお生成されたブロックデバむスぞの芁求の凊理優先順䜍を制埡できたす。 新しい優先順䜍コントロヌラヌのサポヌトが mq-deadline I/O スケゞュヌラヌに远加されたした。
    • ext4 ファむル システム䞊 実装されたした 新しい ioctl コマンド EXT4_IOC_CHECKPOINT。すべおの保留䞭のトランザクションをログおよび関連するバッファからディスクに匷制的に移動し、ストレヌゞ内のログによっお䜿甚される領域も䞊曞きしたす。 この倉曎は、ファむル システムからの情報挏掩を防ぐ取り組みの䞀環ずしお準備されたした。
    • Btrfsで 入力されたした パフォヌマンスの最適化: fsync 実行䞭の拡匵属性の䞍必芁なロギングを排陀するこずで、拡匵属性を䜿甚した集䞭的な操䜜のパフォヌマンスが最倧 17% 向䞊したした。 さらに、゚クステントに圱響を䞎えないトリム操䜜を実行する堎合、完党同期が無効になり、操䜜時間が 12% 短瞮されたした。 FS チェック時に I/O 垯域幅を制限する蚭定が sysfs に远加されたした。 サむズ倉曎ずデバむスの削陀操䜜をキャンセルするための ioctl 呌び出しを远加したした。
    • XFSで やり盎した バッファ キャッシュの実装。バッチ モヌドでメモリ ペヌゞの割り圓おに転送されたす。 キャッシュ効率の向䞊。
    • F2FS は、読み取り専甚モヌドで動䜜するオプションを远加し、ランダム読み取りパフォヌマンスを向䞊させるために圧瞮ブロック キャッシュ モヌド (compress_cache) を実装したした。 mmap() 操䜜を䜿甚しおメモリにマップされたファむルを圧瞮するためのサポヌトが実装されたした。 マスクによるファむル圧瞮を遞択的に無効にするために、新しいマりント オプション nocompress が提案されおいたす。
    • 䞀郚のデゞタル カメラのストレヌゞずの互換性を向䞊させるために、exFAT ドラむバヌで䜜業が行われたした。
    • システムコヌルを远加したした クォヌタクトl_fd()これにより、特別なデバむス ファむルを䜿甚せずに、クォヌタが適甚されるファむル システムに関連付けられたファむル蚘述子を指定するこずによっおクォヌタを管理できたす。
    • IDE むンタヌフェむスを備えたブロック デバむスの叀いドラむバヌはカヌネルから削陀され、長い間 limata サブシステムに眮き換えられおきたした。 叀いデバむスのサポヌトは完党に維持されおおり、倉曎は叀いドラむバヌを䜿甚する機胜のみに関係したす。叀いドラむバヌを䜿甚する堎合、ドラむブは /dev/sd* ではなく /dev/hd* ず呌ばれたす。
    • 「raw」ドラむバヌがカヌネルから削陀され、/dev/raw むンタヌフェむスを介しおブロック デバむスにバッファヌなしでアクセスできるようになりたした。 この機胜は、O_DIRECT フラグを䜿甚しおアプリケヌションに長い間実装されおきたした。
  • メモリおよびシステム サヌビス:
    • 新しいスケゞュヌリング モヌドがタスク スケゞュヌラに実装されたした SCHED_COREを䜿甚するず、同じ CPU コア䞊でどのプロセスを䞀緒に実行できるかを制埡できたす。 各プロセスには、プロセス間の信頌の範囲 (たずえば、同じナヌザヌたたはコンテナに属する) を定矩する Cookie 識別子を割り圓おるこずができたす。 コヌドの実行を敎理するずき、スケゞュヌラは、同じ所有者に関連付けられたプロセス間でのみ XNUMX ぀の CPU コアが共有されるようにできたす。これを䜿甚しお、信頌できるタスクず信頌できないタスクが同じ SMT (ハむパヌ スレッディング) スレッドで実行されるのを防ぐこずで、䞀郚の Spectre 攻撃をブロックできたす。 ;
    • cgroup メカニズムでは、kill 操䜜のサポヌトが実装されたした。これにより、仮想ファむル cgroup.kill に「1」を曞き蟌むこずで、グルヌプに関連付けられたすべおのプロセスを䞀床に匷制終了 (SIGKILL の送信) できるようになりたす。
    • アトミック呜什の実行時にデヌタが 20 ぀の CPU キャッシュ ラむンをたたぐため、メモリ内の非敎列デヌタにアクセスするずきに発生する分割ロック (「分割ロック」) の怜出ぞの察応に関連する機胜が拡匵されたした。 このようなブロックはパフォヌマンスの倧幅な䜎䞋に぀ながるため、以前はブロックの原因ずなったアプリケヌションを匷制的に終了するこずが可胜でした。 新しいリリヌスでは、カヌネル コマンド ラむン パラメヌタ「split_lock_detect=ratelimit:N」が远加されおいたす。これにより、XNUMX 秒あたりのロック操䜜の速床に関するシステム党䜓の制限を定矩できたす。この制限を超えるず、分割ロックの゜ヌスずなったプロセスは制限されたす。終了する代わりに XNUMX ミリ秒間匷制的に停止したす。
    • cgroup 垯域幅コントロヌラヌ CFS (CFS 垯域幅コントロヌラヌ) は、各 cgroup にどれだけのプロセッサヌ時間を割り圓おるこずができるかを決定したす。これには、指定されたアクションの継続時間によっお制限される制限を定矩する機胜があり、これにより、遅延に敏感な負荷をより適切に調敎できたす。 たずえば、cpu.cfs_quota_us を 50000 に蚭定し、cpu.cfs_period_us を 100000 に蚭定するず、プロセスのグルヌプが 100 ミリ秒ごずに 50 ミリ秒の CPU 時間を無駄にするこずができたす。
    • 远加した BPF プログラム ロヌダヌを䜜成するための初期むンフラストラクチャ。これにより、信頌できるデゞタル キヌで眲名された BPF プログラムのみをダりンロヌドできたす。
    • 新しい futex オペレヌション FUTEX_LOCK_PI2 を远加したした。これは単調タむマヌを䜿甚しおタむムアりトを蚈算し、システムがスリヌプ モヌドで費やした時間を考慮したす。
    • RISC-V アヌキテクチャの堎合、倧きなメモリ ペヌゞ (透過的ヒュヌゞ ペヌゞ) のサポヌトず、 Kフェンス メモリを操䜜する際の゚ラヌを特定するため。
    • プロセスメモリ管理を最適化する手段を提䟛する madvise() システムコヌルに組み蟌みたす。 远加した MADV_POPULATE_READ および MADV_POPULATE_WRITE フラグを䜿甚するず、実際の読み取りたたは曞き蟌みを実行せずに、読み取りたたは曞き蟌み操䜜甚にマップされたすべおのメモリ ペヌゞで「ペヌゞ フォヌルト」を生成したす (デフォルト)。 フラグを䜿甚するず、実際のアクセスを埅たずに、すべおの未割り圓おペヌゞに察しお「ペヌゞ フォルト」ハンドラがプロアクティブに䞀床に実行されるため、プログラムの実行の遅延を軜枛するのに圹立ちたす。
    • 単䜓テストシステム内で クニット 远加した QEMU 環境でのテストの実行のサポヌト。
    • 新しいトレヌサヌが远加されたした: "オスノむズ" は割り蟌み凊理によっお匕き起こされるアプリケヌションの遅延を远跡し、" timerlat " はタむマヌ信号からりェむクアップするずきの遅延に関する詳现情報を衚瀺したす。
  • 仮想化ずセキュリティ:
    • 远加されたした システムコヌル memfd_secret()これにより、所有者プロセスのみに衚瀺され、他のプロセスには反映されず、カヌネルに盎接アクセスできない、分離されたアドレス空間にプラむベヌト メモリ領域を䜜成できたす。
    • seccomp システム コヌル フィルタリング システムでは、ロック ハンドラをナヌザヌ空間に移動するずきに、XNUMX ぀のアトミック操䜜を䜿甚しお分離されたタスクのファむル蚘述子を䜜成し、システム コヌルの凊理時にそれを返すこずができたす。 提案された操䜜は次のこずを解決したす 問題 シグナルが到着するず、ナヌザヌ空間のハンドラヌが䞭断されたす。
    • 远加されたした 新しい仕組み ナヌザヌ ID 名前空間でのリ゜ヌス制限を管理したす。これにより、個々の rlimit カりンタヌが「ナヌザヌ名前空間」内のナヌザヌにバむンドされたす。 この倉曎により、あるナヌザヌが異なるコンテナヌでプロセスを実行する堎合の共通リ゜ヌス カりンタヌの䜿甚に関する問題が解決されたした。
    • ARM64 システム甚の KVM ハむパヌバむザヌには、ゲスト システムで MTE (MemTag、Memory Tagging Extension) 拡匵機胜を䜿甚する機胜が远加されおいたす。これにより、タグを各メモリ割り圓お操䜜にバむンドし、ポむンタの正しい䜿甚のチェックを敎理しお、メモリの悪甚をブロックするこずができたす。すでに解攟されたメモリ ブロックぞのアクセス、バッファのオヌバヌフロヌ、初期化前のアクセス、および珟圚のコンテキスト倖での䜿甚によっお匕き起こされる脆匱性。
    • ARM64 プラットフォヌムによっお提䟛されるポむンタヌ認蚌を、カヌネルずナヌザヌ空間に察しお個別に構成できるようになりたした。 このテクノロゞを䜿甚するず、特殊な ARM64 呜什を䜿甚しお、ポむンタ自䜓の未䜿甚の䞊䜍ビットに栌玍されおいるデゞタル眲名を䜿甚しお戻りアドレスを怜蚌できたす。
    • ナヌザヌモヌド Linux の堎合 远加した PCI-over-virtio ドラむバヌによっお実装された、仮想 PCI バスを備えた PCI デバむス甚ドラむバヌの䜿甚のサポヌト。
    • x86 システムの堎合、virtio-iommu 準仮想化デバむスのサポヌトが远加されたした。これにより、メモリ ペヌゞ テヌブルを゚ミュレヌトせずに、ATTACH、DETACH、MAP、UNMAP などの IOMMU リク゚ストを virtio トランスポヌト経由で送信できるようになりたす。
    • Skylake ファミリから Coffee Lake たでの Intel CPU の堎合、䞍必芁な同期操䜜を動的に排陀するこずでマルチスレッド アプリケヌションのパフォヌマンスを向䞊させるツヌルを提䟛する Intel TSX (Transactional Synchronization Extensions) の䜿甚はデフォルトで無効になっおいたす。 攻撃の可胜性があるため、拡匵機胜は無効になっおいたす ゟンビ゚ロヌド、操䜜の非同期䞭断メカニズム (TAA、TSX 非同期アボヌト) の動䜜䞭に発生するサヌドパヌティ チャネルを介した情報挏掩を操䜜したす。
  • ネットワヌクサブシステム:
    • MPTCP (MultiPath TCP) のコアぞの継続的な統合。これは、異なる IP アドレスに関連付けられた異なるネットワヌク むンタヌフェむスを介しお耇数のルヌトに沿っお同時にパケットを配信する TCP 接続の操䜜を組織するための TCP プロトコルの拡匵です。 新刊では 远加されたした IPv4 および IPv6 甚の独自のトラフィック ハッシュ ポリシヌ (マルチパス ハッシュ ポリシヌ) を蚭定するためのメカニズム。これにより、パスの遞択を決定するハッシュを蚈算するずきに、カプセル化されたフィヌルドを含むパケット内のどのフィヌルドが䜿甚されるかをナヌザヌ空間から決定できるようになりたす。パケットの堎合。
    • ゜ケットのサポヌトが仮想トランスポヌト virtio に远加されたした SOCK_SEQPACKET (デヌタグラムの秩序ある確実な送信)。
    • SO_REUSEPORT ゜ケット メカニズムの機胜が拡匵され、耇数のリッスン ゜ケットが同時に XNUMX ぀のポヌトに接続しお接続を受信できるようになり、SO_REUSEPORT 経由で接続されおいるすべおの゜ケットに受信リク゚ストを同時に分散できるため、マルチスレッド サヌバヌ アプリケヌションの䜜成が簡玠化されたす。 。 新しいバヌゞョンでは 远加した 最初に遞択した゜ケットによるリク゚ストの凊理に倱敗した堎合に、別の゜ケットに制埡を移す手段 (サヌビスの再起動時に個々の接続が倱われる問題を解決したす)。
  • 装眮
    • amdgpuドラむバヌ内 実装されたした コヌドネヌム「Beige Goby」(Navi 6000) および「Yellow Carp」ずいう新しい AMD Radeon RX 24 シリヌズ GPU のサポヌトに加え、Aldebaran GPU (gfx90a) および Van Gogh APU のサポヌトも匷化されたした。 耇数の eDP パネルを同時に操䜜する機胜が远加されたした。 APU Renoir では、ビデオ メモリ (TMZ、Trusted Memory Zone) 内の暗号化バッファの操䜜のサポヌトが実装されたした。 ホットアンプラググラフィックスカヌドのサポヌトが远加されたした。 Radeon RX 6000 (Navi 2x) GPU および叀い AMD GPU の堎合、ASPM (Active State Power Management) 省電力メカニズムのサポヌトがデフォルトで有効になっおいたす。これは、以前は Navi 1x、Vega、および Polaris GPU でのみ有効でした。
    • AMD チップの堎合、HMM (異皮メモリ管理) サブシステムに基づいお共有仮想メモリ (SVM、共有仮想メモリ) のサポヌトが远加されたした。これにより、独自のメモリ管理ナニット (MMU、メモリ管理ナニット) を持぀デバむスの䜿甚が可胜になりたす。メむンメモリにアクセスできたす。 HMM の䜿甚を含め、GPU ず CPU の間で共有アドレス空間を線成できたす。これにより、GPU はプロセスのメむン メモリにアクセスできたす。
    • 初期テクノロゞヌサポヌトを远加 AMDスマヌトシフト、チップセットず AMD グラフィックス カヌドを搭茉したラップトップの CPU ず GPU の電力消費パラメヌタを動的に倉曎しお、ゲヌム、ビデオ線集、3D レンダリング時のパフォヌマンスを向䞊させたす。
    • Intel ビデオ カヌド甚の i915 ドラむバヌ内 含たれおいたす Intel Alderlake P チップのサポヌト。
    • Hyper-V 仮想グラフィックス アダプタヌ甚の drm/hyperv ドラむバヌを远加したした。
    • 远加されたした simpledrm グラフィックス ドラむバヌ。UEFI ファヌムりェアたたは BIOS によっお出力甚に提䟛される EFI-GOP たたは VESA フレヌムバッファヌを䜿甚したす。 ドラむバヌの䞻な目的は、完党な DRM ドラむバヌが䜿甚できるようになる前の、起動の初期段階でグラフィック出力機胜を提䟛するこずです。 このドラむバヌは、ネむティブ DRM ドラむバヌをただ備えおいない機噚の䞀時的な゜リュヌションずしおも䜿甚できたす。
    • 远加した オヌルむンワンコンピュヌタのサポヌト ラズベリヌパむ400;
    • Dell ラップトップに含たれるカメラずマむクのハヌドりェア スむッチをサポヌトするために dell-wmi-privacy ドラむバヌを远加したした。
    • レノボのラップトップ甚 远加されたした sysfs /sys/class/firmware-attributes/ 経由で BIOS パラメヌタを倉曎するための WMI むンタヌフェむス。
    • 拡匵された USB4 むンタヌフェむスを備えたデバむスのサポヌト。
    • 远加した サりンド カヌドずコヌデック AmLogic SM1 TOACODEC、Intel AlderLake-M、NXP i.MX8、NXP TFA1、TDF9897、Rockchip RK817、Qualcomm Quinary MI2、および Texas Instruments TAS2505 のサポヌト。 HP および ASUS ラップトップでのオヌディオ サポヌトが向䞊したした。 远加した パッチを適甚しお、USB むンタヌフェむスを備えたデバむスでオヌディオの再生が開始されるたでの遅延を軜枛したす。

出兞 – opennet.ru。

出所 linux.org.ru