去年合併用於 Linux 5.16 週期是 FUTEX2 的 futex_waitv() 系統調用,用於等待多個 futex 以更好地匹配 Microsoft Windows 的行為。這項 FUTEX2 計劃旨在進一步提高 Linux 遊戲性能/效率,特別是對於 Valve 的 Steam Play。 FUTEX2 最初還有其他目標,現在我們看到了另一個正在努力的目標:NUMA 意識。
為了盡快獲得主線,FUTEX2 使用 futex_waitv 進行了簡單的初始推送,並從初始合併計劃中刪除了一些附加功能,例如 NUMA 感知和可變大小的 futex。但是在 futex_waitv() 被合併後的幾個月和幾個內核週期中,並沒有急於完成剩餘的 FUTEX2 功能。
早在 7 月,來自 Igalia 的 André Almeida 就開始研究 FUTEX2 的 NUMA 感知處理,然後本週在 Linux Plumbers 大會上介紹了它。這種 NUMA 意識是為了克服當前 FUTEX 的缺陷,即所有內核空間內存哈希表都在單個內存節點內,並導致在存在哈希表的節點之外發生的每個 FUTEX 操作的額外延遲。
如果它應該駐留在當前節點中,建議的添加能夠添加 NUMA 提示,否則可以指定特定節點。
希望了解更多關於 FUTEX2 NUMA 意識工作的人可以查看 André Almeida 的 幻燈片來自 LPC 2022 和/或 LKML 從 7 月開始,概述了相同的提議接口。