NUMA Interface For FUTEX2 Still Being Tackled For Linux
Merged last year for the Linux 5.16 cycle was FUTEX2's futex_waitv() system call for waiting on multiple futexes in order to better match the behavior of Microsoft Windows. This FUTEX2 initiative was driven as an effort to further enhance Linux gaming performance/efficiency particularly for Valve's Steam Play. Originally there were other goals with FUTEX2 and now we are seeing another one of those being worked on: NUMA awareness.
In order to get mainlined sooner, FUTEX2 went for a simple initial push with futex_waitv and dropping some of the extras like NUMA awareness and variable sized futexes from the initial merge plans. But in the months since futex_waitv() was merged and a few kernel cycles since, there hasn't been a rush to finish the remaining FUTEX2 features.
Back in July André Almeida of Igalia began looking at the NUMA awareness handling for FUTEX2 and then this week presented on it at the Linux Plumbers Conference. This NUMA awareness is to overcome the current FUTEX defect that all the kernel space memory hash table is within a single memory node and leading to extra latency for every FUTEX operation that happens outside of the node where there is the hash table.
The proposed addition is being able to add a NUMA hint if it should reside in the current node otherwise it can specify a particular node.
Those wishing to learn more about the NUMA awareness effort for FUTEX2 can see André Almeida's slide deck from LPC 2022 and/or the LKML from July outlining the same proposed interface.
In order to get mainlined sooner, FUTEX2 went for a simple initial push with futex_waitv and dropping some of the extras like NUMA awareness and variable sized futexes from the initial merge plans. But in the months since futex_waitv() was merged and a few kernel cycles since, there hasn't been a rush to finish the remaining FUTEX2 features.
Back in July André Almeida of Igalia began looking at the NUMA awareness handling for FUTEX2 and then this week presented on it at the Linux Plumbers Conference. This NUMA awareness is to overcome the current FUTEX defect that all the kernel space memory hash table is within a single memory node and leading to extra latency for every FUTEX operation that happens outside of the node where there is the hash table.
The proposed addition is being able to add a NUMA hint if it should reside in the current node otherwise it can specify a particular node.
Those wishing to learn more about the NUMA awareness effort for FUTEX2 can see André Almeida's slide deck from LPC 2022 and/or the LKML from July outlining the same proposed interface.
2 Comments