In <https://marc.info/?l=openbsd-misc&m=164212677602970&w=1> I wrote
> I've just noticed something odd about the scheduling of processes with
> varying 'nice' values (7.0-stable/amd64, GENERIC.MP): it appears that
> processes with 'nice 20' are given more favorable scheduling than those
> with 'nice 10', which is exactly the opposite of what I'd expect [[...]]

In <https://marc.info/?l=openbsd-misc&m=164214220808789&w=1>,
Otto Moerbeek replied
> Are youre processes multithreaded?? Check with top -H.

I apologise for the long delay in followup (unrelated work crises).

No, they're not multithreaded -- they're all instances of a (the same)
single-threaded "number-crunching" code written in C++ (compiled by
clang 11.1.0 from ports).  Here's the first part of the output of
'top -H -s -i -s1' for another set of such processes I have running
right now:

398 threads: 4 running, 390 idle, 4 on processor                       up 21:36
CPU0:  0.0% user, 96.0% nice,  0.0% sys,  0.0% spin,  4.0% intr,  0.0% idle
CPU1:  0.0% user,  100% nice,  0.0% sys,  0.0% spin,  0.0% intr,  0.0% idle
CPU2:  1.0% user, 99.0% nice,  0.0% sys,  0.0% spin,  0.0% intr,  0.0% idle
CPU3:  0.0% user,  100% nice,  0.0% sys,  0.0% spin,  0.0% intr,  0.0% idle
Memory: Real: 2841M/8293M act/tot Free: 7195M Cache: 4179M Swap: 0K/34G

  PID      TID PRI NICE  SIZE   RES STATE     WAIT      TIME    CPU COMMAND
88761   356466  84   10   21M   24M onproc/3  -        16:36 99.02% smp-O3
87643   189282 104   20   39M   42M run/2     -        14:38 98.93% smp-O3
 4015   151196 104   20   40M   43M onproc/0  -         4:47 51.27% smp-O3
92541   618295  84   10   22M   24M run/1     -         4:48 49.85% smp-O3
26221   169495  84   10   21M   24M onproc/1  -         9:55 49.17% smp-O3
 7827   115940 104   20   39M   42M run/0     -        11:45 47.31% smp-O3
61507   342772   2    0   41M   87M sleep/0   poll      9:42  0.05% Xorg
61507   413182   2    0   41M   87M sleep/2   poll      0:29  0.05% Xorg

In this case I have 6 CPU-bound processes, 3 smaller ones started with
'nice -n 10 ...' and 3 larger ones started with 'nice -n 20', all running
on a 4-core machine.  I would have expected the three nice-10 processes
to get more CPU than the three nice-20 proesses, but clearly that's not
what's happening.

Looking at 'iostat 5' I see that I/O is pretty low (around 0.5 MB/s or
less).

I wonder if NaN handling might be causing kernel traps which change
the scheduling priority?

--
-- "Jonathan Thornburg [remove color- to reply]" <jthorn4...@pink-gmail.com>
   on the west coast of Canada, eh?
   "There was of course no way of knowing whether you were being watched
    at any given moment.  How often, or on what system, the Thought Police
    plugged in on any individual wire was guesswork.  It was even conceivable
    that they watched everybody all the time."  -- George Orwell, "1984"

Reply via email to