2

As stated in the title, my OS automatically schedules almost all work on a single CPU core after upgrading from Ubuntu 20.05 LTS to Ubuntu 22.05 LTS.

I've provided a few screen shots from htop to explain the problem.

In the following example I've run make -j 32 and all make processes are sharing one or two cores rather than using different cores.

    1[        0.0%]  17[        0.0%]    33[        0.0%]  49[        0.0%]      
    2[        0.0%]  18[        0.0%]    34[        0.0%]  50[        0.0%]      
    3[        0.0%]  19[        0.0%]    35[        0.0%]  51[        0.0%]      
    4[        0.0%]  20[        0.0%]    36[        0.0%]  52[        0.0%]      
    5[        0.0%]  21[        0.0%]    37[        0.0%]  53[        0.0%]      
    6[        0.0%]  22[        0.0%]    38[        0.0%]  54[        0.0%]      
    7[        0.0%]  23[        0.0%]    39[        0.0%]  55[        0.0%]      
    8[        0.0%]  24[        0.0%]    40[        0.0%]  56[        0.0%]      
    9[||||||100.0%]  25[        0.0%]    41[        0.0%]  57[        0.0%]      
   10[        0.0%]  26[        0.0%]    42[        0.0%]  58[        0.0%]      
   11[        0.0%]  27[        0.0%]    43[        0.0%]  59[        0.0%]      
   12[        0.0%]  28[        0.0%]    44[        0.0%]  60[        0.0%]      
   13[        0.0%]  29[        0.0%]    45[        0.0%]  61[        0.0%]      
   14[        0.0%]  30[        0.0%]    46[        0.0%]  62[        0.0%]      
   15[        0.0%]  31[||||||100.0%]    47[        0.0%]  63[        0.0%]      
   16[        0.0%]  32[        0.0%]    48[        0.0%]  64[        0.0%]      
  Mem[|||||||||||||||    18.0G/62.7G]   Tasks: 367, 2174 thr; 34 running         
  Swp[                      0K/65.0G]   Load average: 20.18 7.25 3.32            
                                        Uptime: 02:36:39                         
    PID USER      PRI  NI  VIRT   RES   SHR S CPU%▽MEM%   TIME+  Command      
  22626 samzapo    20   0 85328 76484  4324 R 118.  0.1  0:00.25 htop           
  21565 samzapo    20   0 2415M 91528 71436 S 19.8  0.1  0:02.10 /snap/firefox/3 
  22013 samzapo    20   0  396M  313M 17380 R 19.8  0.5  0:01.43 /usr/lib/gcc/x8 
  22061 samzapo    20   0  289M  260M 17568 R 19.8  0.4  0:01.36 /usr/lib/gcc/x8 
  22064 samzapo    20   0  392M  304M 17340 R 19.8  0.5  0:01.36 /usr/lib/gcc/x8 
  22127 samzapo    20   0  375M  293M 16640 R 19.8  0.5  0:01.28 /usr/lib/gcc/x8 

It seems that no matter how much work my computer is doing, most of it is going to core 9.

Some work is happening on other cores, but it's as if all processes' affinities are being set to core 9.

I can force the OS to schedule on a different core with, e.g., taskset -c 10-63 make -j 32 and then make will switch to using all cores. But, of course, operating this way is not an option all the time, mainly because other applications all try to use core 9 as well, like my internet browser.

                                                                                
    1[                      0.0%]  17[||||||||||||||||||||100.0%]    33[||||||||||||||||||||100.0%]  49[                      0.0%]
    2[                      0.0%]  18[||||||||||||||||||||100.0%]    34[||||||||||||||||||||100.0%]  50[                      0.0%]
    3[                      0.0%]  19[                      0.0%]    35[||||||||||||||||||||100.0%]  51[||||||||||||||||||||100.0%]
    4[                      0.0%]  20[                      0.0%]    36[||||||||||||||||||||100.0%]  52[||||||||||||||||||||100.0%]
    5[                      0.0%]  21[||||||||||||||||||||100.0%]    37[||||||||||||||||||||100.0%]  53[                      0.0%]
    6[                      0.0%]  22[                      0.0%]    38[||||||||||||||||||||100.0%]  54[||||||||||||||||||||100.0%]
    7[                      0.0%]  23[||||||||||||||||||||100.0%]    39[||||||||||||||||||||100.0%]  55[                      0.0%]
    8[                      0.0%]  24[||||||||||||||||||||100.0%]    40[||||||||||||||||||||100.0%]  56[                      0.0%]
    9[|||                  10.0%]  25[                      0.0%]    41[||||||||||||||||||||100.0%]  57[||||||||||||||||||||100.0%]
   10[                      0.0%]  26[                      0.0%]    42[                      0.0%]  58[||||||||||||||||||||100.0%]
   11[                      0.0%]  27[||||||||||||||||||||100.0%]    43[||||||||||||||||||||100.0%]  59[                      0.0%]
   12[||||||||||||||||||||100.0%]  28[||||||||||||||||||||100.0%]    44[||||||||||||||||||||100.0%]  60[||||||||||||||||||||100.0%]
   13[||||||||||||||||||||100.0%]  29[||||||||||||||||||||100.0%]    45[                      0.0%]  61[                      0.0%]
   14[||||||||||||||||||||100.0%]  30[||||||||||||||||||||100.0%]    46[                      0.0%]  62[                      0.0%]
   15[||||||||||||||||||||100.0%]  31[||||||||||||||||||||100.0%]    47[                      0.0%]  63[                      0.0%]
   16[||||||||             27.3%]  32[||||||||||||||||||||100.0%]    48[|||||||||||||||||||  72.7%]  64[                      0.0%]
  Mem[|||||||||||||||||||||||||||||||||||||||||||||||48.4G/62.7G]   Tasks: 370, 2178 thr; 33 running
  Swp[|                                              31.2M/65.0G]   Load average: 21.02 9.82 5.77 
                                                                    Uptime: 02:43:57
    PID USER      PRI  NI  VIRT   RES   SHR S CPU%▽MEM%   TIME+  Command      
  24497 samzapo    20   0 2280M 2222M 22428 R 114.  3.5  0:40.23 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24509 samzapo    20   0 2088M 2016M 19308 R 114.  3.1  0:39.87 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24518 samzapo    20   0 2062M 1992M 20404 R 114.  3.1  0:40.21 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24543 samzapo    20   0 2233M 2173M 22864 R 114.  3.4  0:40.22 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24546 samzapo    20   0 2508M 2400M 20240 R 114.  3.7  0:40.20 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24549 samzapo    20   0 2658M 2591M 20324 R 114.  4.0  0:40.22 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24551 samzapo    20   0 2537M 2469M 19108 R 114.  3.8  0:40.22 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25145 samzapo    20   0 1609M 1536M 19252 R 114.  2.4  0:24.81 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25445 samzapo    20   0 1472M 1407M 18832 R 114.  2.2  0:18.84 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25587 samzapo    20   0  992M  928M 18708 R 114.  1.4  0:15.06 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25591 samzapo    20   0 1083M 1017M 18708 R 114.  1.6  0:15.01 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26004 samzapo    20   0  770M  690M 18676 R 114.  1.1  0:07.29 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26012 samzapo    20   0  619M  543M 18664 R 114.  0.8  0:06.14 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26024 samzapo    20   0  587M  504M 18544 R 114.  0.8  0:04.75 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24505 samzapo    20   0 2219M 2156M 22340 R 105.  3.4  0:40.21 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24526 samzapo    20   0 2426M 2358M 23080 R 105.  3.7  0:40.18 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24547 samzapo    20   0 2308M 2248M 22744 R 105.  3.5  0:40.21 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24899 samzapo    20   0 1865M 1803M 18992 R 105.  2.8  0:30.36 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  24903 samzapo    20   0 1620M 1547M 22468 R 105.  2.4  0:29.81 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25360 samzapo    20   0 1511M 1445M 18820 R 105.  2.3  0:21.06 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25578 samzapo    20   0 1248M 1182M 18728 R 105.  1.8  0:17.50 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25733 samzapo    20   0  919M  852M 18768 R 105.  1.3  0:12.58 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25798 samzapo    20   0  963M  884M 19072 R 105.  1.4  0:10.04 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  25996 samzapo    20   0  557M  475M 18704 R 105.  0.7  0:07.51 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26000 samzapo    20   0  681M  634M 18532 R 105.  1.0  0:07.35 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26008 samzapo    20   0  611M  564M 18532 R 105.  0.9  0:06.73 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26016 samzapo    20   0  582M  508M 18656 R 105.  0.8  0:06.08 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26089 samzapo    20   0  409M  363M 18328 R 105.  0.6  0:03.92 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26097 samzapo    20   0  436M  344M 18356 R 105.  0.5  0:03.17 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26127 samzapo    20   0  331M  305M 17996 R 105.  0.5  0:03.00 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26208 samzapo    20   0  308M  208M  9044 R 105.  0.3  0:01.51 /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -I /home/samzapo/Develop
  26212 samzapo    20   0  129M  120M  4320 R 105.  0.2  0:00.56 htop

What is wrong with my scheduler and how can I fix it?

Some additional information:

$ uname -a
Linux <hostname> 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy

my /etc/default/grub isolates a few CPUs in the above examples: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash isolcpus=0,1,2,3,4,5,6,7,8"

samzapo
  • 21

0 Answers0