时隔16年Jeff Barr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

CPU 隔离:管理和权衡

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

    阅读完需:约 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 隔离和 nohz_full 用户需要了解的基本原则:干扰很少能被消除,而是转移到其他地方。

管理


我们之前曾简要解释过,内务管理是内核需要做的周期性工作或事件驱动的基础工作,目的是维护其内部状态和服务,例如更新调度程序的内部统计数据或计时。

 

在正常的配置下,每个 CPU 都要承担内务管理工作。相反,nohz_full 配置会以隐含方式移除 nohz_full 集合之外的所有的内务管理工作。

 

也就是说,如果您有 8 个 CPU,并隔离 CPU 1、2、3、4、5、6、7:

 

nohz_full=1-7


则 CPU 0 将单独处理内务管理工作。这些工作涉及:

 

  • 未绑定计时器回调执行

  • 未绑定工作队列执行

  • 未绑定 kthreads 执行

  • 计时更新(jiffies 和 gettimeofday())

  • RCU 缓冲期跟踪

  • 代替隔离的 CPU 进行 RCU 回调执行

  • 代替隔离的 CPU 执行 1Hz 残余的已卸载计时器 Tick

  • 根据您的扩展设置:

  • 可以绑定的硬件 IRQ

  • 除隔离的工作负载以外的用户任务


尽管这些项目通常可由一个 CPU 代替其他 7 个 CPU 处理,但这种布局并不趋于无穷尽。随着 CPU 数量的增加,同时,随着内存和缓存的进一步分区,内务管理任务可能需要共担。通常情况下,为每个 NUMA 节点配置一个管理 CPU 是一种不错的方法。如以下配置所示:



由于 CPU 0 - 7 属于节点 0,CPU 8 - 15 属于节点 1,默认设置如下所示:

nohz_full=1-7,9-15


在测试阶段,建议通过 top/htop 等工具检查和监控管理程序的活动,以确保它们没有超负荷。例如,如果以上设置显示 CPU 0 或 CPU 8 的负荷为 100%,则可能需要添加更多的管理 CPU,尽管这种情况更有可能使用更多的节点来处理。

 

同样需要注意的是,对内核的访问(例如系统调用或内存故障)可能会产生更多的内务管理活动,并导致 CPU 承担更多负载。通常不建议从隔离的 CPU 中请求内核服务,这一点我们将在下一章介绍。

 

在任何情况下,内核都有内务工作需要处理,这不能忽略。如果所有 CPU 都被传递到“nohz_full=” 内核参数,则 CPU 0 将从隔离集合内随意清理出来,并为其单独分配内务管理工作,使用的消息如下:

NO_HZ: Clearing 0 from nohz_full range for timekeeping

 

因此,要注意的是:被隔离的 CPU 之所以获得无抖动的特性,是因为其他 CPU 承担了更多工作,而至少一个 CPU 需要为这些工作做出牺牲。

 

然而,这种情况并非一成不变。从长远来看,我们可以安排在隔离模式下运行所有 CPU,前提是在内核进入时更新计时,并且调度程序的能力进一步增强,能够支持在用户空间中运行长时间的任务,而不需要远程中断才能保持统计信息的最新状态。但我们还没有做到。

内核进入/退出的开销


完全的 dynticks 模式增加了内核进入和退出的大量开销。这些是由于:

 

  • 系统调用

  • 异常(页面错误、陷阱等)

  • 中断

 

这些开销首先是由于 RCU 跟踪和排序造成的。这项工作通常由周期性计时器中断来处理。现在,我们已经摒弃了这种方法,最终需要使用代价高昂的完全排序后的原子操作,来计算通过内核边界的往返次数。

 

这些开销的第二部分来自记录CPU运行时间。同样,内核必须使用内核边界上的探测器来计算任务在内核和用户空间中执行所花费的时间,因为周期性的中断不再执行这项工作。尽管记录 CPU 运行时间使用的排序比 RCU 跟踪要弱,但仍有一些处理会增加总体开销。


我们之前曾经说过,IRQ 与内务管理密切相关。使用 mlock() 可以防止页面错误(https://man7.org/linux/man-pages/man2/mlockall.2.html)。之后,用户需要减少系统调用,这就形成了一条硬性规则:full dynticks 不适合基于内核的 I/O 型工作负载。相反,应将其保留给以下任一方:

 

  • CPU 计算型的工作负载。涉及大量 CPU 处理和最少的基于内核的 I/O 的操作(依赖内核驱动程序处理系统调用和中断)。

  • 对于内核不参与的 I/O 类型的工作负载,即基于 DPDK 等用户空间驱动程序的 I/O (https://www.dpdk.org/)。

结语


CPU 隔离和 full dynticks 可以为某些特定工作负载带来明显好处,但需注意,它在许多情况下并不适用。您必须特别注意以下两点:

 

  • 您需要牺牲一个隔离的 CPU,由其处理内核内部的无聊工作。

  • Full dynticks 仅适用于 CPU 计算型的工作负载,或者基于用户空间驱动程序的 I/O。


在第五篇文章中,我们将最终测试这一特性,并展示如何识别并调试其余的干扰。

2022-04-06 11:432231

评论

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

天翼云,用息壤智能体打通AI“最后一公里”

脑极体

AI

618购机选什么?七彩虹带来全能王者iGame M15 Origo和旗舰强者iGame M16 Origo

E科讯

Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台

sysin

veeam

618来袭!强性能、快散热、高颜值,搭载英特尔酷睿Ultra处理器的华硕笔记本带来非凡体验

E科讯

联想个人云轻松打造私有云!贝锐花生壳内网穿透实现高速远程访问

科技热闻

直播APP的开发框架

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

直播app 软件外包公司 APP外包公司

CST软件PCB热仿真2--直流热源(IR drop)+ 元件热源

思茂信息

cst CST软件 CST Studio Suite

工程级提示词攻防,注意这5点

阿星AI工作室

产品 AI 大模型 AI教程 提示词

低代码开发模式下的应用交付效率优化:拖拽式交互机制研究

JeeLowCode低代码平台

低代码 低代码开发 低代码平台 低代码前端 低代码,

直播APP的技术难点

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

直播app 直播APP开发 软件外包公司

纯前端实现图片伪3D视差效果

vivo互联网技术

前端 WebGL pixi.js

日本房产中介龙头为何放弃 Salesforce,转向开源平台 NocoBase?

NocoBase

开源 CRM Salesforce 人力资源管理系统 日本房地产

数据仓库 vs 数据库:核心区别与应用场景全解析

镜舟科技

数据库 数据仓库 OLAP OLTP StarRocks

观测云产品更新 | SIEM、监控、基础设施、异常追踪等

观测云

产品迭代

BeeWorks:云盘存储与在线编辑,开启高效办公新时代

BeeWorks

即时通讯 IM 企业级应用

Windows 10 version 22H2 中文版、英文版下载 (2025 年 5 月更新)

sysin

Windows 10

Windows 11 23H2 中文版、英文版 (x64、ARM64) 下载 (2025 年 5 月更新)

sysin

windows 11

百亿厂补 “粽”情钜惠 捷途汽车端午大促活动限时开启

科技热闻

“全球金牌敏捷课程” · 6月10-12日CSM认证课程

ShineScrum

KADC 2025,筑起行业智能化的算力屏障

脑极体

AI

户外防水租赁LED显示屏报价与选择攻略

Dylan

商业 LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

Windows 10 on ARM, version 22H2 ARM64 中文版、英文版下载 (2025 年 5 月更新)

sysin

Windows 10

【 HGDD 荣耀开发者日】系列活动丨荣耀应用市场联合维科网,推动应用分发“数智化”赋能

荣耀开发者服务平台

生态 荣耀开发者服务平台 应用市场 荣耀HONOR HGDD

【干货】手把手教你把Trae改造成你的专属AI写作助手

田威AI

AI AI工具 AI工具推荐

im即时通讯软件BeeWorks:流程审批助力企业高效管理

BeeWorks

即时通讯 IM 私有化部署

华为云云应用引擎CAE,重塑企业AI Agent最佳运行态

华为云开发者联盟

华为云

论文解读 - 统一的多模态理解和生成模型综述(上)

合合技术团队

人工智能 算法 #大数据

Veeam ONE 13 之初见 - Web 控制台和 Veeam 监控的未来

sysin

veeam

2025 BOE(京东方)全球供应伙伴大会隆重举行 共筑全球显示产业共生共赢新格局

科技热闻

直播APP的开发流程

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

直播app 软件外包公司 APP外包公司

东方通&openEuler Meetup走进高校 携手年轻开发者解锁云原生开发效率变革

科技热闻

CPU 隔离:管理和权衡_硬件_Frederic Weisbecker_InfoQ精选文章