1、当计数溢出是,Local APIC会发一个PMI,然后在本地中这个PMI会被设置成NMI中断,所以在perf_event_intel.c文件中,中断处理函数的调用接口是intel_pmu_handle_irq,这个中断处理函数,应该是每个中断都会进这个函数的吧?(不确定,个人猜测)然后在watchdog 中注册了一个perf event 事件,watchdog_nmi_enable()函数部分代码如下:
wd_attr = &wd_hw_attr;
wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);这个值是10s /* Try to register using hardware perf events */
event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL);
问题一、为什么设置的event周期是10s(3.18.27内核)2.6.32中时60s,但是在实际运行当中,并不是按照这个时间来调用的呢?2.6的调用时间很长,有时候都能达到9分钟才会调用watchdog_overflow_callback这个函数,理论上应该是intel_pmu_handle_irq这个中断处理函数执行后,就跟着执行watchdog_overflow_callback它才对啊?就是NMI事件产生了,就进入到event注册的这个watchdog_overflow_callback函数中????
问题二、 2.6内核是只有nmi中断事件确实产生了,才算是watchdog_nmi事件发生了,才调用watchdog_overflow_callback它吗?????
如果是这样,那么现在3.18.27中,为什么每次中断处理函数intel_pmu_handle_irq执行完后,跟着就调用了watchdog_overflow_callback????难道不是watchdog nmi事件发生了,它也调用watchdog nmi事件的注册函数吗?
问题三、综上,那wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);这个周期设置的有什么用,反正都没按照它来?????、 以上三个问题,求大神们指点
wd_attr = &wd_hw_attr;
wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);这个值是10s /* Try to register using hardware perf events */
event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL);
问题一、为什么设置的event周期是10s(3.18.27内核)2.6.32中时60s,但是在实际运行当中,并不是按照这个时间来调用的呢?2.6的调用时间很长,有时候都能达到9分钟才会调用watchdog_overflow_callback这个函数,理论上应该是intel_pmu_handle_irq这个中断处理函数执行后,就跟着执行watchdog_overflow_callback它才对啊?就是NMI事件产生了,就进入到event注册的这个watchdog_overflow_callback函数中????
问题二、 2.6内核是只有nmi中断事件确实产生了,才算是watchdog_nmi事件发生了,才调用watchdog_overflow_callback它吗?????
如果是这样,那么现在3.18.27中,为什么每次中断处理函数intel_pmu_handle_irq执行完后,跟着就调用了watchdog_overflow_callback????难道不是watchdog nmi事件发生了,它也调用watchdog nmi事件的注册函数吗?
问题三、综上,那wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);这个周期设置的有什么用,反正都没按照它来?????、 以上三个问题,求大神们指点
解决方案 »
- 求助ubuntu一关机就不停刷信息关不了直到磁盘爆炸
- >>>靠谱的ArchLinux安装教程,小白必备<<<
- ubuntu16.04关机后马上自动重启
- 关于笔记本跑虚拟机的问题
- windows bat脚本通过ssh2连接linux并输入linux命令
- vmware esxi打开虚拟机电源失败
- fedora29安装完akmod驱动后启动系统无法进入桌面。
- Cygwin编译live555失败
- 物理内存少于896MB内核直接映射
- 在itop4412上装ubuntu,然后装个LabVIEW可以吗
- gstreamer新插件创建一直找不到,请问有知道原因的吗?
- 想学嵌入式,想从4412开发板入手,怎么样?
wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);