基于CPU隔离技术提升关键业务性能,最大化硬件利用率

【Linux实时编程之CPU核心隔离】Linux(ubuntu)下CPU隔离的踩坑与实践 (isolcpus的使用) 记录下CPU隔离时踩的坑和操作过程 阅读详情

在当今的高性能计算、实时任务处理及云原生环境中,通过CPU隔离的方式确保关键业务的高性能运行,已成为企业提升系统效率主要方法。KOS(KeyarchOS)作为面向企业级场景的国产服务器操作系统,深度整合了多种CPU隔离技术。本文基于KOS最新版本(2025年)的核心能力,深入解析CPU隔离技术、使用方式及典型应用场景。

Isolcpus隔离方式

Isolcpus 是Linux内核的一个启动参数,用于隔离指定的CPU核心,使其不被系统默认的进程调度器使用,一般在高性能计算、实时任务或低延迟场景下被广泛使用。其主要作用:隔离CPU核心给特定任务进程,禁止普通进程或系统进程自动调度到被隔离的CPU核心,减少特定任务进程的上下文的切换和干扰。

启用isolcpus隔离功能可以通过grubby命令完成。

grubby --update-kernel=ALL --args="isolcpus=<CPU列表>"

如隔离1,2,3核心可以使用以下命令

grubby --update-kernel=ALL --args="isolcpus=1,2,3"

设置后需要重启操作系统以使配置生效。再重启系统后可以查看当前系统的启动参数是否有isolcpus=1,2,3字样。

cat /proc/cmdline | grep isolcpus

通过 taskset 或 cpuset 将进程绑定到隔离的 CPU。

taskset -c 1,2,3 <your_command>

your_command替换成要执行的命令。

我们编写一个测试用例,该测试用例将生成一个进程,在进程中创建20个线程,每个线程完全占用CPU时间。在没有指定CPU核心的情况下,进程在被隔离的CPU核心外的核心上运行(图1所示),使用taskset后,进程在被隔离的CPU核心上运行(图2所示)。

图1 测试程序在被隔离的cpu核心之外运行,且占用CPU的利用率极高

图2 测试程序在隔离的CPU核心上运行,且占用CPU的利用率极高

要注意的是Isolcpus隔离CPU核心的方式并不能完全将所有的任务都排除在被隔离的CPU核心上。要使该功能达到目标最好同步使用nohz_full启动参数。并且在设置完成后还需要花点时间找到在被隔离的CPU核心上的中断和内核线程,将这些中断、内核线程到其它的CPU核心上。

cgroups/cpuset 动态隔离方式

Cpuset是Linux内核提供的一种资源管理机制,通过cgroups子系统将CPU和内存节点(NUMA)动态分配给特定任务组,实现资源隔离与精细化调度。使用 cpuset可以高效隔离CPU资源,将进程绑定到指定的CPU核心,避免资源争用,提升关键任务的性能稳定性。

以下是使用cpuset动态隔离进程的方法。

进入/sys/fs/cgroup/cpuset创建自定义的cpuset组

mkdir /sys/fs/cgroup/cpuset/testisolcpus

绑定testisolcpus的cpu集合。

echo 2-4 > /sys/fs/cgroup/cpuset/testisolcpus/cpuset.cpus

绑定进程到testisolcpus组中

cgexec -g cpuset:testisolcpus /path/to/application

依旧采用上述测试用例,可以发现进程在cpu 2-4上运行(图3所示)。

图3 进程在testisolcpus组的cpu中运行且占用CPU的利用率极高

dyn_isolcpus的动态隔离方式

动态CPU隔离技术是相对于isolcpus静态隔离改进而来,该功能由龙蜥社区开发,支持系统运行时动态更改CPU隔离配置,适应运行时关键任务变化场景。

通过该方式设置隔离的CPU核心的过程中会更新进程的CPU亲和性掩码,检查进程当前CPU亲和性掩码,如果进程的亲和性掩码与当前设置的隔离策略冲突,系统将更新为新的掩码集合,以确保进程仅在允许的CPU集合上运行;会重建调度域,默认调度策略不再将任务调度到被隔离的CPU上;会设置无绑定工作队列的CPU执行掩码,对于无绑定工作队列(unbound workqueue)任务,系统会调整其CPU执行掩码,使得这些任务可以在任意可用的CPU上执行,避免被隔离的CPU限制,从而保持系统负载的均衡。

新增/proc/dyn_isolcpus配置接口,允许用户通过该接口设置隔离策略。例如,要隔离CPU核心2、3、4和5,可以写入“2,3,4,5”或“2-5”。

本次测试依旧采用上述测试用例,将8-10核心设置为隔离的CPU核心。

可以看到在不指定CPU核心的情况下运行测试用例,CPU核心8-10不再被调度任务(图4)。

图4 8-10核心不再被调度任务

总结

可以通过上面三种方式在KOS上使用CPU隔离功能,可显著提升关键业务的性能,能有效避免资源争用、减少上下文切换及硬件中断的干扰,从而降低关键任务的延迟波动,有效保障高优先级业务的服务质量,最大化硬件利用率,为高性能计算、边缘智能、实时控制等场景提供底层算力保障。

Ubuntu 18.04下用isolcpus隔离CPU核心的3种验证方法及避坑指南 本文详细介绍了在Ubuntu 18.04系统中使用isolcpus参数进行CPU核心隔离后的三种验证方法:检查内核启动参数、使用taskset工具解析进程亲和性以及进行负载压力测试。文章重点剖析了配置生效假象的成因,并提供了完整的避坑指南和自动化验证脚本,确保隔离真正生效,适用于对性能与确定性要求极高的实时系统场景。 阅读详情

相关推荐

FPGA设计中的扇出约束实战:从XDC到代码优化的全流程解析

本文全面解析FPGA设计中扇出约束的重要性与应用,详细介绍了从XDC约束文件设置到HDL代码优化的全流程实战技巧。通过MAX_FANOUT约束控制信号负载,结合寄存器复制和物理优化策略,有效解决高扇出导致的时序违例和布线拥塞问题,提升设计性能和可靠性。

nept的博客 797

isolcpus功能与使用

isolcpus功能存在已久,笔者追溯v2.6.11(2005年)那时内核就已经存在了isolcpus功能。根据kernel-parameters.txt 上的解释,”isolcpus功能用于在SMP均衡调度算法中将一个或多个CPU孤立出来。同时可通过亲和性设置将进程置于 “孤立CPU”运行,isolcpus后面所跟的cpu参数,可设置孤立0~最大CPU个数-1个cpu。这种方法是推荐使用的孤立cpu的方式,与手动设置每个任务的亲和性相比,后一种方式降低了调度器的性能”。 isolcpus带来的好..

weixin_39094034的博客 7563

3dsMax高效导入OSGB倾斜模型的3个关键步骤与插件应用

本文详细解析了在3dsMax中高效导入OSGB倾斜模型的三个核心步骤:建立索引、处理贴图路径以及选择合适的插件。针对导入过程中常见的模型崩溃、贴图丢失和操作卡顿问题,提供了从数据结构理解到插件选型的实战解决方案,帮助用户实现大规模实景模型在3dsMax中的流畅导入与编辑。

weixin_29238147的博客 469

Linux实时任务性能优化

Linux实时任务独占cpu核

dufengcan的博客 3187

深入排查127.0.0.1拒绝连接:从端口占用到Tomcat服务启动的完整解决方案

本文针对开发者访问127.0.0.1时遭遇“拒绝连接”的常见问题,提供了一套完整的排查与解决方案。文章从端口占用检查入手,详细讲解了使用netstat命令识别进程,并深入分析了服务监听地址、IPv6配置、防火墙以及Tomcat服务安装与启动等核心环节。通过实战演练,指导读者系统性地解决从网络层到应用层的各类连接问题,最终确保本地服务成功运行并可通过本地回环地址正常访问。

weixin_29279047的博客 3188

BCC Python开发教程&常用BCC工具(一)

这个教程主要目的是展示如何使用python来进行bcc工具开发和编程。教程主要分为两个部分:可观察性和网络。文中的代码片段均都来自于bcc:代码片段的licenses见bcc中具体文件。也可参考bcc开发者手册以及end-users工具教程:。此外bcc还开放有lua接口。

hudongliang2006nb的专栏 2086

通过isolcpu参数隔离cpu

通过修改/etc/default/grub配置文件中的isolcpu参数,隔离cpu。

boss-dog 3263

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 405

核心业务上云,如何释放国产 CPU 极致性能?专有云 ABC Stack 给出答案

性能要求较低的业务则可关闭所有性能优化措施,充分利用碎片化资源,从而最大化提升云平台的资源利用率。实施以上优化方案,客户的国产 CPU 专有云整体性能显著提升:业务平均 TPS 增加 36%,核心业务平均 TPS 增加 64%,实现了业务全面上国产化 CPU 云的目标。通过实施以上优化方案,客户的国产 CPU 专有云整体性能显著提升:业务平均 TPS 增加 36%,核心业务平均 TPS 增加 64%,帮助客户实现业务全面上国产化 CPU 云的目标,满足各类业务的性能需求,提升了云平台的资源利用率。

2301_82040283的博客 1089

SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS)

SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS)

我好像病了的博客 2449

ruoyi-vue-pro集成magic-api(图文代码)

原先写过简单的集成:了解 magic-api的基本用法 附实战代码 magic-api相关文档推荐阅读:接口鉴权 相关的Java代码推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 【Java项目】实战CRUD的功能整理(持续更新)

码农研究僧的博客 7万+

软件性能之CPU

摘要: 本文从硬件视角探讨软件性能优化,强调高性能的核心在于最大化硬件资源利用率。现代CPU的多核、缓存和流水线设计为性能优化提供了基础,但需结合软件设计充分利用这些特性。建议通过合理设置线程数量、优化缓存命中率(如减少线程切换、连续内存访问)、避免多线程数据竞争及提升分支预测准确性等手段提升CPU效率。文章指出,性能优化应贯穿开发全周期,而非后期补救。本文作为CPU性能优化篇,后续将探讨IO优化等其他维度。(150字)

ConstCpp的博客 1226

高精度地图数据的结构

本文是个人在学习高精度地图数据结构的心得,主要是描述高精度地图的几层数据结构以及元数据信息。

qq_40664711的博客 5575

架构能力深化提升系统资源利用率

架构能力深化提升系统资源利用率

Winter的博客 1141

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

openEuler资源利用率提升之道 03:rubik混部引擎简介

​ 在云上业务类型和硬件资源越来越丰富的背景下,对云原生系统提出了更高的管理要求,例如在概论[1]中提到的资源利用率问题,服务质量保障问题,黑盒泛化问题,异构算力效率问题等等。为了让多样性业务和算力混部系统以最佳状态运行,Rubik混部解决方案应运而生,在Rubik解决方案中,包括了集群感知调度、单机混部引擎(rubik)和内核隔离技术等多层次优化系统。本文是对rubik混部引擎的概要性介绍。

openEuler_的博客 1859

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Async-Http-Client CPU亲和性配置:提升多核性能的终极指南

在现代高并发应用中,**async-http-client**作为Java生态中强大的异步HTTP客户端库,其性能表现直接影响着系统的吞吐量和响应时间。特别是在多核服务器环境下,合理的CPU亲和性配置能够显著提升网络IO处理效率,让您的应用发挥出硬件的最佳性能。🔥 ## 理解CPU亲和性的重要性 CPU亲和性(CPU Affinity)是指将特定进程或线程绑定到特定的CPU核心上执行的技术。

gitblog_00161的博客 814

SGLang如何提升GPU利用率?三级缓存是关键

本文介绍了基于星图GPU平台自动化部署SGLang-v0.5.6镜像的方案,结合三级缓存架构显著提升大模型推理效率。该镜像支持KVCache分级存储与RadixAttention优化,在多轮对话场景中实现高吞吐、低延迟的AI应用开发,有效提高GPU利用率至65%以上。

weixin_35949153的博客 377

Codis集群成本优化:资源利用率提升与成本降低策略

你是否还在为Codis集群资源利用率低下而烦恼?是否想在保证性能的同时显著降低硬件成本?本文将从架构优化、配置调优、自动化运维三个维度,带你掌握Codis集群的成本控制方法,让每一分硬件投入都产生最大价值。读完本文你将学会:识别集群资源浪费点、配置参数优化技巧、自动化扩缩容实现方法,以及通过拓扑调整提升资源利用率的实战方案。 ## Codis集群架构与资源消耗分析 Codis作为分布式Redi...

gitblog_00465的博客 881
上一篇: KOS(KeyarchOS操作系统)+VLLM测试deepseek基准性能
下一篇: 【浪潮信息KeyarchOS (KOS)】手把手教你用lzbench:一文搞懂开源LZ77/LZSS/LZMA压缩器内核基准测试
KeyarchOS
博客等级 码龄3年 1312粉丝 339原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值