首页 > 运维 > linux运维 > 正文

系统解读CPU 隔离:简介

雪夜
发布: 2025-07-16 08:36:04
原创
703人浏览过

作者 | frederic weisbecker

译者 | 韩志彬

策划 | 闫园园

SUSE Labs 团队深入研究了 Kernel CPU 隔离及其关键组成部分之一:Full Dynticks(或 Nohz Full),并撰写了本系列文章:

  1. CPU 隔离 – 简介
  2. CPU 隔离 – Full Dynticks 深探
  3. CPU 隔离 – Nohz_full
  4. CPU 隔离 – 管理和权衡
  5. CPU 隔离 – 实践

本文为系列的首篇。

CPU 隔离是一套强大的功能,旨在支持那些对延迟或性能有极端要求的工作负载设置。某些 DPDK(数据平面开发套件:https://www.php.cn/link/4f9959469b99179f25fd5cf84f4cde62 CPU 隔离的文档和注释即使没有落后于最新的开发进程,也往往过于分散。理解现有调试范围背后的优势和权衡并非易事。本系列文章旨在阐明并引导用户了解我们在 Linux 社区(https://www.php.cn/link/8deb714d5a66d70cf8deac8cd3f79734 SLE15 产品(https://www.php.cn/link/e913bfa37964c7073c81c32a6d750b99 Linux Kernel 子系统。

回归本源

内核的作用是通过统一接口提供基本服务,从而利用硬件资源作为工作负载运行的基础。

我们可以用城市基础设施来类比:道路、能源、供水、污水处理为人类活动提供支持。每个人都希望基础设施是透明且可靠的。我们希望它们能发挥作用,同时希望永远不要意识到它们的存在。但有时,我们不得不这样做,因为最终每一项基础设施都需要维护。

内核与此类似。它通过系统调用、同步请求提供服务,并通过异步处理来履行职责并维护内部状态,例如中断、计时器和内核线程。当然,这是一种简化的描述,省略了许多细节。

内务管理和内核噪音

如果这些异步工作中的一些对用户有明显影响,比如页面回收(内存交换操作),那么其余的大部分工作都是无感知的。计时器和中断在很短的时间内(通常以微秒计)执行;许多内核线程,其中一些是工作队列,执行时间也不应过长,尤其是它们的 CPU 时间通过调度程序进行平衡的时候。这些内核异步代码片段通常被称为“内务管理”工作。其中一些可以与特定的 CPU 绑定,另一些则可以解除绑定,因此可以在任何 CPU 上执行。

小绿鲸英文文献阅读器
小绿鲸英文文献阅读器

英文文献阅读器,专注提高SCI阅读效率

小绿鲸英文文献阅读器 199
查看详情 小绿鲸英文文献阅读器

现在,如果多面手用户的工作负载不会因内核管理而产生负担,一些更专业的需求显然可能会受到干扰。对于需要整个 CPU 时间且不能容忍任何时钟周期被占用的处理任务,情况正是如此。DPDK(https://www.php.cn/link/b46825e256dea79fb588e5455ed7fe58 CPU 来实现其目标:例如,希望以最大化方式为客户机提供 CPU 资源的虚拟化主机、为获得稳定结果而进行的 CPU 绑定的基准测试、特定的实时需求等。

定时器中断

让我们从定时器中断出发,更详细地探索内核管理的世界。定时器作为内核的核心组件,过去一直是难以消除的干扰源。中断是指在每个 CPU 上以 100 到 1000 Hz 的频率执行的周期性定时器中断,有些架构提出了更高的数值。它执行多项工作:

  • 运行过期的通用计时器回调
  • 跳过 posix CPU 定时器,并运行已经过期的定时器
  • 计时:维护内部时钟 (jiffies) 和外部时钟 (gettimeofday())
  • 调度程序:维护内部状态、公平性和优先级(任务优先级)
  • 维护全局平均负载
  • 维护性能事件等

毫无疑问,对于依赖于无干扰、无抖动 CPU 的极端工作负载来说,这种每秒执行 100 到 1000 次的中断可能是一个问题。虽然很快,但这些中断仍然会占用一些 CPU 周期,并会破坏 CPU 缓存,导致在中断后恢复用户任务时丢失缓存。因此,我们希望节省这些工作负载的时间。

这个问题难以解决,因为 CPU 的计时器中断不能像许多其他硬件 IRQ 一样与另一个 CPU 绑定。它也不能采用线程方式。从根本上说,考虑到其工作性质,这个问题必须在 CPU 范围内局部解决。事实上,直到内核版本 2.6.21(2007)发布,打破中断周期的机制根本不存在。其行为如下图所示:

系统解读CPU 隔离:简介图 1:周期计时器中断的实现

从图中可以看出,中断会盲目触发并一直中断 CPU,无论 CPU 是在内核空间、用户空间还是处于空闲状态。这种布局仍可以使用 CONFIG_HZ_PERIODIC 恢复;早在 2007 年,这种恢复方式必须解决的第一个问题是优化功耗。事实上,当 CPU 空闲时,不需要中断,因为没有真正的工作要做,而 CPU 可以从关闭周期性中断中获益,以进入低功耗模式。这就是 CONFIG_NO_HZ_IDLE(以前称为 CONFIG_NO_HZ: https://www.php.cn/link/dd96eaef5612dd405d9d087ab539e38e:

系统解读CPU 隔离:简介图 2:dynticks- 空闲计时器中断的实现

请记住:对于以无抖动 CPU 为目标的工作负载,我们更希望在无中断的情况下运行实际任务。详情请关注本系列第二篇文章。

以上就是系统解读CPU 隔离:简介的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号