核心版本資訊

本頁面會概述各個核心版本的主要功能,並提供其他資訊的連結。

核心 6.12 的新功能

本節說明核心 6.12 的新功能。

記憶體配置分析

瞭解記憶體用量關鍵在於瞭解分配位置。Kernel 6.12 包含一個名為「記憶體配置分析」 (設定檔中的 CONFIG_MEM_ALLOC_PROFILING) 的新記憶體配置歸因系統。透過記憶體配置分析,每個配置都會歸因於不重複的來源程式碼行,因此可以快速找出配置問題。此外,記憶體配置分析功能還可:

  • 在工程階段使用,但可在標準 GKI 映像檔中使用。

  • 可使用 sysctl.vm.mem_profiling 啟動參數啟用。

  • 適用於核心內和已載入的模組。

透過零複製和多重讀取功能加快 io_uring

在 6.12 核心中,statsdlogd 模組會使用 sendfile 零拷貝功能,提升效能。

此外,這個核心版本會實作多重快照讀取功能,讓單一讀取作業可同時擷取多個資料片段,進而提升效能。

改善 Berkeley Packet Filter (BPF) 功能和支援

在 6.12 核心中,BPF 工具鍊已移至支援 CO-RE 和多項現代功能。此外,新的 BPF 載入器可讓 AOSP 中的程式使用新式 BPF。

Proxy 執行

執行 Proxy 可讓排程器從高優先順序程序借用 CPU 週期,以便復原由低優先順序程序保留的鎖定。這項功能可減少優先順序倒置的問題。

Kernel 6.6 的新功能

本節將說明核心 6.6 的新功能。

Rust 支援

多個核心 6.6 專案都使用 Rust。

每個虛擬記憶體區域 (VMA) 鎖定

核心 6.6 會使用個別虛擬記憶體區域鎖定機制,解決 mmap_sem (舊稱 mmap_lock) 的競爭問題。因此,使用大量執行緒的應用程式可能會將啟動時間縮短 20%。

最早適用的虛擬截止期限優先 (EEVDF) 排程器取代 CFS

EEVDF 會取代完全公平排程器 (CFS),以便在短時間和長時間執行的工作之間,更妥善地平衡 CPU 存取作業。

減少讀取副本更新 (RCU) 回呼的耗電量

RCU_LAZY 選項會使用以計時器為基礎的 RCU 回呼批次處理方法來節省電力。對於負載較低或閒置的系統,這個選項可將耗電量降低 5% 至 10%。

更完善的 ZRAM 記憶體壓縮功能

新的 CONFIG_ZRAM_MULTI_COMP 建構設定可讓 ZRAM 使用三種替代演算法之一重新壓縮頁面。這項重壓縮功能可進一步縮減已壓縮的記憶體,為執行中的工作提供更多空間。

Kernel 6.1 的新功能

本節說明核心 6.1 的新功能。

透過核心控制流程完整性 (KCFI) 提高安全性

KCFI 會取代控制流程完整性 (CFI),因此可降低執行階段成本,且不會產生建構時間成本。與 CFI 相比,KCFI 的執行階段成本較低,因此可在更多位置啟用,尤其是追蹤點和供應商掛鉤。

除了 KCFI,核心 6.1 還推出多項安全功能,例如嚴格 memcpy 邊界檢查和直線推測攻擊緩解措施。

如要進一步瞭解 KCFI,請參閱「Kernel control flow integrity」。

多代 LRU (MGLRU)

我們已將 MGLRU 新增至核心 6.1,藉此改善記憶體管理,更精準地識別實際使用中的頁面。這項改善可減少系統在記憶體不足時,需要停止應用程式的情況。這項更新也能改善使用者體驗,因為裝置的整體回應速度會更快。

MGLRU 的實作內容也包括支援新的 RCU 安全楓樹,在某些情況下,可用於取代紅黑樹 (rbtree)。使用時,由於 RCU 安全的楓樹樹狀結構占用空間較小且無鎖定,因此可提升效能。

如要進一步瞭解 MGLRU,請參閱「多代 LRU」。

時段設定

維護及更新排程器是改善核心的關鍵工作。6.1 版的核心更新內容包括:

  • 新增叢集感知排程功能,可遷移至共用 L2 快取的核心,進而提高效能。
  • 移除不必要的能源邊界啟發法。這項更新會限制部分遷移作業,進而提高能源使用率,最多可達 5%。
  • 改善負載平衡功能,縮短喚醒延遲時間。
  • 將 RCU 提早寬限期移至即時 kthread。這項更新大幅減少了 RCU 相關的延遲異常值。

圖形

Kernel 6.1 包含用於匯出及匯入同步檔案的 dma-buf 新方法,以符合 Vulcan Video API 的需求。

新的 futex_waitv() 方法會同時等待多個 futex,簡化從其他平台移植遊戲的程序。

偵錯工具

在偵錯版本中使用核心並行處理 SANitizer (KCSAN),找出核心程式碼中的競爭狀態。

此外,請使用 Kernel Memory SANitizer (KMSAN) 找出核心中未初始化的值。

改善對 ARM64 的支援

6.1 核心為 ARM64 架構帶來多項改善,包括:

  • 支援 ARMv8.6 計時器擴充功能
  • 支援 QARMA3 指標驗證演算法
  • 初步支援 ARMv9 可調整矩陣延伸模組 (SME)
  • 改善替代功能修補作業,以便縮小核心圖片大小