作者 | frederic weisbecker
译者 | 韩志彬
策划 | 闫园园
SUSE Labs 团队深入研究了 Kernel CPU 隔离及其关键组成部分之一:Full Dynticks(或 Nohz Full),并撰写了本系列文章:
本文为系列的首篇。
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 上执行。
现在,如果多面手用户的工作负载不会因内核管理而产生负担,一些更专业的需求显然可能会受到干扰。对于需要整个 CPU 时间且不能容忍任何时钟周期被占用的处理任务,情况正是如此。DPDK(https://www.php.cn/link/b46825e256dea79fb588e5455ed7fe58 CPU 来实现其目标:例如,希望以最大化方式为客户机提供 CPU 资源的虚拟化主机、为获得稳定结果而进行的 CPU 绑定的基准测试、特定的实时需求等。
定时器中断
让我们从定时器中断出发,更详细地探索内核管理的世界。定时器作为内核的核心组件,过去一直是难以消除的干扰源。中断是指在每个 CPU 上以 100 到 1000 Hz 的频率执行的周期性定时器中断,有些架构提出了更高的数值。它执行多项工作:
毫无疑问,对于依赖于无干扰、无抖动 CPU 的极端工作负载来说,这种每秒执行 100 到 1000 次的中断可能是一个问题。虽然很快,但这些中断仍然会占用一些 CPU 周期,并会破坏 CPU 缓存,导致在中断后恢复用户任务时丢失缓存。因此,我们希望节省这些工作负载的时间。
这个问题难以解决,因为 CPU 的计时器中断不能像许多其他硬件 IRQ 一样与另一个 CPU 绑定。它也不能采用线程方式。从根本上说,考虑到其工作性质,这个问题必须在 CPU 范围内局部解决。事实上,直到内核版本 2.6.21(2007)发布,打破中断周期的机制根本不存在。其行为如下图所示:
图 1:周期计时器中断的实现
从图中可以看出,中断会盲目触发并一直中断 CPU,无论 CPU 是在内核空间、用户空间还是处于空闲状态。这种布局仍可以使用 CONFIG_HZ_PERIODIC 恢复;早在 2007 年,这种恢复方式必须解决的第一个问题是优化功耗。事实上,当 CPU 空闲时,不需要中断,因为没有真正的工作要做,而 CPU 可以从关闭周期性中断中获益,以进入低功耗模式。这就是 CONFIG_NO_HZ_IDLE(以前称为 CONFIG_NO_HZ: https://www.php.cn/link/dd96eaef5612dd405d9d087ab539e38e:
图 2:dynticks- 空闲计时器中断的实现
请记住:对于以无抖动 CPU 为目标的工作负载,我们更希望在无中断的情况下运行实际任务。详情请关注本系列第二篇文章。
以上就是系统解读CPU 隔离:简介的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号