https://www.jb51.cc/faq/897483.html

如何解决NOHZ = ON如何影响Linux内核中的do_timer()??

首先,让我们了解什么是tickless kernelNOHZ=OnCONfig_NO_HZ集合)以及从何将其引入Linux内核的动机。2.6.17

http://www.lesswatts.org/projects/tickless/index.php中

传统上,Linux内核为每个cpu使用一个定期计时器。该计时器完成了许多工作,例如进程记帐,调度程序负载平衡以及维护每个cpu计时器事件。较旧的Linux内核使用频率为100Hz的计时器(每秒100个计时器事件或每10ms一个事件),而较新的内核使用250Hz(每秒250个事件或每4ms一个事件)或1000Hz(每秒1000个事件或一个事件)每1ms)。

这种周期性的计时器事件通常称为“计时器滴答”。计时器滴答在设计上很简单,但是有一个明显的缺点:计时器滴答是周期性发生的,而不管处理器状态是空闲还是忙。如果处理器空闲,则必须每1、4或10毫秒从节能睡眠状态中唤醒。这会耗费大量能量,消耗笔记本电脑的电池寿命,并导致服务器不必要的功耗。

通过“无中断空闲”,Linux内核消除了cpu空闲时的这种定期定时器滴答。这样,cpu可以保持省电状态的时间更长,从而降低了整体系统的功耗。

因此,降低功耗是无滴答内核的主要动机之一。但实际上,在大多数情况下,性能会因功耗降低而受到影响。对于台式计算机,性能是最重要的问题,因此,您会看到大多数台式计算机都NOHZ=OFF运行良好。

用Ingo Molnar的话来说

无滴答内核功能(CONfig_NO_HZ)启用“按需”计时器中断:如果在系统闲置时1.5秒内没有计时器到期,那么系统将完全闲置1.5秒。这应该可以带来更凉爽的cpu和更低的功耗:在我们的(x86)测试箱上,我们测量了从IRZ到每秒1-2个计时器中断的有效IRQ速率。

现在,让我们尝试回答您的查询-

我无法理解的是高分辨率计时器如何影响do_timer?

如果系统支持高分辨率计时器,则10ms在大多数系统上,计时器中断的发生频率可能​​比平时高。也就是说,每个计时器都试图通过利用系统功能并通过更快地触发计时器中断来使系统更具响应性100us。因此,通过NOHZ选择,这些计时器会冷却下来,因此do_timer

即使高分辨率硬件处于睡眠状态,持久性时钟也能够每10毫秒执行一次do_timer

是的,它有能力。但是的意图NOHZ恰恰相反。为防止定时器频繁中断!

其次,如果do_timer何时不执行,则意味着某些进程在理想情况下没有获得分时

正如注释中所指出的,cafNOHZ不会导致进程调度的频率降低,因为它仅在cpu空闲时启动(换句话说,当没有进程可调度时才启动)。仅流程记帐工作将在延迟的时间完成。

为什么do_timer错过了截止日期?

如所阐述的,这是 NOHZ

我建议您以tick-sched.c内核源代码为起点。搜索CONfig_NO_HZ并尝试理解添加了新的功能NOHZ特性

这是一项旨在测量不滴答内核影响的测试

解决方法

在一个简单的实验中,我设置NOHZ=OFF并用来printk()打印do_timer()函数被调用的频率。它在我的计算机上每10毫秒被调用一次。

但是,如果NOHZ=ON这样,就会有很多抖动do_timer()被调用。在大多数情况下,它确实每10毫秒被调用一次,但有时它会完全错过最后期限。

我已经研究了do_timer()NOHZ和NOHZ。do_timer()是负责更新jiffies值的功能,还负责流程的循环调度。

NOHZ功能可关闭系统上的高分辨率计时器。

我无法理解的是高分辨率计时器如何影响do_timer()?即使高分辨率硬件处于睡眠状态,持久性时钟也足以do_timer()每10 ms
执行一次。其次,如果do_timer()在应有的时间未执行,则意味着某些进程在理想情况下没有获得应有的时分。大量的搜索确实表明,对于许多人来说,许多应用程序在时开始工作得更好NOHZ=OFF

长话短说,如何NOHZ=ON影响do_timer()
为什么do_timer()错过最后期限?

[转帖]NOHZ = ON如何影响Linux内核中的do_timer()?的更多相关文章

  1. Linux内核中影响tcp三次握手的一些协议配置

    在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统.在 /proc 虚拟文件系统中存在一些可调节的内核参数.这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 ...

  2. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

  3. Linux内核中的软中断、tasklet和工作队列具体解释

    [TOC] 本文基于Linux2.6.32内核版本号. 引言 软中断.tasklet和工作队列并非Linux内核中一直存在的机制,而是由更早版本号的内核中的"下半部"(bottom ...

  4. Linux内核中锁机制之RCU、大内核锁

    在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL).文章的最后对<大话Linu ...

  5. Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁

    在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障.读写自旋锁以及顺序锁的相关内容.下面首先讨论内存屏障的相关内容. 三.内存屏障 不知读者是是否记得在笔 ...

  6. Linux内核中锁机制之信号量、读写信号量

    在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程 ...

  7. Linux内核中锁机制之原子操作、自旋锁

    很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实是由于操作系统中存在多进程对共享资源的并发访问,从而引起了进程间的竞态.这其中包括了我们所熟知的SMP系统,多 ...

  8. 大话Linux内核中锁机制之RCU、大内核锁

    大话Linux内核中锁机制之RCU.大内核锁 在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核 ...

  9. 大话Linux内核中锁机制之信号量、读写信号量

    大话Linux内核中锁机制之信号量.读写信号量 在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实 ...

  10. 大话Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁

    大话Linux内核中锁机制之内存屏障.读写自旋锁及顺序锁 在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障.读写自旋锁以及顺序锁的相关内容.下面首先讨论 ...

随机推荐

  1. 5步带你掌握工作流Activiti框架的使用

    摘要:本文通过一个工作流Activiti框架的具体使用示例,具体详尽的介绍了工作流Activiti框架的使用方式. 本文分享自华为云社区<一个使用示例,五个操作步骤!从此轻松掌握项目中工作流的开 ...

  2. vue2升级vue3: h、createVNode、render、createApp使用

    h.createVNode 杂乱笔记,凑合着看,不喜勿喷! h 函数是什么 h 函数本质就是 createElement() 的简写,作用是根据配置创建对应的虚拟节点,在vue 中占有极其重要的地位! ...

  3. SBOM:缓解软件供应链风险的关键

    软件包含大量且范围广泛的组件.部分和相互依赖关系.需要有效缓解与使用软件相关的安全风险:需要遵守与组件相关的许可证.通过第三方代码(包括开源软件 (OSS))了解产品中所有项目的出处至关重要,无论这些 ...

  4. 火山引擎 DataLeap 构建Data Catalog系统的实践(一):背景与调研思路

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 摘要 Data Catalog 产品,通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解 ...

  5. Axure 交互样式

  6. Python openpyxl 将 Excel中的汉字 转换成拼音首字母

    将Excel中的汉字列,转换成拼音首字母,并保存 需要安装导入  pypinyin.openpyxl 库 # pip install pypinyin from pypinyin import laz ...

  7. Hugging News #0203: 3.3 MB 的文生图模型、RHLF 训练框架、手机上能跑的 Transformer

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  8. 详解 SSL(一):网址栏的小绿锁有什么意义?

    随着互联网的飞速发展,用户信息泄漏.数据泄露等安全问题的事件频繁发生.这一切不一定是网站的问题,有时候可能是自己不经意间泄露了自己的信息.例如钓鱼网站就是日常生活中比较常见的,钓鱼网站和真实网站差别细 ...

  9. VA41 销售合同创建BAPI

    一.事务代码VA41 合同创建的过程和销售订单几乎一致 二.调用BAPI 调用BAPI为BAPI_CONTRACT_CREATEFROMDATA 传参和销售订单BAPI:BAPI_SALESORDER ...

  10. 为什么加上<log4j2.version>配置就可以更新log4j2的版本?

    最近log4j2的核弹级漏洞席卷了大部分互联网公司,升级版本成了这两周的核心任务.对于要升级到什么版本,最新版本2.16.0是最佳选择.那么如何快速升级,之前也给出了Spring Boot项目升级版本 ...