[转帖]NOHZ = ON如何影响Linux内核中的do_timer()?
https://www.jb51.cc/faq/897483.html
如何解决NOHZ = ON如何影响Linux内核中的do_timer()??
首先,让我们了解什么是tickless kernel
(NOHZ=On
或CONfig_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()?的更多相关文章
- Linux内核中影响tcp三次握手的一些协议配置
在Linux的发行版本中,都存在一个/proc/目录,有的也称它为Proc文件系统.在 /proc 虚拟文件系统中存在一些可调节的内核参数.这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 ...
- 【转】 Linux内核中读写文件数据的方法--不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法 有时候需要在Linuxkernel--大 ...
- Linux内核中的软中断、tasklet和工作队列具体解释
[TOC] 本文基于Linux2.6.32内核版本号. 引言 软中断.tasklet和工作队列并非Linux内核中一直存在的机制,而是由更早版本号的内核中的"下半部"(bottom ...
- Linux内核中锁机制之RCU、大内核锁
在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核锁(BKL).文章的最后对<大话Linu ...
- Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁
在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障.读写自旋锁以及顺序锁的相关内容.下面首先讨论内存屏障的相关内容. 三.内存屏障 不知读者是是否记得在笔 ...
- Linux内核中锁机制之信号量、读写信号量
在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实际上它是与自旋锁类似的概念,只有得到信号量的进程 ...
- Linux内核中锁机制之原子操作、自旋锁
很多人会问这样的问题,Linux内核中提供了各式各样的同步锁机制到底有何作用?追根到底其实是由于操作系统中存在多进程对共享资源的并发访问,从而引起了进程间的竞态.这其中包括了我们所熟知的SMP系统,多 ...
- 大话Linux内核中锁机制之RCU、大内核锁
大话Linux内核中锁机制之RCU.大内核锁 在上篇博文中笔者分析了关于完成量和互斥量的使用以及一些经典的问题,下面笔者将在本篇博文中重点分析有关RCU机制的相关内容以及介绍目前已被淘汰出内核的大内核 ...
- 大话Linux内核中锁机制之信号量、读写信号量
大话Linux内核中锁机制之信号量.读写信号量 在上一篇博文中笔者分析了关于内存屏障.读写自旋锁以及顺序锁的相关内容,本篇博文将着重讨论有关信号量.读写信号量的内容. 六.信号量 关于信号量的内容,实 ...
- 大话Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁
大话Linux内核中锁机制之内存屏障.读写自旋锁及顺序锁 在上一篇博文中笔者讨论了关于原子操作和自旋锁的相关内容,本篇博文将继续锁机制的讨论,包括内存屏障.读写自旋锁以及顺序锁的相关内容.下面首先讨论 ...
随机推荐
- LiteOS内核源码分析:动态内存之Bestfit分配算法
摘要:本文为大家剖析LiteOS动态内存模块bestfit算法的源代码,包含动态内存的结构体.动态内存池初始化.动态内存申请.释放等. 内存管理模块管理系统的内存资源,它是操作系统的核心模块之一,主要 ...
- 干货来了!阿里发布近300页Flink实战电子书
近300页实用干货总结,帮你解决 Flink 实战应用难题!<Apache Flink电子书合辑>收录来自bilibili.美团点评.小米.OPPO.快手.Lyft.Netflix等一线大 ...
- Axure 页面交互
- Android 启动优化(二) - 有向无环图的原理以及解题思路
Android 启动优化(一) - 有向无环图 Android 启动优化(二) - 拓扑排序的原理以及解题思路 Android 启动优化(三) - AnchorTask 使用说明 Android 启动 ...
- MIR7创建预制发票BAPI
1.事务代码MIR7 前台输入采购订单等相关字段进行开票 2.代码实现 调用BAPI:BAPI_INCOMINGINVOICE_PARK创建发票 "--------------------@ ...
- 【转】OS | 从一道面试题谈 Linux 下 fork 的运行机制
今天一位朋友去一个不错的外企面试 Linux 开发职位,面试官出了一个如下的题目: 给出如下C程序,在 Linux 下使用 gcc 编译: #include "stdio.h" # ...
- AtCoder Educational DP Contest 刷题记录
写在前面 深感自己 DP 很弱的 村人B 刷了点 DP 题,题集地址戳这里. 后记:刷完后感觉自己又行了 A - Frog 1 题意 给定 \(n\) 个石头,第 i 个石头的高度为 \(h_i\). ...
- 一篇文章教你从入门到精通 Google 指纹验证功能
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EHomjBy4Tvm8u962J6ZgsA作者:Sun Daxiang Google 从 An ...
- Java 21新特性-虚拟线程 审核中
本文翻译自国外论坛 medium,原文地址:https://medium.com/@benweidig/looking-at-java-21-virtual-threads-0ddda4ac1be1 ...
- C#设计模式05——抽象工厂的写法
C# 抽象工厂是一种创建型设计模式,它提供了一种封装一组相关或相互依赖对象创建的方法.该模式使得客户端能够创建与应用程序所使用的特定工厂无关的对象. 以下是C#抽象工厂5W1H的解释: 1. What ...