12 月 28 日消息,Linux Kernel 在數年前就已經合并了可重啟序列(The Restartable Sequences,簡稱 RSEQ),GNU C Library 已經使用 RSEQ 對每個 CPU 數據進行更快的用戶空間操作。在明年推出的 Linux 6.3 中將會進一步改進 RSEQ。
通過遞增每個 CPU 計數器、修改每個 CPU 自旋鎖、讀取 / 寫入每個 CPU 環形緩沖區等情況下避免原子操作(atomic operation,是指不會被線程調度機制打斷的操作),RSEQ 可以明顯優化性能,從而提供出色的基準測試結果。
主導 RSEQ 大部分工作的 Mathieu Desnoyers 最近一直致力于擴展 Restartable Sequences ABI ,并公開了 NUMA node ID、mm_cid 和 mm_numa_cid 字段。
IT之家了解到,Desnoyers 在補丁介紹中表示:
NUMA node ID允許在 libc 中實現更快的 getcpu (2)。
per-memory-map concurrency id (mm_cid)允許用戶空間 per-cpu 數據結構進行理想縮放(向下或向上)。
內存映射中分配的并發 ID 可以通過調度程序跟蹤。而這個調度程序根據并發運行的線程數、CPU 親和性(affinity)、應用于這些線程的 cpuset 和邏輯核心數等等參數進行判斷。
NUMA-aware concurrency id (mm_numa_cid)與 mm_cid 類似,不同之處在于它跟蹤與每個 cid 相關聯的 NUMA node ID。
在 NUMA 系統上,當用戶空間觀察到 NUMA 感知并發 ID 與 NUMA 節點相關聯時,它保證永遠不會更改 NUMA 節點,除非發生內核級 NUMA 配置更改。這對于在屬于 cpuset 的進程或一組進程被固定到屬于系統 NUMA 節點子集的一組內核的環境中運行的 NUMA 感知 per-cpu 數據結構很有用。
關鍵詞: