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
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 08 Aug 2006 10:11:59 +0200
From:	Martin Schwidefsky <schwidefsky@...ibm.com>
To:	Andrew Morton <akpm@...l.org>
Cc:	Atsushi Nemoto <anemo@....ocn.ne.jp>, schwidefsky@...glemail.com,
	johnstul@...ibm.com, zippel@...ux-m68k.org, clameter@...r.sgi.com,
	linux-kernel@...r.kernel.org, ralf@...ux-mips.org, ak@....de
Subject: Re: [PATCH] simplify update_times (avoid jiffies/jiffies_64
	aliasing problem)

On Mon, 2006-08-07 at 12:58 -0700, Andrew Morton wrote:
> > [PATCH] cleanup do_timer and update_times
> > 
> > Pass ticks to do_timer() and update_times().
> > 
> > This also make a barrier added by
> > 5aee405c662ca644980c184774277fc6d0769a84 needless.
> > 
> > Also adjust x86_64 and s390 timer interrupt handler with this change.
> > 
> 
> This is a rather terse description for a change of this nature..
> 
> Why was this patch created?  What problem is it solving?  etcetera.

The problem is that we are wasting time calling do_timer in a loop. This
is especially true on system that switch off the timer interrupt while
the cpu is idle. You can easily have thousands of lost ticks.

> > ...
> >
> > --- a/kernel/timer.c
> > +++ b/kernel/timer.c
> > @@ -1218,7 +1218,7 @@ static inline void calc_load(unsigned lo
> >  	static int count = LOAD_FREQ;
> >  
> >  	count -= ticks;
> > -	if (count < 0) {
> > +	while (count < 0) {
> >  		count += LOAD_FREQ;
> >  		active_tasks = count_active_tasks();
> >  		CALC_LOAD(avenrun[0], EXP_1, active_tasks);
> 
> OK, we do need the loop here to get the arithmetic in CALC_LOAD to work
> correctly.
> 
> But I don't think the expensive count_active_tasks() needs to be evaluated
> each time around.

This is what I hoped would happen. The loops gets pushed through the
layers to the place where it is actually needed. The next step could be
to get rid of the loop altogether by changing CALC_LOAD.

-- 
blue skies,
  Martin.

Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH

"Reality continues to ruin my life." - Calvin.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ