您尚未登录。

楼主 #1 2021-04-21 09:53:25

无根浮萍
会员
注册时间: 2021-01-14
已发帖子: 62
积分: 31

全志tina linux 好神奇, 100秒定时器才中断25次

/# date;cat /proc/interrupts; sleep 100;date;cat /proc/interrupts
 ;
Thu Jan  1 00:02:14 GMT 1970
           CPU0
 13:        820  sun3i_irq  sunxi_timer
 38:          0  sun3i_irq  PIN_GRP
 39:          0  sun3i_irq  PIN_GRP
 40:          0  sun3i_irq  PIN_GRP
101:       6389  sun3i_irq  1c02000.dma-controller
103:          0  sun3i_irq  cedar_dev
104:        659  sun3i_irq  uart1
105:         16  sun3i_irq  twi0
106:      27748  sun3i_irq  spi0
107:         40  sun3i_irq  sunxi-mmc
108:       5793  sun3i_irq  lcd
109:          0  sun3i_irq  dispaly
113:          0  sun3i_irq  csi_irq
114:         43  sun3i_irq  sunxi_usb_udc
115:          0  sun3i_irq  sunxikbd
Err:          0
Thu Jan  1 00:03:54 GMT 1970
           CPU0
 13:        845  sun3i_irq  sunxi_timer
 38:          0  sun3i_irq  PIN_GRP
 39:          0  sun3i_irq  PIN_GRP
 40:          0  sun3i_irq  PIN_GRP
101:       6389  sun3i_irq  1c02000.dma-controller
103:          0  sun3i_irq  cedar_dev
104:        700  sun3i_irq  uart1
105:         16  sun3i_irq  twi0
106:      27748  sun3i_irq  spi0
107:         40  sun3i_irq  sunxi-mmc
108:      10149  sun3i_irq  lcd
109:          0  sun3i_irq  dispaly
113:          0  sun3i_irq  csi_irq
114:         43  sun3i_irq  sunxi_usb_udc
115:          0  sun3i_irq  sunxikbd
Err:          0

13:        820  sun3i_irq  sunxi_timer
13:        845  sun3i_irq  sunxi_timer

845 - 820 = 25

离线

楼主 #2 2021-04-21 10:15:19

无根浮萍
会员
注册时间: 2021-01-14
已发帖子: 62
积分: 31

Re: 全志tina linux 好神奇, 100秒定时器才中断25次

讲道理
CONFIG_HZ=100

一秒应该产生 100 次中断才对, 100秒应该是产生 1万次中断, 不知道为何是这个结果?

离线

#3 2021-04-21 10:22:10

tpu
会员
注册时间: 2020-06-15
已发帖子: 34
积分: 36.5

Re: 全志tina linux 好神奇, 100秒定时器才中断25次

tickless模式,有需要才中断

离线

楼主 #4 2021-04-21 10:26:43

无根浮萍
会员
注册时间: 2021-01-14
已发帖子: 62
积分: 31

Re: 全志tina linux 好神奇, 100秒定时器才中断25次

#date;cat /proc/interrupts; sleep 100;date;cat /proc/interrupts
Thu Jan  1 00:00:51 UTC 1970
           CPU0
 16:       1424  sun4i_irq  13 Edge      timer@1c20c00
 17:          0  sun4i_irq  18 Edge      1c02000.dma-controller
 18:        312  sun4i_irq  29 Edge      1c0c000.lcd-controller
 19:          0  sun4i_irq  34 Edge      cedar_dev
 20:       1130  sun4i_irq  23 Edge      sunxi-mmc
 21:       1255  sun4i_irq  24 Edge      sunxi-mmc
 22:          1  sun4i_irq  26 Edge      musb-hdrc.1.auto
 28:        502  sun4i_irq   2 Edge      ttyS0
 29:         14  sun4i_irq   7 Edge      mv64xxx_i2c
 30:          0  sun4i_irq  32 Edge      1cb0000.csi
Err:          0

Thu Jan  1 00:02:31 UTC 1970
           CPU0
 16:       2916  sun4i_irq  13 Edge      timer@1c20c00
 17:          0  sun4i_irq  18 Edge      1c02000.dma-controller
 18:        312  sun4i_irq  29 Edge      1c0c000.lcd-controller
 19:          0  sun4i_irq  34 Edge      cedar_dev
 20:       3352  sun4i_irq  23 Edge      sunxi-mmc
 21:       1888  sun4i_irq  24 Edge      sunxi-mmc
 22:          1  sun4i_irq  26 Edge      musb-hdrc.1.auto
 28:        542  sun4i_irq   2 Edge      ttyS0
 29:         14  sun4i_irq   7 Edge      mv64xxx_i2c
 30:          0  sun4i_irq  32 Edge      1cb0000.csi
Err:          0

主线Linux产生了500个中断, 算下离 1万次也很远。

离线

楼主 #5 2021-04-21 10:26:57

无根浮萍
会员
注册时间: 2021-01-14
已发帖子: 62
积分: 31

Re: 全志tina linux 好神奇, 100秒定时器才中断25次

tpu 说:

tickless模式,有需要才中断

感谢大佬提醒, 我去狗一下

离线

楼主 #6 2021-04-21 10:29:54

无根浮萍
会员
注册时间: 2021-01-14
已发帖子: 62
积分: 31

Re: 全志tina linux 好神奇, 100秒定时器才中断25次

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y

http://abcdxyzk.github.io/blog/2017/07/23/kernel-clock-8/

在前面章节的讨论中,我们一直基于一个假设:Linux中的时钟事件都是由一个周期时钟提供,不管系统中的clock_event_device是工作于周期触发模式,还是工作于单触发模式,也不管定时器系统是工作于低分辨率模式,还是高精度模式,内核都竭尽所能,用不同的方式提供周期时钟,以产生定期的tick事件,tick事件或者用于全局的时间管理(jiffies和时间的更新),或者用于本地cpu的进程统计、时间轮定时器框架等等。周期性时钟虽然简单有效,但是也带来了一些缺点,尤其在系统的功耗上,因为就算系统目前无事可做,也必须定期地发出时钟事件,激活系统。为此,内核的开发者提出了动态时钟这一概念,我们可以通过内核的配置项CONFIG_NO_HZ来激活特性。有时候这一特性也被叫做tickless,不过还是把它称呼为动态时钟比较合适,因为并不是真的没有tick事件了,只是在系统无事所做的idle阶段,我们可以通过停止周期时钟来达到降低系统功耗的目的,只要有进程处于活动状态,时钟事件依然会被周期性地发出

原来如此!

@tpu 感谢大佬

离线

楼主 #7 2021-04-21 10:33:20

无根浮萍
会员
注册时间: 2021-01-14
已发帖子: 62
积分: 31

Re: 全志tina linux 好神奇, 100秒定时器才中断25次

# date;cat /proc/interrupts; cat /dev/urandom > /dev/null;
Thu Jan  1 00:10:56 UTC 1970
           CPU0
 16:      10475  sun4i_irq  13 Edge      timer@1c20c00
 17:          0  sun4i_irq  18 Edge      1c02000.dma-controller
 18:        312  sun4i_irq  29 Edge      1c0c000.lcd-controller
 19:          0  sun4i_irq  34 Edge      cedar_dev
 20:      14615  sun4i_irq  23 Edge      sunxi-mmc
 21:       3516  sun4i_irq  24 Edge      sunxi-mmc
 22:          1  sun4i_irq  26 Edge      musb-hdrc.1.auto
 28:       1184  sun4i_irq   2 Edge      ttyS0
 29:         14  sun4i_irq   7 Edge      mv64xxx_i2c
 30:          0  sun4i_irq  32 Edge      1cb0000.csi
Err:          0
^C
# date;cat /proc/interrupts;
Thu Jan  1 00:11:23 UTC 1970
           CPU0
 16:      13154  sun4i_irq  13 Edge      timer@1c20c00
 17:          0  sun4i_irq  18 Edge      1c02000.dma-controller
 18:        312  sun4i_irq  29 Edge      1c0c000.lcd-controller
 19:          0  sun4i_irq  34 Edge      cedar_dev
 20:      15188  sun4i_irq  23 Edge      sunxi-mmc
 21:       3598  sun4i_irq  24 Edge      sunxi-mmc
 22:          1  sun4i_irq  26 Edge      musb-hdrc.1.auto
 28:       1340  sun4i_irq   2 Edge      ttyS0
 29:         14  sun4i_irq   7 Edge      mv64xxx_i2c
 30:          0  sun4i_irq  32 Edge      1cb0000.csi
Err:          0

13154 - 10475  = 2679 ===  27(秒) * 100

找点事情让cpu做, 这下中断数量能对上了。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn