Constant load of 1 on a recent 12-STABLE

Gordon Bergling gbe at freebsd.org
Tue Jun 23 07:23:52 UTC 2020


Hi Allan,

On Thu, Jun 04, 2020 at 02:37:20PM +0200, Gordon Bergling wrote:
> Hi Allan,
> 
> On Wed, Jun 03, 2020 at 05:33:37PM -0400, Allan Jude wrote:
> > On 2020-06-03 16:29, Gordon Bergling wrote:
> > > Hi Allan,
> > > 
> > > On Wed, Jun 03, 2020 at 03:13:47PM -0400, Allan Jude wrote:
> > >> On 2020-06-03 06:16, Gordon Bergling via freebsd-hackers wrote:
> > >>> since a while I am seeing a constant load of 1.00 on 12-STABLE,
> > >>> but all CPUs are shown as 100% idle in top.
> > >>>
> > >>> Has anyone an idea what could caused this?
> > >>>
> > >>> The load seems to be somewhat real, since the buildtimes on this
> > >>> machine for -CURRENT increased from about 2 hours to 3 hours.
> > >>>
> > >>> This a virtualized system running on Hyper-V, if that matters.
> > >>>
> > >>> Any hints are more then appreciated.
> > >>>
> > >> Try running 'top -SP' and see if that shows a specific CPU being busy,
> > >> or a specific process using CPU time
> > > 
> > > Below is the output of 'top -SP'. The only relevant process / thread that is
> > > relatively constant consumes CPU time seams to be 'zfskern'.
> > > 
> > > -----------------------------------------------------------------------------
> > > last pid: 68549;  load averages:  1.10,  1.19,  1.16 up 0+14:59:45  22:17:24
> > > 67 processes:  2 running, 64 sleeping, 1 waiting
> > > CPU 0:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
> > > CPU 1:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
> > > CPU 2:  0.0% user,  0.0% nice,  0.4% system,  0.0% interrupt, 99.6% idle
> > > CPU 3:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
> > > Mem: 108M Active, 4160M Inact, 33M Laundry, 3196M Wired, 444M Free
> > > ARC: 1858M Total, 855M MFU, 138M MRU, 96K Anon, 24M Header, 840M Other
> > >      461M Compressed, 1039M Uncompressed, 2.25:1 Ratio
> > > Swap: 2048M Total, 2048M Free
> > > 
> > >   PID USERNAME    THR PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
> > >    11 root          4 155 ki31     0B    64K RUN      0  47.3H 386.10% idle
> > >     8 root         65  -8    -     0B  1040K t->zth   0 115:39  12.61% zfskern
> > > -------------------------------------------------------------------------------
> > > 
> > > The only key performance indicator that is relatively high IMHO, for a 
> > > non-busy system, are the context switches, that vmstat has reported.
> > > 
> > > -------------------------------------------------------------------------------
> > > procs  memory       page                    disks     faults         cpu
> > > r b w  avm   fre   flt  re  pi  po    fr   sr da0 da1   in    sy    cs us sy id
> > > 0 0 0 514G  444M  7877   2   7   0  9595  171   0   0    0  4347 43322 17  2 81
> > > 0 0 0 514G  444M     1   0   0   0     0   44   0   0    0   121 40876  0  0 100
> > > 0 0 0 514G  444M     0   0   0   0     0   40   0   0    0   133 42520  0  0 100
> > > 0 0 0 514G  444M     0   0   0   0     0   40   0   0    0   120 43830  0  0 100
> > > 0 0 0 514G  444M     0   0   0   0     0   40   0   0    0   132 42917  0  0 100
> > > --------------------------------------------------------------------------------
> > > 
> > > Any other ideas what could generate that load?
> > 
> > I agree that load average looks out of place here when you look at the %
> > cpu idle, but I wonder if it is caused by a lot of short lived processes
> > or threads.
> > 
> > How quickly is the 'last pid' number going up?
> > 
> > You might also look at `zpool iostat 1` or `gstat -p` to see how busy
> > your disks are
> 
> In the IDLE state the last pid isn't changing within at least 60 seconds.
> During 'buildworld' times it is off course much shorter, but a "-j 4" is
> resulting in a load average from about 5.0, so that the underlying problem
> still persists. 'zpool iostat 1' and 'gstat -p' doesn't show anything 
> suspicious.
> 
> I had a private mail that made me aware of PR173541, where this problem is
> documentated. I'll add my hardware information and performance measurements 
> to it when I find some time.
> 
> I am currently thinking about how to measure the spawned threads/s. Did you
> have an idea how to do it?

What is maybe also related to the problem is the following top output, 
collected by 'top -HS'. The three zfskern threads generate little load, but that
constant. The annoying part of the problem is, that the load of 1 is reported and
that the hostsystem schedules the thread over all 4 physical cores and keeps the
clockrate at the highest frequency.

  PID USERNAME    PRI NICE   SIZE    RES STATE    C   TIME    WCPU COMMAND
   11 root        155 ki31     0B    64K CPU2     2  17:28  97.39% idle{idle: cpu2}
   11 root        155 ki31     0B    64K CPU3     3  17:29  96.78% idle{idle: cpu3}
   11 root        155 ki31     0B    64K CPU1     1  17:29  96.40% idle{idle: cpu1}
   11 root        155 ki31     0B    64K RUN      0  17:25  96.13% idle{idle: cpu0}
    8 root         -8    -     0B  1040K mmp->m   2   0:44   4.32% zfskern{mmp_thread_enter}
    8 root         -8    -     0B  1040K mmp->m   1   0:44   4.28% zfskern{mmp_thread_enter}
    8 root         -8    -     0B  1040K mmp->m   3   0:44   4.25% zfskern{mmp_thread_enter}

Does anyone has some insight where zfskern is spawned? I maybe can bisect then the resulting change
which leads to this behaviour.

--Gordon


More information about the freebsd-hackers mailing list