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-next>] [day] [month] [year] [list]
Date:	Sun, 29 Aug 2010 23:05:03 +0800
From:	Yong Zhang <yong.zhang0@...il.com>
To:	linux-kernel@...r.kernel.org
Cc:	tglx@...utronix.de, akpm@...ux-foundation.org, mingo@...e.hu,
	arjan@...ux.intel.com, a.p.zijlstra@...llo.nl, tj@...nel.org,
	oleg@...hat.com
Subject: [RFC PATCHSET 0/6] timer/hrtimer/timer_stats: Improvement on timer_stats

Hi,

This patchset focus on two problem:

1)timer_stats_timer_*_start_info() should belong to timer core only.
  It should not be seen by outsider, such as workqueue. And should
  not resident in timer.h.
  Patch-0001~0003 first remove the only explicit out call, then move
  timer_stats_timer_*_start_info() from timer.h to timer.c.

2)call site recorded by timer_stats sometimes show the timer core functions
  instead of the real call site.
  Now /proc/timer_stats is like below on my machine:
---now---
Timer Stats Version: v0.2
Sample period: 7.967 s
 10075,     0 kworker/0:0      hrtimer_start_range_ns (tick_sched_timer)
  642,     0 swapper          hrtimer_start (tick_sched_timer)
   16,  1312 pulseaudio       hrtimer_start_range_ns (hrtimer_wakeup)
  153,     0 swapper          hrtimer_start_range_ns (tick_sched_timer)
    8,  1117 sshd             sk_reset_timer (tcp_write_timer)
   15,  1373 multiload-apple  hrtimer_start_range_ns (hrtimer_wakeup)
    8,  1361 gvfs-afc-volume  hrtimer_start_range_ns (hrtimer_wakeup)
    4,  1288 gnome-settings-  hrtimer_start_range_ns (hrtimer_wakeup)
    1,  1403 indicator-me-se  hrtimer_start_range_ns (hrtimer_wakeup)
    1,  1306 nautilus         hrtimer_start_range_ns (hrtimer_wakeup)
    1,   487 gdm-binary       hrtimer_start_range_ns (hrtimer_wakeup)
    3,  1304 gnome-panel      hrtimer_start_range_ns (hrtimer_wakeup)
    4,  1347 udisks-daemon    hrtimer_start_range_ns (hrtimer_wakeup)
    9,     0 kworker/0:0      hrtimer_start (tick_sched_timer)
    8,     1 swapper          __enqueue_rt_entity (sched_rt_period_timer)
   14,     0 swapper          clocksource_watchdog (clocksource_watchdog)
    2,  1227 gnome-session    hrtimer_start_range_ns (hrtimer_wakeup)
    4,  1013 hald-addon-stor  hrtimer_start_range_ns (hrtimer_wakeup)
    1,   951 hald             hrtimer_start_range_ns (hrtimer_wakeup)
    2,     0 kworker/0:0      cfq_completed_request (cfq_idle_slice_timer)
    1,   628 Xorg             queue_delayed_work (delayed_work_timer_fn)
    1,  1309 compiz           hrtimer_start_range_ns (hrtimer_wakeup)
   29,  1117 sshd             queue_delayed_work (delayed_work_timer_fn)
   28,  1159 bash             queue_delayed_work (delayed_work_timer_fn)
    9,     0 swapper          sk_reset_timer (tcp_delack_timer)
    6,   502 avahi-daemon     hrtimer_start_range_ns (hrtimer_wakeup)
    1,  1303 gnome-power-man  hrtimer_start_range_ns (hrtimer_wakeup)
    1,   542 console-kit-dae  hrtimer_start_range_ns (hrtimer_wakeup)
   6D,    11 kworker/0:1      queue_delayed_work (delayed_work_timer_fn)
   5D,    46 kworker/1:1      queue_delayed_work (delayed_work_timer_fn)
    2,     7 watchdog/0       hrtimer_start (watchdog_timer_fn)
    2,    12 watchdog/1       hrtimer_start (watchdog_timer_fn)
    1,   919 rtkit-daemon     hrtimer_start_range_ns (hrtimer_wakeup)
    1,  1307 pulseaudio       hrtimer_start_range_ns (hrtimer_wakeup)
    1,   651 irqbalance       hrtimer_start_range_ns (hrtimer_wakeup)
    1,     0 kworker/0:0      dev_watchdog (dev_watchdog)
    1,   914 pulseaudio       hrtimer_start_range_ns (hrtimer_wakeup)
    1,  1265 ssh-agent        hrtimer_start_range_ns (hrtimer_wakeup)
493 total events, 61.880 events/sec
---------------------------------------------------------------------------------------
Then after patches applied:
---patched--
Timer Stats Version: v0.2
Sample period: 8.683 s
         82,          0 kworker/0:0      tick_nohz_restart_sched_tick (tick_sched_timer)
        130,          0 swapper          tick_nohz_restart_sched_tick (tick_sched_timer)
          5,       1172 udisks-daemon    schedule_hrtimeout_range_clock (hrtimer_wakeup)
          5,       1009 hald-addon-stor  schedule_hrtimeout_range_clock (hrtimer_wakeup)
          1,        959 hald             schedule_hrtimeout_range_clock (hrtimer_wakeup)
          3,          7 watchdog/0       watchdog (watchdog_timer_fn)
          7,       3530 sshd             sk_reset_timer (tcp_write_timer)
          9,       1189 gvfs-afc-volume  do_nanosleep (hrtimer_wakeup)
         17,       1204 multiload-apple  schedule_hrtimeout_range_clock (hrtimer_wakeup)
          3,         12 watchdog/1       watchdog (watchdog_timer_fn)
          4,          1 swapper          __enqueue_rt_entity (sched_rt_period_timer)
         14,       1244 gnome-terminal   schedule_hrtimeout_range_clock (hrtimer_wakeup)
         13,        629 Xorg             queue_delayed_work_on (delayed_work_timer_fn)
         16,          0 kworker/0:0      clocksource_watchdog (clocksource_watchdog)
          2,       1368 update-notifier  schedule_hrtimeout_range_clock (hrtimer_wakeup)
         7D,         11 kworker/0:1      queue_delayed_work_on (delayed_work_timer_fn)
          2,       1096 gnome-settings-  schedule_hrtimeout_range_clock (hrtimer_wakeup)
         8D,         46 kworker/1:1      queue_delayed_work_on (delayed_work_timer_fn)
          2,        915 rtkit-daemon     schedule_hrtimeout_range_clock (hrtimer_wakeup)
          1,        654 irqbalance       do_nanosleep (hrtimer_wakeup)
          1,       1073 ssh-agent        schedule_hrtimeout_range_clock (hrtimer_wakeup)
          2,       1140 compiz           schedule_hrtimeout_range_clock (hrtimer_wakeup)
          2,       1136 gnome-panel      schedule_hrtimeout_range_clock (hrtimer_wakeup)
          4,         11 kworker/0:1      schedule_timeout_uninterruptible (process_timeout)
         25,       3530 sshd             queue_delayed_work_on (delayed_work_timer_fn)
         24,       3573 bash             queue_delayed_work_on (delayed_work_timer_fn)
          7,          0 swapper          sk_reset_timer (tcp_delack_timer)
          1,       1080 gconfd-2         schedule_hrtimeout_range_clock (hrtimer_wakeup)
          1,       1133 gnome-power-man  schedule_hrtimeout_range_clock (hrtimer_wakeup)
          1,        533 console-kit-dae  schedule_hrtimeout_range_clock (hrtimer_wakeup)
399 total events, 45.951 events/sec
---------------------------------------------------------------------------------------
You can notice tick_nohz_restart_sched_tick(), watchdog(), do_nanosleep()
is showed as the start_site.

And there is also something reflected in timer_list(AKA, more readable
start_site).

Any comments is appreciated.

Thanks,
Yong

Yong Zhang (6):
      timer: expliciyly call timer_stats_timer_set_start_info() in add_timer()
      workqueue: remove redundant timer_stats_timer_set_start_info()
      timer: move timer_stats_timer_*_start_info() to kernel/timer.c
      hrtimer: change call site of timer_stats_hrtimer_clear_start_info()
      hrtimer: record more real start_site for timer_stats
      timer_stats: make output more readable

 include/linux/timer.h     |   23 -----------------------
 kernel/hrtimer.c          |   10 ++++++----
 kernel/time/timer_stats.c |    4 ++--
 kernel/timer.c            |   21 +++++++++++++++++++--
 kernel/workqueue.c        |    2 --
 5 files changed, 27 insertions(+), 33 deletions(-)
--
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