Linux 5.19 內核版本

經過兩個月的開發,Linus Torvalds 發布了 Linux 核心 5.19。 最顯著的變化包括:支援 LoongArch 處理器架構、整合「BIG TCP」修補程式、fscache 中的按需模式、刪除程式碼以支援 a.out 格式、使用 ZSTD 進行韌體壓縮的能力、用於管理用戶空間的記憶體驅逐,提高偽隨機數產生器的可靠性和效能,支援Intel IFS(現場掃描)、AMD SEV-SNP(安全嵌套分頁)、Intel TDX(可信任域擴展)和ARM SME(可擴展矩陣擴展)擴展。

Linus 在公告中表示,下一個核心版本很可能會編號為 6.0,因為 5.x 分支已經累積了足夠的版本來更改版本號碼中的第一個數字。 編號變更是出於美觀原因而進行的,是緩解因係列中大量問題累積而產生的不適的正式步驟。

Linus 也提到,他使用基於 ARM64 架構(Apple Silicon)的 Apple 筆記型電腦以及基於 Asahi Linux 發行版的 Linux 環境來創建該版本。 這不是 Linus 的主要工作站,但他使用該平台來測試其對核心工作的適用性,並確保他可以在攜帶輕便筆記型電腦旅行時生成內核版本。 在此之前,也就是多年前,Linus 有過使用蘋果設備進行開發的經驗——他曾經使用過一台基於 ppc970 CPU 的 PC 和一台 Macbook Air 筆記型電腦。

新版本包含來自16401 名開發人員的2190 個修復(在先前的版本中,有來自16206 名開發人員的2127 個修復),補丁大小為90 MB(更改影響了13847 個文件,添加了1149456 行程式碼,刪除了349177 行程式碼)。 39 中引入的所有變更中,約5.19% 與裝置驅動程式相關,約21% 的變更與更新特定於硬體架構的程式碼相關,11% 與網路堆疊相關,4% 與檔案系統相關,3% 與文件系統相關。與內部核心子系統相關。

內核 5.19 中的主要創新:

  • 磁盤子系統、I/O 和文件系統
    • 用於唯讀分區的EROFS(增強型唯讀檔案系統)檔案系統已轉換為使用提供資料快取的fscache 子系統。 這項變更顯著提高了從基於 EROFS 的映像啟動大量容器的系統的效能。
    • fscache子系統增加了按需讀取模式,用於最佳化EROFS。 新模式可讓您從本機系統中的 FS 映像組織讀取快取。 最初可用的操作模式側重於在本地檔案系統中快取透過網路檔案系統傳輸的數據,與此相反,「按需」模式將檢索資料並將其寫入快取的功能委託給單獨的伺服器。後台進程運行在用戶空間。
    • XFS 提供了在 i 節點中儲存數十億個擴充屬性的能力。 一個檔案的最大擴展數已從 4 億個增加到 247 個。實現了一種模式,可以同時自動更新多個擴展檔屬性。
    • Btrfs 檔案系統優化了鎖定的工作,在 nowait 模式下直接寫入時,效能提高了約 7%。 NOCOW 模式(無寫入時複製)操作效能提高約 3%。 執行「傳送」命令時頁面快取上的負載已減少。 子頁面的最小大小已從 64K 減少到 4K(可以使用小於核心頁面的子頁面)。 已從使用基數樹過渡到使用 XArrays 演算法。
    • NFS 伺服器中新增了一種模式,以延長已停止回應請求的用戶端設定的鎖定狀態的保留。 新模式可讓您將鎖定清除延遲最多一天,除非另一個用戶端要求競爭鎖。 正常模式下,客戶端停止回應90秒後阻塞解除。
    • fanotify FS 中的事件追蹤子系統實作了 FAN_MARK_EVICTABLE 標誌,您可以使用該標誌停用在快取中固定目標 i 節點,例如,忽略子分支而不將其部分固定在快取中。
    • FAT32 檔案系統的驅動程式添加了對透過 statx 系統呼叫獲取有關檔案創建時間的資訊的支持,並實現了更高效、功能更強大的 stat() 版本,該版本返回有關檔案的擴展資訊。
    • 對 exFAT 驅動程式進行了重大最佳化,允許在「dirsync」模式處於活動狀態時同時清除一組磁區,而不是按順序逐個磁區清除。 透過減少最佳化後的區塊請求數量,在 SD 卡上建立大量目錄的效能提高了 73-85% 以上,具體取決於叢集大小。
    • 核心包含對 ntfs3 驅動程式的第一個修正更新。 自去年3月ntfs5.15包含在XNUMX核心中以來,驅動程式一直沒有更新,與開發人員的溝通也已遺失,但開發人員現在已恢復發布變更。 提議的補丁消除了導致記憶體洩漏和崩潰的錯誤,解決了 xfstests 執行的問題,清理了未使用的程式碼,並修復了拼字錯誤。
    • 對於OverlayFS,已經實作了映射已掛載檔案系統的使用者ID的功能,用於將已掛載的外部分割區上的特定使用者的檔案與目前系統上的另一個使用者進行比對。
  • 內存和系統服務
    • 新增對龍芯3 5000處理器中使用的LoongArch指令集架構的初步支持,該架構實現了新的RISC ISA,類似於MIPS和RISC-V。 LoongArch 架構提供三種版本:精簡 32 位元 (LA32R)、常規 32 位元 (LA32S) 和 64 位元 (LA64)。
    • 刪除了支援 a.out 可執行檔格式的程式碼,該格式在版本 5.1 中已棄用。 a.out 格式在 Linux 系統上早已被棄用,並且預設 Linux 配置中的現代工具不支援生成 a.out 檔案。 a.out 檔案的載入器可以完全在使用者空間中實作。
    • 已停止支援特定於 x86 的開機選項:nosp、nosmap、nosmep、noexec 和 noclflush)。
    • 對過時的 CPU h8300 架構(瑞薩 H8/300)的支援已停止,該架構長期以來一直不受支援。
    • 與回應分割鎖(「分割鎖」)偵測相關的擴充功能,由於在執行原子指令時,資料會跨越兩個CPU 快取行,因此在存取記憶體中未對齊的資料時會發生分割鎖(「分割鎖”)檢測。 這種阻塞會導致效能顯著下降。 如果先前預設情況下核心會發出警告,其中包含有關導致阻塞的進程的信息,那麼現在有問題的進程將進一步減慢以保持系統其餘部分的效能。
    • 新增了對Intel 處理器中實現的IFS(現場掃描)機制的支持,該機制允許您運行低階CPU 診斷測試,該測試可以識別基於糾錯碼(ECC) 或奇偶校驗位的標準工具未檢測到的問題。 執行的測試以可下載韌體的形式進行,其設計與微代碼更新類似。 測試結果可透過 sysfs 取得。
    • 新增了將 bootconfig 檔案嵌入到核心中的功能,除了命令列選項之外,還允許透過設定檔案來確定核心參數。 嵌入是使用彙編選項“CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»”執行的。 以前,bootconfig 是透過附加到 initrd 映像來決定的。 整合到核心中允許在沒有 initrd 的配置中使用 bootconfig。
    • 已實現下載使用 Zstandard 演算法壓縮的韌體的功能。 sysfs 中新增了一組控制檔案 /sys/class/firmware/*,讓您可以從使用者空間啟動韌體載入。
    • io_uring 非同步 I/O 介面提供了一個新標誌 IORING_RECVSEND_POLL_FIRST,設定此標誌後,將首先使用輪詢傳送要處理的網路操作,這可以在可以接受延遲處理作業的情況下節省資源。 io_uring還添加了對socket()系統調用的支持,提出了新標誌來簡化文件描述符的管理,添加了“多鏡頭”模式以在accept()調用中一次接受多個連接,並添加了轉發NVMe的操作直接向設備發出命令。
    • Xtensa 架構提供對 KCSAN(Kernel Concurrency Sanitizer)調試工具的支持,該工具旨在動態檢測核心內的競爭條件。 還添加了對睡眠模式和協處理器的支援。
    • 針對m68k架構(Motorola 68000),實作了基於Android Goldfish模擬器的虛擬機器(平台模擬器)。
    • 對於AArch64架構,已經實現了對Armv9-A SME(可擴展矩陣擴展)擴展的支援。
    • eBPF 子系統允許在映射結構中儲存類型化指針,並且還添加了對動態指針的支援。
    • 提出了一種新的動態記憶體回收機制,支援使用 memory.reclaim 檔案進行使用者空間控制。 將數字寫入指定檔案將嘗試從與 cgroup 關聯的集合中逐出相應數量的位元組。
    • 提高了使用 zswap 機制壓縮交換分區中的資料時記憶體使用的準確性。
    • 對於RISC-V架構,提供了在32位元系統上運行64位元可執行檔的支持,新增了將限制性屬性綁定到記憶體頁的模式(例如停用快取),並實作了kexec_file_load()函數。
    • 對 32 位元 Armv4T 和 Armv5 系統的支援的實現適用於適用於不同 ARM 系統的通用多平台核心建置。
  • 虛擬化和安全
    • EFI 子系統實現了將秘密訊息秘密傳輸到客戶系統而不將其洩漏給主機系統的能力。 資料透過 securityfs 中的 security/coco 目錄提供。
    • 鎖定保護模式限制 root 使用者對核心的存取並阻止 UEFI 安全啟動繞過路徑,消除了允許透過操縱核心偵錯器繞過保護的漏洞。
    • 其中包括旨在提高偽隨機數產生器的可靠性和性能的補丁。
    • 使用 Clang 15 建構時,實現了對隨機化核心結構機制的支援。
    • Landlock 機制可讓您限制一組進程與外部環境的交互,並提供對允許您控製檔案重命名操作執行的規則的支援。
    • IMA(完整性測量架構)子系統旨在使用數位簽章和雜湊來驗證作業系統元件的完整性,現在已切換為使用 fs-verity 模組進行檔案驗證。
    • 停用對 eBPF 子系統的非特權存取時的操作邏輯已變更 - 先前與 bpf() 系統呼叫關聯的所有命令都已停用,並且從版本 5.19 開始,保留對不會導致建立物件的命令的存取。 此行為需要特權程序來載入 BPF 程序,但隨後非特權程序可以與該程序互動。
    • 增加了對AMD SEV-SNP(安全嵌套分頁)擴展的支持,該擴展提供嵌套內存頁表的安全工作,並防止對AMD EPYC 處理器的“undeSErVed”和“SEVerity”攻擊,從而允許繞過AMD SEV(安全加密虛擬化) )保護機制。
    • 新增了對 Intel TDX(可信任域擴展)機制的支持,該機制可讓您阻止第三方嘗試存取虛擬機器的加密記憶體。
    • 用於模擬區塊裝置的 virtio-blk 驅動程式增加了對使用輪詢的 I/O 的支持,根據測試,這已將延遲減少了約 10%。
  • 網絡子系統
    • 該軟體包包括一系列 BIG TCP 補丁,可讓您將 TCP 資料包的最大資料包大小增加到 4GB,以優化高速內部資料中心網路的運作。 透過實施「巨型」資料包,實現了 16 位元標頭字段大小的資料包大小的類似增加,其 IP 標頭中的大小設為 0,實際大小以單獨的 32 位元傳輸單獨附加標頭中的字段。 在效能測試中,將資料包大小設為 185 KB 可將吞吐量提高 50%,並顯著降低資料傳輸延遲。
    • 繼續將工作集成到網絡工具堆棧中,以跟踪丟棄數據包的原因(原因代碼)。 原因代碼在釋放與數據包關聯的內存期間發送,並允許您考慮以下情況:由於填充標頭中的字段錯誤而丟棄數據包、rp_filter 過濾器檢測到欺騙、校驗和錯誤、超出範圍等。內存、IPSec XFRM 規則的觸發、錯誤的TCP 序列號等。
    • 新增了在無法使用某些 MPTCP 功能的情況下回退 MPTCP(多路徑 TCP)連線以使用常規 TCP 的支援。 MPTCP 是 TCP 協定的擴展,用於組織 TCP 連線的操作,透過與不同 IP 位址關聯的不同網路介面沿著多條路由同時傳送封包。 新增了 API 以從用戶空間控制 MPTCP 流。
  • Оборудование
    • 新增了超過 420k 行與 amdgpu 驅動程式相關的程式碼,其中約 400k 行是為 AMD GPU 驅動程式中的 ASIC 暫存器資料自動產生的頭文件,另外 22.5k 行提供了對 AMD SoC21 支援的初步實作。 AMD GPU 的驅動程式總大小超過 4 萬行程式碼。 除了SoC21之外,AMD驅動程式還包括對SMU 13.x(系統管理單元)的支持,更新了對USB-C和GPUVM的支持,並準備支持下一代RDNA3(RX 7000)和CDNA(AMD Instinct)平台。
    • i915 驅動程式(Intel)擴充了與電源管理相關的功能。 添加了筆記型電腦上使用的Intel DG2 (Arc Alchemist) GPU 的標識符,為Intel Raptor Lake-P (RPL-P) 平台提供了初步支持,添加了有關Arctic Sound-M 顯卡的信息),為計算引擎實現了ABI,增加了DG2卡支援Tile4格式;對於基於Haswell微架構的系統,實現了DisplayPort HDR支援。
    • Nouveau 驅動程式已切換為使用 drm_gem_plane_helper_prepare_fb 處理程序;靜態記憶體分配已應用於某些結構和變數。 至於 NVIDIA 在 Nouveau 中使用開源核心模組的情況,到目前為止的工作歸結為識別和消除錯誤。 未來,已發布的韌體計劃用於提高驅動程式效能。
    • 增加了基於M1晶片的Apple電腦所使用的NVMe控制器的驅動程式。

同時,拉丁美洲自由軟體基金會形成了完全自由核心 5.19 的版本 - Linux-libre 5.19-gnu,清除了包含非自由元件或程式碼段的韌體和驅動程式元素,其範圍為受製造商限制。 新版本清理了 pureLiFi X/XL/XC 和 TI AMx3 Wkup-M3 IPC 的驅動程式。 更新了 Silicon Labs WFX、AMD amdgpu、Qualcomm WCNSS 週邊影像載入器、Realtek 藍牙、Mellanox Spectrum、Marvell WiFi-Ex、Intel AVS、IFS、pu3-imgu 驅動程式和子系統中的斑點清理程式碼。 已實作 Qualcomm AArch64 devicetree 檔案的處理。 新增了對新的 Sound Open Firmware 元件命名方案的支援。 停止清理 ATM 大使驅動程序,該驅動程式已從核心中刪除。 HDCP 和 Mellanox Core 中的 blob 清理管理已移至單獨的 kconfig 標籤。

來源: opennet.ru

添加評論