核心版本 Linux 7.2

經過兩個月的開發,Linus Torvalds 發布了核心。 Linux 7.2. 其中最顯著的變化包括:USB4STREAM 資料流機制、btrfs、xfs 和 ext4 效能最佳化、繼續移除 i486 CPU 支援程式碼、建立巢狀 SCHED_EXT 調度器的功能、減少交換子系統中的記憶體消耗、加速未命名管路、KVM 中對 Intel 單元格和 AMD GMET 中對 Intel 的擴充功能、7174 新協定移除裝置的擴充功能、7134 新協定、893) 的裝置。的初步支持。

核心 7.2(1、2、3)的主要新功能:

  • 磁盤子系統、I/O 和文件系統
    • 在 iomap 機制中,iomap_iter() 函數中對已完成迭代的 memset 函數的額外呼叫已被移除,這在高速 NVMe 驅動器上進行高 I/O 強度測試時,在使用 ext4 和 xfs 檔案系統進行的測試中,每秒輸入/輸出操作數 (IOPS) 增加了 5%。
    • XFS 已被宣布穩定,可支援分區儲存設備(將區塊或扇區分組為區域,只允許按順序向其中添加數據,並更新整個區塊組)。
    • Btrfs 現在預設支援大檔案(folio),從而降低開銷並提升密集型順序 I/O 操作的效能。此外,也新增了超大檔案(最大 2 MB)的實驗性支援。新增了一個 ioctl 函數 GET_CSUMS,用於在使用者空間檢索校驗和訊息,例如供 mkfs 工具和重複資料刪除最佳化使用。順序寫入效能提升了 15%,直接 I/O 效能提升了 59%。
    • Ext4 檔案系統的「快速提交」機制經過重大重新設計,以消除爭用和死鎖。新增了透過 /proc/fs/ext4/*/fc_info 匯出 inode 快照統計資料的功能。目錄雜湊計算效能得到了最佳化(255 個字元的目錄名速度幾乎翻倍,64 個字元的目錄名速度提升 27%,32 個字元的目錄名速度提升 11%)。
    • F2FS 現在支援 fserror 錯誤返回,讓使用者空間監控檔案系統問題。中斷處理所花費的時間也減少了。
    • 設備映射器 (DM) 中新增了 dm-inlinecrypt 處理程序,用於使用具有內聯加密功能的硬體設備對區塊設備進行透明加密和解密。
    • 已提供有關向核心添加新檔案系統的文件。
    • 在 NFS 中,預設區塊大小已增加到 4 MB(適用於至少配備 16 GB 記憶體的系統)(您可以使用 `/proc/fs/nfsd/max_block_size` 手動變更區塊大小)。此外,還添加了目錄委派支持,允許在一段時間內對給定目錄執行操作,而無需檢查目錄狀態是否發生變化。 服務器.
    • SMB 伺服器現在支援以壓縮形式儲存的文件,以及在網路傳輸過程中進行資料壓縮。
    • 新的 NTFS 實作(ntfsplus)增加了對符號連結的支援。 Windows 並確保正確處理多種類型的元資料損壞。
    • 用於快取 EROFS(增強型唯讀檔案系統)資料的 fscache 後端已於兩年前棄用,現已移除。
    • 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 處理器支援的變更已完成。超過 13 行與不含浮點運算單元 (FPU) 的處理器相關的浮點運算單元模擬程式碼已移除。由於這些硬體操作的類比程式碼已被移除,因此對不含 CX8(比較並交換 8 位元組)和 TSC(任務排程器中使用的 CPU 週期計數器)硬體操作的 i486 處理器的支援也已移除。
    • 已宣布對 OLPC XO-1 計算機中使用的 AMD Geode 處理器的支援已停止。
    • 新增了對英特爾 TDX(可信任域擴展)實現更新的支持,TDX 是一種用於加密客戶機系統 RAM 的機制。 TDX 以特殊軟體運行時模組的形式實現,在啟動過程中由 BIOS 從快閃記憶體傳輸到 RAM。核心現在具備管理此模組的功能,可以在運行中的系統上將其替換為更新版本,而無需重新啟動。
    • 我們實作了一個新的 GPU 資源分配調度器(公平 GPU 調度器)。它用於確定 GPU 使用進程提交的工作在 GPU 上的執行順序。與傳統的 FIDO 佇列處理 GPU 請求不同,新的調度器採用基於完全公平調度器 (CFS) 任務調度器的公平資源分配機制,該機制使用帶有下一進程轉換時間的啟動計劃。新調度器最顯著的效果體現在並行執行大量使用 GPU 的互動式任務時。在核心 7.2 發布前的最後一刻,由於需要調試回歸問題(該問題會導致在 Proton 中運行某些遊戲時效能下降和 GPU 利用率達到 100%),公平 GPU 調度器被禁用,舊的 FIFO 調度器被恢復。
    • eBPF 子系統變更:新增了將單一 BPF 程式附加到多個追蹤點的功能。附加到追蹤點的 BPF 程式現在可以存取用戶空間組件的內存,並能正確處理未分配的內存頁(缺頁)。 bpf() 系統呼叫現在支援標準屬性(log_buf、log_size、log_level 和 log_true_size),從而允許在所有 BPF 命令之間統一傳輸元數據,而不僅限於 BPF_PROG_LOAD、BPF_BTF_LOAD 和 BPF_MAP_CREATE。已取消向 BPF 函數傳遞參數數量不得超過 5 個的限制。新增了安全存取 bpf_arena 共享記憶體的功能,無需擔心存取未分配的記憶體頁(缺頁)。已實作新版本的 BPF 哈希映射結構,支援動態調整大小。
    • 已最佳化“/proc/interrupts”輸出(包含中斷統計資料)的生成,並更新了用於儲存中斷計數器的結構,同時添加了快取功能。
    • libselinux 中使用的「/proc/filesystems」檔案的產生速度已加快。
    • 任務調度器現在支援跨 CPU 核心的負載平衡,並會考慮處理器內部快取的狀態。調度器現在會嘗試將使用共享資源(例如單一進程內的執行緒)的進程分組,以便共享同一個高階緩存,從而提高在快取中找到所需資料的機率,進而提升資料存取效率。
    • SCHED_EXT 機制允許使用 BPF 建立 CPU 調度器,並且繼續實作了建立巢狀調度器(子調度器)的功能,從而允許每個 cgroup 使用自己的任務調度器。
    • 繼續從 Rust-for- 分支遷移更改Linux與使用 Rust 作為第二語言開發驅動程式和內核模組相關(Rust 支援預設未啟用,且 Rust 不作為強制性內核建置依賴項)。核心中的 Rust 支援已針對 s390 架構實作。 「zerocopy」 套件已包含在內,該套件為「不安全」模式下的程式碼提供快速記憶體原語。
    • 建構核心所需的 LLVM 工具集的最低版本已提高到 17.0.1。
    • 內核原始碼附帶的極簡 C 函式庫 nolibc Linux 並為基本系統呼叫提供框架,支援 OpenRISC 和 32 位元 PA-RISC 架構。
    • 交換子系統經過最佳化,透過消除儲存靜態元資料時的開銷以及在使用 tome 時統一匿名記憶體和共享內存,提高了效能並降低了子系統本身的記憶體消耗。記憶體減少效果顯著;例如,掛載 1 TB 的交換分割區可減少約 512 MB 的記憶體消耗。
    • 記憶體驅逐機制的效能得到了提升,該機制會在系統壓力過大時刪除記憶體或將其移動到交換空間以釋放記憶體。在某些工作負載下,例如使用 YCSB(雅虎雲端服務基準測試)測試 MongoDB 時,效能提升高達 30%。
    • 「make sbom」指令已新增至建置系統中,用於產生反映目前核心建置中使用的元件、函式庫和相依性的SBOM(軟體物料清單)列表,以及從程式碼檔案中的SPDX頭檔中取得的授權資訊。
    • 未命名管道的實現已針對鎖的處理進行了最佳化(記憶體分配操作移至鎖的範圍之外),這使得未命名管道的吞吐量提高了 21-48%,延遲降低了 17-33%。
  • 虛擬化和安全
    • slab 分配器現在支援使用分配令牌,該令牌已在 Clang 22 編譯器中實作。令牌允許為記憶體分配操作提供唯一標識符,並可對不同類型的物件進行單獨分配,從而增加緩衝區溢位漏洞被利用的難度(透過分離,一種類型物件的緩衝區溢位不容易被利用來破壞其他類型的物件)。
    • AF_ALG 機制曾被用於 Copy Fail 漏洞以修改頁面快取中的數據,該機制已被棄用,並將在未來的版本中移除。 AF_ALG 為核心 Crypto API 中的加密計算啟用硬體加速器,但其使用場景較為特殊。在核心 7.2 中,AF_ALG 已移除對非同步 I/O、舊版驅動程式以及 skcipher 和 aead 實作中的零拷貝機制的支援。目前僅保留了加密演算法的軟體實現,並且移除了對內核 Crypto API 中硬體加密加速器的支持,因為 AF_ALG 會顯著擴大攻擊面,但與用戶空間加密實現相比,性能並無提升。 AF_ALG 曾用於 Cryptsetup 工具包,但其支援已在最近的 2.8.7 版本中移除。
    • IMA(完整性測量架構)機制允許外部服務驗證內核子系統的狀態以確保其真實性,現在已補充支援將包含測量結果的內部表匯出到用戶空間,並從內核緩衝區中刪除這些表以節省記憶體。
    • Landlock 模組為非特權程式提供了限制核心物件使用的方法。 Linux (檔案層次結構、網路套接字、ioctl 等),增加了對 UDP 套接字存取控制的支持,以及選擇性地停用將物件鎖定資訊輸出到日誌的功能,以防止日誌中充斥無關資訊。
    • 內核已棄用 `strncpy()` 函數,該函數用於從輸入字串複製指定數量的位元組。使用 `strncpy()` 會帶來錯誤風險,例如字串末尾缺少空字元或使用零填充。建議使用 `strscpy()` 和 `strscpy_pad()` 函數來複製以空字元結尾的字串,以及使用 `strtomem_pad()`、`memcpy_and_pad()` 和 `memcpy()` 函數來複製已知固定長度的字串。核心棄用 `strncpy()` 的工作始於 2020 年,共涉及 70 位開發者的 362 次提交。
    • 在虛擬機器管理程式中 KVM 新增對 Intel MBEC(基於模式的執行控制)和 AMD GMET(客戶機模式執行陷阱)擴展的支持,這兩項擴展允許在內存轉換表中分別處理客戶機系統中內核空間和用戶空間的執行權限。先前,Intel 和 AMD 的硬體虛擬化擴充僅允許使用單一位元將記憶體頁標記為可執行,核心空間和使用者空間權限的分離則在虛擬機器管理程式層級透過軟體實現。使用 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 全域鎖的使用。
    • 核心已移除 AppleTalk 協定堆疊的實現,該協定堆疊自 1985 年以來一直用於蘋果電腦,並在 20 世紀 90 年代被其他協定堆疊取代。 TCP/IP此外,與 PPPoATM 無關的 ATM 資料傳輸技術元件、基於 ISA 和 PCMCIA 匯流排的 ARCnet 網路介面、具有 PCMCIA 介面的藍牙適配器、Chelsea TLS 加速器、用於將 TLS 與 sockmap 整合的程式碼以及對 cfg80211/mac80211 無線協定中已移除的頻率 MHz。由於存在未解決的阻塞性問題且缺乏維護人員,基於 TCP 卸載引擎的特定 TLS 處理加速實作已被移除(保留了更常見的 TLS 卸載實作)。與 64 位元系統上的 32 位元 x_tables 相容的程式碼已被停用,並計劃移除。
    • PPPoE驅動程式現在支援GRO(通用接收卸載)和GSO(通用分段卸載)機制,用於硬體加速封包重組和分段。使用GRO和GSO可顯著提高入站流量吞吐量。例如,在配置了位址轉換器的MediaTek MT7621設備上,最大吞吐量從130 Mbit/s提高到630 Mbit/s。
  • Оборудование
    • AMDGPU驅動程式現已初步支援HDMI 2.1 FRL(固定速率連結)技術,能夠以4K/120Hz和8K/60Hz的解析度傳輸未壓縮視訊。由於HDMI論壇的授權要求,開源驅動程式先前一直難以實現對HDMI 2.1的支持,但AMD現在已獲得了類似的實作方案。
    • i915驅動程式現在支援設定顯示控制器的背景顏色。 pin_params.needs_low_address參數已實作。
    • 基於英特爾 Xe 架構的 GPU 的 Xe DRM(直接渲染管理器)驅動程式開發工作仍在繼續,該架構應用於英特爾 Arc 系列顯示卡和整合式顯示卡,最早可追溯到 Tiger Lake 處理器。目前已初步支援 CRI(Crescent Island)平台。此外,也為 Xe3p dGPU 平台實現了系統控制器。
    • Nouveau 驅動程式解決了 NVIDIA GA100 GPU 的問題。
    • v3d 驅動程式已更新,增加了管理 Raspberry Pi 板上 v3D GPU 功耗的功能。
    • 我們持續為配備 GSP 韌體的 NVIDIA GPU 整合 Nova 驅動程式元件,這些 GPU 自基於 Turing 微架構的 NVIDIA GeForce RTX 2000 系列以來便開始使用 GSP 韌體。該驅動程式使用 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、Renesa R-E3277520v3、Re7 i.MX6/8/9、NXP LX2160A、TI K3 AM62x。

同時,拉丁美洲自由軟體基金會創建了一個完全自由的核心版本 7.2 - Linux-libre 7.2-gnu 版本已清理韌體和驅動程式中包含的非自由元件或製造商限制範圍的程式碼片段。 7.2 版本包含針對新的 rt722-sdca 和 tac5xx2 驅動程式的 blob 清理。 amdgpu、nova core、qcom iris、q6v5、iwlwifi、amdxnda、adreno、r8152 和 mt792x 驅動程式的清理程式碼已更新。韌體載入介面已調整。 ARM 晶片的裝置樹 (dts) 檔案中的 blob 名稱已清理。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster