mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@timesys.com>
To: mgross@linux.intel.com
Cc: Con Kolivas <kernel@kolivas.org>,
	Michal Piotrowski <michal.k.k.piotrowski@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@osdl.org>, john stultz <johnstul@us.ibm.com>,
	Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCHSET] Announce: High-res timers, tickless/dyntick and dynamic HZ
Date: Tue, 20 Jun 2006 00:19:32 +0200	[thread overview]
Message-ID: <1150755573.6780.38.camel@localhost.localdomain> (raw)
In-Reply-To: <20060619215822.GA4178@linux.intel.com>

Mark,

On Mon, 2006-06-19 at 14:58 -0700, mark gross wrote:
> I'm just giving this a test spin now on my desktop boot.  looking at uptime and cat /proc/interrupts 
> ~/work> uptime;cat /proc/interrupts 
>   2:51pm  up   0:28,  5 users,  load average: 0.00, 0.02, 0.08
> 	CPU0       
> 	0:      80007          XT-PIC  timer
> 	1:       1776          XT-PIC  i8042
> 	2:          0          XT-PIC  cascade
> 	8:          2          XT-PIC  rtc
> 	9:          0          XT-PIC  acpi
> 	11:       2156          XT-PIC  eth0
> 	12:       2879          XT-PIC  i8042
> 	14:      20402          XT-PIC  ide0
> 	15:         11          XT-PIC  ide1
> 	NMI:          0 
> 	LOC:          0 
> 	ERR:          0
> 	MIS:          0
> 
> or about 47.6 timer's a second.
> 
> This system is mostly idle, is this about right or should I expect even fewer timer ticks?

We did not track down all culprits of useless timer schedules, but there
are definitely a couple of user space programs which we identified, e.g.
redhat network, debian and ubuntu updates applets and similar
candidates.

> Is there a way to see timer stats?

Enable timer stats in the kernel config

$ echo start >/proc/timer_input 
$ do nothing for a while
$ cat /proc/timer_info

You get something like:

Function counter - Timer Top v0.9.9
collection period: 19.7 seconds
   1     0 swapper          verify_tsc_freq (verify_tsc_freq)
   1     6 events/0         do_cache_clean (delayed_work_timer_fn)
   1     0 swapper          i8042_interrupt (i8042_timer_func)
   2     0 swapper          neigh_periodic_timer (neigh_periodic_timer)
   2   148 pdflush          wb_kupdate (wb_timer_fn)
   1     1 swapper          init_tsc_clocksource (verify_tsc_freq)
   4     6 events/0         cache_reap (delayed_work_timer_fn)
   1  2508 sh               get_transaction (commit_timeout)
   1     0 swapper          page_writeback_init (wb_timer_fn)
   4     1 init             schedule_timeout (process_timeout)
   9     0 swapper          e100_watchdog (e100_watchdog)
   9     0 swapper          dev_watchdog (dev_watchdog)
   6     1 swapper          schedule_delayed_work_on (delayed_work_timer_fn)
   1     1 swapper          neigh_table_init_no_netlink (neigh_periodic_timer)
   1     1 swapper          i8042_probe (i8042_timer_func)
   3  3317 bash             schedule_timeout (process_timeout)
   1  2973 ifconfig         e100_up (e100_watchdog)
   1     0 swapper          __netdev_watchdog_up (dev_watchdog)
   4   893 kirqd            schedule_timeout (process_timeout)
   5     0 swapper          tty_flip_buffer_push (delayed_work_timer_fn)

repeat over time to find the tick wasters.

Also:

$ cat /proc/stat | grep nohz 

gives you some stats about the idle state

nohz cpu0 I:37390 S:30025 T:2108551 A:70 E: 26891
nohz cpu1 I:15480 S:12614 T:2109231 A:49 E: 14508
nohz total I:52870 S:42639 T:4217782 A:98 E:41399

where:

I: number of idle calls
S: number of idle calls, which can sleep for at least one tick
T: total time (in tick units) slept in idle calls
A: average sleep time per "can sleep" idle call (in tick units)
E: number of timer interrupt events


You might also try to slow down the timer wheel activity by batching the
timeouts into multiples of the scheduler tick (HZ) by doing

$ echo $FACTOR >/proc/sys/kernel/timeout_granularity

e.g. 
FACTOR=10 batches the timer wheel timers to 10ms on a HZ=1000 kernel
FACTOR=20 batches the timer wheel timers to 40ms on a HZ=250 kernel
.....

> FWIW Its nice to see this stuff start getting real.

Thanks,

	tglx



  reply	other threads:[~2006-06-19 22:18 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-18 15:10 Thomas Gleixner
2006-06-18 16:35 ` Michal Piotrowski
2006-06-18 18:28   ` Ingo Molnar
2006-06-19 16:35     ` Michal Piotrowski
2006-06-19 19:51       ` Thomas Gleixner
2006-06-25 13:06         ` Steven Rostedt
2006-06-25 14:26           ` Thomas Gleixner
2006-06-18 19:50   ` Thomas Gleixner
2006-06-19 12:09     ` Con Kolivas
2006-06-19 12:31       ` Thomas Gleixner
2006-06-19 13:05         ` Con Kolivas
2006-06-19 13:10           ` Thomas Gleixner
2006-06-19 21:58         ` mark gross
2006-06-19 22:19           ` Thomas Gleixner [this message]
2006-06-21 12:54             ` Felix Oxley
2006-06-21 13:07               ` Thomas Gleixner
2006-06-18 23:47 ` Roman Zippel
2006-06-19 12:50   ` Ingo Molnar
2006-06-19 13:47     ` Roman Zippel
2006-06-19  5:21 ` Con Kolivas
2006-06-19  5:24   ` Con Kolivas
2006-06-19 12:26   ` Ingo Molnar
2006-06-19 14:03     ` Con Kolivas
2006-06-19 20:06       ` Thomas Gleixner
2006-06-19 20:57         ` ACPI C-States algorithm updates for dyn-tick Dominik Brodowski
2006-06-19 21:28           ` [1/4] ACPI C-States: accounting of sleep states Dominik Brodowski
2006-06-19 21:29             ` [2/4] ACPI C-States: bm_activity improvements Dominik Brodowski
2006-06-19 21:31               ` [3/4] ACPI C-States: only demote on current bus mastering activity Dominik Brodowski
2006-06-19 21:33                 ` [4/4 -- only for discussion] ACPI C-States: dyn-ticks-improvements (for -ck implementation) Dominik Brodowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1150755573.6780.38.camel@localhost.localdomain \
    --to=tglx@timesys.com \
    --cc=akpm@osdl.org \
    --cc=johnstul@us.ibm.com \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgross@linux.intel.com \
    --cc=michal.k.k.piotrowski@gmail.com \
    --cc=mingo@elte.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®