写点什么

CPU 隔离:Nohz_full

  • 2022-04-06
  • 本文字数:1845 字

    阅读完需:约 6 分钟

CPU 隔离:Nohz_full

SUSE Labs 团队探索了 Kernel CPU 隔离及其核心组件之一:Full Dynticks(或 Nohz Full),并撰写了本系列文章:

 

1. CPU 隔离 – 简介

2. CPU 隔离 – Full Dynticks 深探

3. CPU 隔离 – Nohz_full

4. CPU 隔离 – 管理和权衡

5. CPU 隔离 – 实践

 

本文是第三篇。

NOHZ_FULL


“nohz_full=” 内核引导参数是当前用于配置 full dynticks 和 CPU 隔离的主接口。

 

CPU 列表参数传给 nohz_full 的作用是定义一组要隔离的 CPU。例如,假设您有 8 个 CPU,希望隔离 CPU 4、5、6、7:


nohz_full=4-7


关于 cpu-list 参数格式请参考:https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html#cpu-lists


nohz_full 的作用


当一个 CPU 包含在 nohz_full 引导参数的 CPU 列表中,内核会试图从那个 CPU 中排除尽可能多的内核干扰。本系列的第二篇文章已经从理论上解释了关闭计时器 Tick 的准备工作,这就是最终需要执行的操作:


定时器中断 


满足以下条件时,定时器可以停止:



残余的 1 Hz Tick(每秒钟中断)仍然存在,目的是为了维护调度程序内部统计。它以前在隔离的 CPU 上执行,但现在,这个事件使用一个未绑定的工作队列被卸载到 nohz_full 范围之外的 CPU。这意味着一个干净的设置可以在 CPU 上 100%无 Tick 运行。


定时器回调


未绑定定时器回调执行被移动到 nohz_full 范围之外的任何 CPU,因此,它们不会在错误的地方触发定时器 Tick。与此同时,被固定的定时器 Tick 不能转移到其他地方。我们稍后会探讨如何处理。


工作队列和其他内核线程


与定时器回调类似,未绑定的内核工作队列和 kthread 被移动到 nohz_full 范围之外的任何 CPU。但是,被固定的工作队列和 kthread 不能移动到其他地方。我们稍后会探讨如何处理。


RCU


大部分 RCU 处理任务都被卸载到隔离范围外的 CPU 上。CPU 设置为 nohz_full 在 NOCB 模式下运行(https://lwn.net/Articles/522262/),这意味着在这些 CPU 上排队的 RCU 回调是在非隔离的 CPU 上运行的未绑定 kthreads 中执行。不需要传递“rcu_nocbs=” 内核参数,因为这在传递“nohz_full=” 参数时自动处理。

 

CPU 也不需要通过 Tick 来积极报告静止状态,因为它在返回到用户空间时进入RCU扩展静止状态


Cputime 记账


将 CPU 切换到 full dynticks cputime 记账,这样它就不再依赖周期性事件。

其他隔离设置


尽管 nohz_full 是整个隔离设置的重要组成部分,但也需要考虑其他细节,其中重要的两项包括:

 

用户任务仿射


如果您想运行一个不被干扰的任务,一定不希望其他线程或进程与其共享 CPU。full dynticks 最终只在单个任务中运行,因此,需要:


  • 将每个隔离任务仿射到 nohz_full 范围内的一个 CPU。每个 CPU 必须只有一个隔离任务。

  • 将其他所有任务仿射到 nohz_full 范围之外。

 

有多种方式可以将您的任务仿射到一组 CPU 上,从底层系统调用 sched_setaffinity() (https://man7.org/linux/man-pages/man2/sched_setaffinity.2.html) ,到 taskset 等命令行工具(https://man7.org/linux/man-pages/man1/taskset.1.html)。另外也建议使用强大的 cgroup 接口,例如 cpusets (https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/cpusets.html)


IRQ 仿射


硬件 IRQ(除计时器和其他特定的中断之外)可能会在任何 CPU 上运行,并打乱您的隔离集。产生的干扰可能不仅仅是占用 CPU 时间和破坏 CPU 缓存的中断,IRQ 可能会在 CPU 上启动进一步的异步工作:softirq、计时器、工作队列等。因此,将 IRQ 仿射到 nohz_full 范围之外的 CPU 通常是一个好想法。这种仿射可以通过文件而取消:

/proc/irq/$IRQ/smp_affinity

 

$IRQ 是向量号,更多细节可见内核文档:https://www.kernel.org/doc/Documentation/IRQ-affinity.txt

 

所有这些 CPU 隔离设置都涉及到一些陷阱和权衡,我们将在第四篇文章中探讨。

2022-04-06 11:072953

评论

发布
暂无评论
发现更多内容

Web3项目的开发的性能测试

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

Aloudata Agent 36 问,深度解惑!

Aloudata

数据分析 大模型 指标平台 ChatBI 智能问数

等保测评5个等级

黑龙江陆陆信息测评部

上门预约家政系统平台网站/app/小程序源码

网站,小程序,APP开发定制

原生App和H5 App的性能比较

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包

行稳、致远 | 技术驱动下的思考感悟

京东科技开发者

敏捷开发框架下的低代码应用:交付效率与代码质量的协同优化路径

JeeLowCode低代码平台

低代码 低代码开发 低代码平台 低代码, 低代码引擎

邀请函|2025 Altair区域技术交流会华北站,报名开启!

Altair RapidMiner

AI 电磁仿真 hyperworks 多物理场仿真 仿真数据管理

天猫商品详情 API 接口:功能、调用与实战攻略

tbapi

天猫商品详情接口 天猫API 天猫数据采集 天猫商品详情api

当AI代理遇上DeCloud会发生什么?

PowerVerse

AI 算力 web3 DePIN DeCloud

设计模式-策略模式

京东科技开发者

原生App和H5 App的对比

北京木奇移动技术有限公司

软件外包公司 原生APP开发 APP外包公司

软通动力2024年年报:软硬一体战略促营收新高,增幅超78%

财见

中昊芯英作为“杭州 AI 18 罗汉”荣登《杭州 AI 卧龙图》

科技热闻

驭电·新境 长安马自达MAZDA EZ-60全球首秀

极客天地

新闻速递|Altair 荣膺 2025 年度 Google Cloud 制造业商业应用合作伙伴大奖

Altair RapidMiner

深度学习 制造业 Google Cloud CAE physicsAI

一文彻底搞懂Transformer:原理、应用与测试开发指南

测试人

人工智能

中科曙光AI竞争力领跑全国TOP100榜单

科技热闻

《Operating System Concepts》阅读笔记:p808-p820

codists

操作系统

原生 APP 的性能测试

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

AI与智能农业:如何通过精准农业提升作物产量与资源使用效率?

天津汇柏科技有限公司

人工智能

百度智能云推出千帆数据智能平台

科技热闻

程序员必备:使用Cursor+MCP 提高开发效率+避坑指南

博文视点Broadview

【前瞻技术布局】打破“沙漏“现象→提高生成式搜索/推荐的上限

京东科技开发者

MES:助力新材料行业实现无纸化与智能制造

万界星空科技

mes 新材料 新材料mes 新材料行业

怎么彻底清除Mac的系统数据?MacBook释放存储空间一文通

阿拉灯神丁

存储空间 CleanMyMac 苹果电脑必备软件 系统清理软件 mac系统维护

Arthas memory(查看 JVM 内存信息)

刘大猫

JVM 监控 Arthas memory 查看JVM内存信息

《Operating System Concepts》阅读笔记:p794-p807

codists

操作系统

从“被动应对”到“主动合规”——零信任架构下的等保 2.0 与密评密改双合规

权说安全

网络安全 密码 零信任

告别提示词混乱!梦精灵提示词管理器让创作更高效​

龙正哲

Prompt prompt 工程 提示词管理

什么是采购管理?如何做好采购管理?

积木链小链

数字化转型 数字化 智能制造

CPU 隔离:Nohz_full_硬件_Frederic Weisbecker_InfoQ精选文章