Linux 6.0 內核版本

經過兩個月的開發,Linus Torvalds 發布了 Linux 6.0 核心。 版本號的重大改變是出於美觀的原因,也是為了緩解系列中積累大量問題帶來的不適而採取的正式步驟(Linus 開玩笑說改變分支號的原因更有可能是因為他手指不夠了)和腳趾來計算版本號)。 最顯著的變化包括:XFS 中對非同步緩衝寫入的支援、ublk 區塊驅動程式、任務排程器的最佳化、驗證核心正確操作的機制、對 ARIA 區塊密碼的支援。

內核 6.0 中的主要創新:

  • 磁盤子系統、I/O 和文件系統
    • XFS 檔案系統使用 io_uring 機制新增了對非同步緩衝寫入的支援。 使用fio工具進行的效能測試(1線程,4kB區塊大小,600秒,順序寫入)顯示每秒輸入/輸出操作(IOPS)從77k增加到209k,資料傳輸速度從314MB/s增加到854MB/s ,延遲從 9600ns 下降到 120ns(80 倍)。
    • Btrfs 檔案系統為「發送」命令實現了協議的第二個版本,該命令實現了對附加元資料的支援、以更大的區塊(超過 64K)發送資料並以壓縮形式傳輸磁碟區。 由於同時讀取多達 3 個磁區,直接讀取操作的效能顯著提高(高達 256 倍)。 透過減少延遲元素的保留元數據,減少鎖定爭用並加快元數據檢查。
    • 新的 ioctl 操作 EXT4_IOC_GETFSUUID 和 EXT4_IC_SETFSUUID 已新增至 ext4 檔案系統中,以擷取或設定儲存在超級區塊中的 UUID。
    • F2FS 檔案系統提供低記憶體消耗模式,可優化 RAM 量較小的裝置上的操作,並允許您以降低效能為代價來減少記憶體消耗。
    • 新增了對 NVMe 驅動器身份驗證的支援。
    • NFSv4 伺服器對活動用戶端的數量進行限制,系統中每 GB RAM 設定為 1024 個有效用戶端。
    • CIFS客戶端實作提高了多通道傳輸模式下的效能。
    • fanotify FS 中的事件追蹤子系統已新增標誌 FAN_MARK_IGNORE 以忽略特定事件。
    • 在 Overlayfs FS 中,當透過使用者 ID 對應安裝在 FS 之上時,可以提供對 POSIX 相容存取控制清單的正確支援。
    • 新增了 ublk 區塊驅動程序,它將特定邏輯移動到用戶空間中後台進程的一側並使用 io_uring 子系統。
  • 內存和系統服務
    • DAMON(資料存取監控)子系統新增了新功能,不僅可以監控使用者空間對 RAM 的進程訪問,還可以影響記憶體管理。 特別是,提出了一個新模組“LRU_SORT”,它提供了 LRU(最近最少使用)列表的重新分組,以提高某些記憶體頁面的優先權。
    • 創建新記憶體區域的能力已透過 CXL(計算快速連結)匯流排的功能實現,該匯流排用於組織 CPU 和記憶體設備之間的高速互動。 CXL 可讓您連接外部儲存裝置提供的新儲存區域,並將其用作額外的實體位址空間資源,以擴展系統的隨機存取記憶體 (DDR) 或永久記憶體 (PMEM)。
    • 解決了AMD Zen 處理器的效能問題,該問題是由20 年前為解決某些晶片組中的硬體問題而添加的程式碼引起的(添加了額外的WAIT 指令以減慢處理器速度,以便晶片組有時間進入空閒狀態)。 這項變更導致頻繁在空閒和繁忙狀態之間交替的工作負載下效能下降。 例如,在停用此解決方法後,平均 tbench 測試分數從 32191 MB/s 增加到 33805 MB/s。
    • 具有啟發式的程式碼已從任務排程器中刪除,確保將進程遷移到負載最少的 CPU,同時考慮到能源消耗的預測增益。 開發人員得出的結論是,啟發式方法不夠有用,只要這種遷移可能會導致較低的功耗(例如,當目標CPU 處於較低功耗層時),則更容易刪除它並遷移進程,而無需進行額外的評估。 停用啟發式會導致執行密集型任務時功耗降低,例如在視訊解碼測試中,功耗降低了 5.6%。
    • 大型系統上 CPU 核心之間的任務分配已得到最佳化,從而提高了某些類型工作負載的效能。
    • io_uring 非同步 I/O 介面提供了一個新標誌 IORING_RECV_MULTISHOT,它允許您將多重模式與 recv() 系統呼叫一起使用,以同時從相同網路套接字執行多個讀取操作。 io_uring 也支援無中間緩衝的網路傳輸(零複製)。
    • 實作了將連接到 uprobe 的 BPF 程式置於睡眠狀態的功能。 BPF 還添加了一個新的迭代器 ksym 用於處理內核符號表。
    • sysfs 中用於存取 UEFI 引導變數的過時「efivars」介面已被刪除(efivarfs 虛擬 FS 現在普遍用於存取 EFI 資料)。
    • perf 實用程式提供了新的報告,用於分析鎖定衝突以及處理器執行核心元件所花費的時間。
    • CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 設定已被刪除,這允許核心在「-O3」最佳化模式下建置。 值得注意的是,可以透過在彙編期間傳遞標誌來進行最佳化模式的實驗(「make KCFLAGS=-O3」),並且向Kconfig 添加設定需要可重複的效能分析,表明在「-O3」模式中使用循環展開與“-O2”優化等級相比具有優勢。
    • 添加了 debugfs 接口,用於獲取有關各個“內存收縮器”(內存不足時調用的處理程序,並打包內核數據結構以減少內存消耗)的操作資訊。
    • 對於OpenRISC和LoongArch架構,實現了對PCI匯流排的支援。
    • 對於 RISC-V 架構,已實現「Zicbom」擴充功能來管理具有非快取一致性的 DMA 的裝置。
  • 虛擬化和安全
    • 新增了 RV(運行時驗證)驗證機制,以驗證高可靠系統上的正確操作,確保不會出現故障。 驗證是在運行時透過將處理程序附加到追蹤點來執行的,這些點根據定義系統預期行為的機器的預定參考確定性模型檢查實際執行進度。 在運行時使用模型進行驗證被定位為一種更輕量級且易於實現的方法,用於確認關鍵系統上執行的正確性,並補充了經典的可靠性驗證方法。 RV 的優點之一是能夠提供嚴格的驗證,而無需使用建模語言單獨實現整個系統,以及對不可預見事件的靈活回應。
    • 用於管理基於 Intel SGX2(Software Guard eXtensions)技術的 enclave 的整合核心元件,該技術允許應用程式在隔離的加密記憶體區域中執行程式碼,而係統的其餘部分對此的存取受到限制。 Intel SGX2 技術在 Intel Ice Lake 和 Gemini Lake 晶片中受支持,與 Intel SGX1 的不同之處在於用於 enclave 動態記憶體管理的附加指令。
    • 對於 x86 架構,已經實現了透過引導程式設定傳輸偽隨機數產生器種子的功能。
    • SafeSetID LSM 模組現在能夠管理透過 setgroups() 呼叫所做的變更。 SafeSetID 允許系統服務安全地管理用戶,而無需升級權限 (CAP_SETUID) 且無需取得 root 權限。
    • 新增了對 ARIA 分組密碼的支援。
    • 基於 BPF 的安全管理模組提供了將處理程序附加到各個進程和進程組 (cgroup) 的能力。
    • 增加了一種帶有看門狗實現的機制,可以根據監視 vCPU 活動來檢測來賓系統的掛起。
  • 網絡子系統
    • 用於產生和檢查 SYN cookie 的處理程序已新增至 BPF 子系統。 還新增了一組用於存取和變更連線狀態的函數 (kfunc)。
    • 無線堆疊增加了對 WiFi 7 規範中定義的 MLO(多鏈路操作)機制的支持,允許設備使用不同的頻段和通道同時接收和發送數據,例如,在設備之間同時建立多個通訊通道。客戶端設備的接入點。
    • 核心內建的 TLS 協定的效能得到了改進。
    • 新增了核心命令列選項“hostname=”,以允許在啟動過程的早期、用戶空間元件啟動之前設定主機名稱。
  • Оборудование
    • i915 (Intel) 驅動程式提供 Intel Arc (DG2/Alchemist) A750 和 A770 獨立顯示卡的支援。 已提議初步實現 Intel Ponte Vecchio (Xe-HPC) 和 Meteor Lake GPU 的支援。 支援英特爾 Raptor Lake 平台的工作仍在繼續。
    • amdgpu 驅動程式繼續為 AMD RDNA3 (RX 7000) 和 CDNA (Instinct) 平台提供支援。
    • Nouveau 驅動程式重新設計了 NVIDIA nv50 GPU 顯示引擎的支援代碼。
    • 為 LogiCVC 畫面新增了新的logicvc DRM 驅動程式。
    • v3d 驅動程式(適用於 Broadcom Video Core GPU)支援 Raspberry Pi 4 板。
    • 在 msm 驅動程式中新增了對 Qualcomm Adreno 619 GPU 的支援。
    • 向 Panfrost 驅動程式添加了對 ARM Mali Valhall GPU 的支援。
    • 增加了對 Lenovo ThinkPad X8s 筆記型電腦中使用的 Qualcomm Snapdragon 3cx Gen13 處理器的初步支援。
    • 新增了適用於 AMD Raphael (Ryzen 7000)、AMD Jadeite、Intel Meteor Lake 和 Mediatek MT8186 平台的聲音驅動程式。
    • 增加了對 Intel Habana Gaudi 2 機器學習加速器的支援。
    • 新增了對 ARM SoC Allwinner H616、NXP i.MX93、Sunplus SP7021、Nuvoton NPCM8XX、Marvell Prestera 98DX2530、Google Chameleon v3 的支援。

同時,拉丁美洲自由軟體基金會形成了完全自由的核心 6.0 版本 - Linux-libre 6.0-gnu,清除了包含非自由元件或程式碼片段的韌體和驅動程式元素,其範圍為受製造商限制。 新版本禁止在 CS35L41 HD 音訊驅動程式和 STM32G0 微控制器的 UCSI 驅動程式中使用 blob。 高通和聯發科晶片的 DTS 檔案已清理。 MediaTek MT76 驅動程式中停用 blob 的功能已重新設計。 更新了 AMDGPU、Adreno、Tegra VIC、Netronome NFP 和 Habanalabs Gaudi2 驅動程式和子系統中的斑點清理程式碼。 停止清理 VXGE 驅動程序,該驅動程式已從核心中刪除。

來源: opennet.ru

添加評論