SCHED_OTHER not properly balancing load when CPU affinity groups specified

Solution In Progress - Updated -

Issue

SCHED_OTHER not properly balancing load when CPU affinity groups specified.

One way this has been demonstrated is by using the unsupported stress binary from EPEL to spawn a child process for each CPU in the affinity group. But as can see from the following output, one of the CPUs is left idle (CPU 30 here).

# CPUs=29,30,32,34,36,38,39,41
# taskset -c ${CPUs} stress -c $(echo ${CPUs} | awk -F, '{print NF}') &
# LANG=C sar -P ${CPUs}  1 | awk '$1!="" && $2!="CPU" && $3<99 {print $0}'
Linux 3.10.0-327.el7 (hostname.redhat.com)  12/29/15    _x86_64_    (60 CPU)
13:24:28         30      0.00      0.00      0.00      0.00      0.00    100.00
13:24:29         30      0.00      0.00      0.00      0.00      0.00    100.00
13:24:30         30      0.00      0.00      0.00      0.00      0.00    100.00
13:24:31         30      0.00      0.00      0.00      0.00      0.00    100.00

# ps -C stress -o psr,c,pid,ppid,args | sort -n
PSR  C   PID  PPID COMMAND
 29 50  3850  3845 stress -c 8 <--- 1st child on CPU 29
 29 50  3851  3845 stress -c 8 <--- 2nd child on CPU 29
 32  0  3845  3810 stress -c 8 <--- parent PID, no real cpu usage expected
 32 99  3856  3845 stress -c 8
 34 99  3853  3845 stress -c 8
 36 99  3855  3845 stress -c 8
 38 99  3854  3845 stress -c 8
 39 99  3852  3845 stress -c 8
 41 99  3849  3845 stress -c 8

Environment

Red Hat Enterprise Linux (RHEL) 7

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content