阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

CPU 隔离:简介

  • 2022-04-01
  • 本文字数:1892 字

    阅读完需:约 6 分钟

CPU 隔离:简介

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.dpdk.org/) 用例可能属于这种情况。然而,关于 CPU 隔离的文档和注释即使没有滞后于最新的开发进程,也是过于零散。要理清现有调试范围背后的益处和权衡取舍并非易事。本系列文章旨在阐明并引导用户了解我们在 Linux 社区(https://www.kernel.org/)和 SLE15 产品中 (https://www.suse.com/products/server/)维护的这个晦涩的 Linux Kernel 子系统。

 

回归本源


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

 

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

 

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


内务管理和内核噪音


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


现在,如果多面手用户的工作负载不会因内核管理而产生负担,一些更专业的需求显然可能会受到干扰。对于需要整个 CPU 时间且不能容忍任何时钟周期被占用的处理任务,情况正是如此。DPDK (https://www.dpdk.org/)就是这样一个例子,即直接通过用户空间轮询获取高带宽网络数据包,而且任何来自内核的微小干扰都可能导致数据包丢失。这种随机噪声通常被称为“抖动”,其他类型的工作负载可能通过更接近无抖动的 CPU 来实现其目标:例如,希望以最大化方式为客户机提供 CPU 资源的虚拟化主机、为获得稳定结果而进行的 CPU 绑定的基准测试、特定的实时需求等。

 

定时器中断


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

 

  • 运行过期的通用计时器回调

  • 跳过 posix CPU 定时器,并运行已经过期的定时器

  • 计时:维护内部时钟 (jiffies) 和外部时钟 (gettimeofday())

  • 调度程序:维护内部状态、公平性和优先级(任务优先级)

  • 维护全局平均负载

  • 维护性能事件等

 

毫无疑问,对于依赖于无干扰、无抖动 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://lwn.net/Articles/223185/)被引入内核的原因,它在进入空闲状态时停止周期性中断,并在退出空闲状态时重新启动。此后,我们工作负载上的情况就如下图所示:


图 2:dynticks-空闲计时器中断的实现

 

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

2022-04-01 17:214232

评论

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

Total Video Converter Pro超级转霸 Mac视频转换软件 v5.1.0下载

南屿

UML建模工具Astah Professional,实现逼真模型,让设计更加生动!

南屿

Excel复杂表头按组按行复制

alexgaoyh

Java POI 合并单元格 复杂表头 模板生成

云手机解决tiktok登录不上的问题

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版 国外云手机

一文讲透低代码开发平台

高端章鱼哥

软件开发 低代码 JNPF

群星Stellaris for mac(策略游戏)v3.10.1激活版下载

iMac小白

Cornerstone 4 for Mac(SVN管理工具) v4.2免激活版

iMac小白

IPQ4019: Revolutionizing Long-Range Wireless Connectivity

wallyslilly

IPQ4019

如何查看电脑性能跑分?Geekbench极客系统跑分工具

南屿

瀑布模型指南:优缺点和适合的团队领域

PingCode

项目管理 瀑布方法论

文明6铂金版 mac(策略游戏)v1.3.13中文激活版

iMac小白

阿里云参编业内首个代码大模型标准,通义灵码获 2023 AI4SE “银弹” 案例

阿里巴巴云原生

阿里云 云原生

🚀2023最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包

分布式ID介绍&实现方案总结

快乐非自愿限量之名

架构 分布式 项目开发

华为游戏中心“游学季”:跨界融合,探索“游戏+”正向价值

最新动态

预见2024:开发体育直播平台有这4大新趋势

软件开发-梦幻运营部

文明6 Sid Meier‘s Civilization VI for mac(策略游戏)中文版

iMac小白

企业到底怎么选择PaaS服务?

伤感汤姆布利柏

VJ创作表演:Resolume Arena 6 for Mac中文版 含esolume arena 破解补丁

南屿

数维图数字孪生:能源电力行业三维可视化系统合集

2D3D前端可视化开发

大数据 物联网 可视化 智慧电力 数字孪生

帝国时代3 for Mac中文激活版(酋长、亚洲王朝三合一完整版)

iMac小白

谁说后端不能画出美丽的动图?让我来给大家拜个年!

不在线第一只蜗牛

Java JavaScript 后端 动图

pdf编辑器 Acrobat Pro DC 2021 for Mac中文激活版

iMac小白

中国香港正在计划发行第二批代币化绿色债券

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

软件测试学习笔记丨App压力测试

测试人

软件测试

Bartender 5 for mac自定义隐藏及显示菜单栏

南屿

AE脚本-一键快速输出GIF动图格式插件 GifGun v2.0.15激活版

南屿

海外云手机对于亚马逊卖家的作用

Ogcloud

云手机 海外云手机 云手机海外版

海外云手机开辟企业跨境电商新道路

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版

Lightroom Classic 2024 for Mac(LRC2024) v13.1.0中文激活版

iMac小白

通过低代码开发实现数据可视化应用的简易指南

EquatorCoco

大数据 低代码 数据可视化

CPU 隔离:简介_硬件_Frederic Weisbecker_InfoQ精选文章