lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 24 May 2016 14:49:39 -0700 (PDT) From: David Miller <davem@...emloft.net> To: eric.dumazet@...il.com Cc: alexander.duyck@...il.com, netdev@...r.kernel.org, aduyck@...antis.com, john.r.fastabend@...el.com, jhs@...atatu.com, brouer@...hat.com Subject: Re: [PATCH net] net_sched: avoid too many hrtimer_start() calls From: Eric Dumazet <eric.dumazet@...il.com> Date: Mon, 23 May 2016 14:24:56 -0700 > From: Eric Dumazet <edumazet@...gle.com> > > I found a serious performance bug in packet schedulers using hrtimers. > > sch_htb and sch_fq are definitely impacted by this problem. > > We constantly rearm high resolution timers if some packets are throttled > in one (or more) class, and other packets are flying through qdisc on > another (non throttled) class. > > hrtimer_start() does not have the mod_timer() trick of doing nothing if > expires value does not change : > > if (timer_pending(timer) && > timer->expires == expires) > return 1; > > This issue is particularly visible when multiple cpus can queue/dequeue > packets on the same qdisc, as hrtimer code has to lock a remote base. > > I used following fix : > > 1) Change htb to use qdisc_watchdog_schedule_ns() instead of open-coding > it. > > 2) Cache watchdog prior expiration. hrtimer might provide this, but I > prefer to not rely on some hrtimer internal. > > Signed-off-by: Eric Dumazet <edumazet@...gle.com> This looks fine, applied, thanks Eric.
Powered by blists - more mailing lists