Linux timer_stats - 定时器使用信息

发布于 2023-05-08 20:56:04 字数 2324 浏览 35 评论 0

timer_stats 是个调试工具,它使得内核和用户态开发者可以查看 Linux 系统中的定时器使用信息。 如果使能了该配置但是并没有使用,运行开销接近于 0 ,数据结构开销也相对小。 即使在采集的时候使能了数据采集,所有用到的锁都是 per-CPU(译注:避免了 spinlock),并且查找做了哈希处理优化的。

timer_stats 应被内核和用户态空间开发者使用,以便来确认他们的代码没有过度使用定时器。 这能帮助避免非必要的唤醒,进而优化功耗。

可以通过 “Kernel hacking” 配置部分的 CONFIG_TIMER_STATS 来使能 timer_stats

timer_stats 收集 Linux 系统中某个采样周期内的定时事件信息:

  • 初始化定时器的任务(进程)的进程描述符
  • 初始化定时器的进程名
  • 用于初始化定时器的函数
  • 与定时器相关的回调函数
  • 事件数(回调数)

timer_stats/proc 下面添加一个条目: /proc/timer_stats

该条目用来控制统计功能并且读出采样信息。

timer_stats 功能在启动时是未被激活的。

为激活一个采样周期:

# echo 1 >/proc/timer_stats

停止一个采样周期:

# echo 0 >/proc/timer_stats

统计信息可以这样被取出:

# cat /proc/timer_stats

当采样被使能时,每一次从 /proc/timer_stats 的输出会看到新更新的统计数据 一旦采样被禁用时,采样信息会保持直到新的采样周期启动。 这就允许多次读出。

/proc/timer_stats 的样本输出样例:

Timerstats sample period: 3.888770 s
  12,     0 swapper          hrtimer_stop_sched_tick (hrtimer_sched_tick)
  15,     1 swapper          hcd_submit_urb (rh_timer_func)
   4,   959 kedac            schedule_timeout (process_timeout)
   1,     0 swapper          page_writeback_init (wb_timer_fn)
  28,     0 swapper          hrtimer_stop_sched_tick (hrtimer_sched_tick)
  22,  2948 IRQ 4            tty_flip_buffer_push (delayed_work_timer_fn)
   3,  3100 bash             schedule_timeout (process_timeout)
   1,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
   1,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)
   1,     1 swapper          neigh_table_init_no_netlink (neigh_periodic_timer)
   1,  2292 ip               __netdev_watchdog_up (dev_watchdog)
   1,    23 events/1         do_cache_clean (delayed_work_timer_fn)
90 total events, 30.0 events/sec

第一列是事件数, 第二列是进程描述符, 第三列是进程的名字。 第四列用户初始化定时器的函数,括号内表示在定时器到期时执行的回调函数。

Thomas, Ingo 

/proc/timer_stats 中增加标志位 D 来表示 “可延期的定时器“。这样一个定时器例子如下:

  10D,     1 swapper          queue_delayed_work_on (delayed_work_timer_fn)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

eins

文章 0 评论 0

世界等同你

文章 0 评论 0

毒初莱肆砂笔

文章 0 评论 0

初雪

文章 0 评论 0

miao

文章 0 评论 0

qq_zQQHIW

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文