Before the Linux Plumbers Conference (LPC) session, to be held next week in Dublin, Ireland, AMD will be conducting a seminar on improving the scheduler for split last-level cache, or LLC, architectures. K. Prateek Nayak, an engineer of the Linux server team for AMD, published a patch series focusing on counting user-space hinting at task placement. This new development displays AMD's intent to improve the Linux kernel's scheduler for split-LLC CPU plans to aid their EPYC server processors.
AMD seeks higher performance of EPYC CPUs in Linux using user-space hinting for workloads
The new patches are labeled "experimental" and "request for comments" and count low-level knobs to control the scheduler's arrangement of user-space tasks relying upon the hints provided by the user-space.
The current API design is experimental and is only capable of setting low-level hints. This API is not meant for public consumption and only serves as a means to test and demonstrate the efficacy of hints in helping the scheduler make optimal placement decisions based on the requirements provided by the applications. Scheduler is free to ignore the hints set by the user if it believes that following the hints will put the system in a suboptimal state.
The heuristics used by the scheduler today, such as the WF_SYNC flag, wake_wide() logic, etc., fall short at accurately inferring the nature of the workload in terms of whether it is preferable to consolidate a group of threads close together or if they should be spread apart. The inability to infer the nature of the workload can lead to a series of incorrect placement decisions that can be detrimental to the workload performance. The penalty seems to be severe on systems with split-LLC such as AMD EPYC.
The new patch sequence from AMD includes the capability to select task placement near the parent if there is an inactive core in the local group. From there, the process determines to proceed with the group containing the least utilization to extend the workload, and additional probable hints are also being examined. Peter Zijlstra, an engineer for Intel's Linux kernel team, proposed a high-level hinting framework last year that would assist the kernel scheduler's task sequence with the increasingly complex CPUs and workloads. This user-space hinting in the present state is accomplished through the prctl() interface.
AMD's initial testing of the user-space hinting patches has demonstrated the prospect of increasing EPYC server performance for diverse workloads like Hackbench, Schbench, Tbench, and more. Initial testing has been done on Intel's Xeon Ice Lake in an area where user-space hinting can benefit workloads.
Since the current patchwork is experimental, it is speculated that it will be several months before we see the user-space hinting fully implemented and ready for adding to the Linux kernel. Users interested in discovering the current patchwork can find out more through the Linux kernel mailing list.