About cookies on this site Our websites require some cookies to function properly (required). In addition, other cookies may be used with your consent to analyze site usage, improve the user experience and for advertising. For more information, please review your options. By visiting our website, you agree to our processing of information as described in IBM’sprivacy statement. To provide a smooth navigation, your cookie preferences will be shared across the IBM web domains listed here.
Available as build601691 and will be included in Service Pack 15
The whole issue with cpu.shares and affinity is that they don't mix well. If your shop is doing cgroup v2 exclusively on a host and no cpu binding/masks, then cpu.shares works perfectly. If however, you are using cpu binding/masks, then cpu.shares does not make sense. I think it should be one or the other, but not both at the same time, and I agree, for interactive workload/queues, that's a great idea to recommend using shares only. IMHO, a shop is either 100% affinity, like a classic HPC shop, or 100% non-affinity using cpu.shares. When you mix affinity and non-affinity jobs on the same host, I'm not sure that the OS will prioritize workload away from the bound cpus, it litterally limits the jobs inside the cgroup to them, but does not block other pids in the system mask from using them.
The real question is how do we express this properly in the LSF configuration. If you say that you want cpu.shares for interactive only, then your hosts would have to not overlap. If you say you want to use affinity only, then you should provide some warning that cpu.shares will be ignored. It's tricky business, and I've not given the idea as to how to express the configuration fully.
As previously discussed, the way this is implemented in the kernel would mean that it would need to be an explicit choice at the node level whether a node allowed affinity/binding or cpu shares. The latter may be good for interactive work, but applications that benefit from affinity would suffer.