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. JAVA已过气?中俄大佬对话告诉你俄罗斯最受欢迎的编程语言是什么!

    摘要:中俄大佬对话:俄罗斯最受欢迎的编程语言是什么?Gitee如何抗住数据压力? 众所周知,Java作为一门非常成熟的语言,国内拥趸者众多,但随着后浪们的崛起,如今的Java在国际上是否还占据主流地位 ...

  2. 剖析字节案例,火山引擎 A/B 测试 DataTester 如何“嵌入”技术研发流程

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 日前,在 WOT 全球创新技术大会上,火山引擎 DataTester 技术负责人韩云飞做了关于字节跳动 A/B 测 ...

  3. 火山引擎 DataTester:构建增长闭环,3-5 人即可搭建企业增长团队

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 增长是一个老生常谈的话题,对许多企业而言这个词都很熟悉,但在实践过程中仍然有很多的疑问,比如指标体系应该怎么搭建? ...

  4. 文件名: ?Ciwindows\system32 inetsrconfiglapplicationHost.config 错误:无法写入配置文件

    出现原因:出现这个问题,一般是在程序运行的时候更新程序,导致的. 解决方案: Microsoft Windows [版本 6.3.9600] (c) 2013 Microsoft Corporatio ...

  5. .Net Core 中 MemoryCache 使用

    1.Demo,实际项目中不这么使用 class Program { static void Main(string[] args) { //缓存的配置 MemoryCacheOptions cache ...

  6. SpringBoot Admin OFFLINE

    java.util.concurrent.TimeoutException message Did not observe any item or terminal signal within 100 ...

  7. 【3rd_Party】format() 处理一些常见的格式化解决方案

    fmt的痛与对format设计的思考 fmt:轻量高性能的C++格式化库 C++20 引入了新的 format() 函数,该函数以字符串形式返回参数的格式化表示.format() 使用 python ...

  8. SpringBoot 项目实战 | 瑞吉外卖 Day04

    该系列将记录一份完整的实战项目的完成过程,该篇属于第四天 案例来自B站黑马程序员Java项目实战<瑞吉外卖>,请结合课程资料阅读以下内容 该篇我们将完成以下内容: 文件上传下载 新增菜品 ...

  9. Codeforce 515C. Drazil and Factorial(字符串思维题)

    [CodeForces]C. Drazil and Factorial 题目链接:Click Here 题意:找一个最大的数,使得每个位的阶乘的乘积与给定数相同. 首先將 2~9 轉成這樣(0,1為空 ...

  10. 邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

    活动简介 "阿里云云原生 Serverless 技术实践营 " 是一场以 Serverless 为主题的开发者活动,活动受众以关注 Serverless 技术的开发者.企业决策人. ...