Distributing the load to all CPUs is job of the OS. Checked one of our Linux boxes. Here is the AE processes run on all 4 CPUs.
Result of ps -aeF
$ ps -aeF | grep -e "PID" -e "ucsrv[cw]p"
UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
root 28633 21906 0 74846 134492 0 06:22 ? 00:00:54 .../ucsrvwp ...
root 28638 21906 0 75216 134004 0 06:22 ? 00:00:39 .../ucsrvwp ...
root 28639 21906 0 75190 134952 0 06:22 ? 00:00:39 .../ucsrvwp ...
root 28640 21906 0 36762 25544 1 06:22 ? 00:00:04 .../ucsrvcp ...
root 28641 21906 0 36835 25948 1 06:22 ? 00:00:04 .../ucsrvcp ...
root 28712 21906 0 71930 123248 3 06:30 ? 00:00:47 .../ucsrvwp ...
root 28713 21906 0 72470 124532 2 06:30 ? 00:00:30 .../ucsrvwp ...
root 28714 21906 0 72451 124360 1 06:30 ? 00:00:32 .../ucsrvwp ...
root 28715 21906 0 72793 127088 2 06:30 ? 00:00:36 .../ucsrvwp ...
root 28716 21906 0 72329 125320 1 06:30 ? 00:00:32 .../ucsrvwp ...
root 28717 21906 0 37012 26404 3 06:30 ? 00:00:07 .../ucsrvcp ...
root 28718 21906 0 36730 25404 3 06:30 ? 00:00:06 .../ucsrvcp ...
I do not much this kind of stuff in Linux. Did you already check if your AE processes run in a cgroup which limits the CPU?$ ps -eo pid,cgroup,psr,args | grep -e "PID" -e "ucsrv[cw]p"
PID CGROUP PSR COMMAND
28633 - 0 .../ucsrvwp ...
28638 - 0 .../ucsrvwp ...
28639 - 0 .../ucsrvwp ...
28640 - 1 .../ucsrvcp ...
28641 - 1 .../ucsrvcp ...
28712 - 3 .../ucsrvwp ...
28713 - 2 .../ucsrvwp ...
28714 - 1 .../ucsrvwp ...
28715 - 2 .../ucsrvwp ...
28716 - 1 .../ucsrvwp ...
28717 - 3 .../ucsrvcp ...
28718 - 3 .../ucsrvcp ...
CGroups are configured in /etc/cgconfig.conf and /etc/cgconfig.d/*.