Re: [PATCH] softirq: let ksoftirqd do its job

From: Peter Zijlstra
Date: Thu Sep 01 2016 - 08:48:48 EST


On Thu, Sep 01, 2016 at 02:38:59PM +0200, Jesper Dangaard Brouer wrote:
> On Thu, 1 Sep 2016 14:29:25 +0200
> Jesper Dangaard Brouer <brouer@xxxxxxxxxx> wrote:
>
> > On Thu, 1 Sep 2016 13:53:56 +0200
> > Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >
> > > On Thu, Sep 01, 2016 at 01:02:31PM +0200, Jesper Dangaard Brouer wrote:
> > > > PID S %CPU TIME+ COMMAND
> > > > 3 R 50.0 29:02.23 ksoftirqd/0
> > > > 10881 R 10.7 1:01.61 udp_sink
> > > > 10837 R 10.0 1:05.20 udp_sink
> > > > 10852 S 10.0 1:01.78 udp_sink
> > > > 10862 R 10.0 1:05.19 udp_sink
> > > > 10844 S 9.7 1:01.91 udp_sink
> > > >
> > > > This is strange, why is ksoftirqd/0 getting 50% of the CPU time???
> > >
> > > Do you run your udp_sink thingy in a cpu-cgroup?
> >
> > That was also Paolo's feedback (IRC). I'm not aware of it, but it
> > might be some distribution (Fedora 22) default thing.
>
> Correction, on the server-under-test, I'm actually running RHEL7.2
>
>
> > How do I verify/check if I have enabled a cpu-cgroup?
>
> Hannes says I can look in "/proc/self/cgroup"
>
> $ cat /proc/self/cgroup
> 7:net_cls:/
> 6:blkio:/
> 5:devices:/
> 4:perf_event:/
> 3:cpu,cpuacct:/
> 2:cpuset:/
> 1:name=systemd:/user.slice/user-1000.slice/session-c1.scope
>
> And that "/" indicate I've not enabled cgroups, right?

Mostly so. I think RHEL/Fedora has SCHED_AUTOGROUP enabled, and you can
find that through:

cat /proc/self/autogroup

And disable with the noautogroup boot param, or:

echo 0 > /proc/sys/kernel/sched_autogroup_enabled

although this latter will leave the current state intact while avoiding
creation of any further autogroups iirc.