绑定进程的CPU核以及限制进程的CPU使用率

linux提高CPU使用率或限制进程CPU使用 cpulimit是一个开源的cpu使用限制工具,可以针对某个进程名、pid等来限制cpu使用率。当然也可以使用进程名限制进程的CPU使用率。,这样就可以使用cpulimit了。这样的报错,执行如下操作。 阅读详情

在测试程序的性能时,需要对进程运行的CPU进行绑定,甚至需要测试进程只使用部分CPU资源时能达到的性能。比如,你可能需要测试某程序在只用一个核的80%CPU资源时的延时。
本文主要总结采用taskset和cpulimit工具来实现目标。

1. 使用taskset绑定进程CPU

taskset使绑定进程CPU的工具,使用方式如下:

taskset -c 1 ./command. 执行command命令,并将command启动的进程绑定到第1个核上。
taskset -pc 3  pid    表示将进程pid绑定到第3个核上

网上很多人多用了上述命令绑定进程到一个核以后发现CPU占用率还是超了100%。这里原因是你当前的进程可能起了多个线程,是上述的方式就不能把线程也绑定进去。如果需要把该进程的所有线程都绑定到与线程相同的核上,需要添加参数a(a表示all)。使用姿势如下:

 taskset -a -pc 3 pid  表示将进程pid(包括所有线程)绑定到第3个核上

Tips: 如果想查看当前进程所属的CPU,可以用如下方式:

taskset -cp pid查看进程所属核

同理,如果还想更进一步查看线程的绑定关系,也需要添加a选项

taskset -acp pid查看进程及所有线程的所属核

通过以上方式完成进程在指定核上的绑定。

2. 使用cpulimit限制进程的CPU使用率

cpulimit源码下载地址:https://sourceforge.net/p/cpulimit/wiki/Home/
下载完成后编译

cd cpulimit-1.1
make
sudo cp cpulimit /usr/bin

cpulimit的使用非常简单:

cpulimit -p $pid -l 50  把进程pid的CPU资源使用率限制为不超过50%

Tips: 如果当前进程运行在多个核上,则cpulimit会限制一个核的使用率都为50%。

3. 测试

使用以上两个工具就能完成对程序限制CPU的性能测试,可编写一个简单的shell脚本实现,例子如下:

 ./benchmark_test  >result.txt 2>&1 &   #把测试程序放到后台运行
pid=$! #获取上一条指令的pid
#pid=$(pgrep -f "benchmark_test")
echo "benchmark pid: $pid"

taskset -acp 4 $pid
cpulimit -p $pid -l 10

最后,当CPU上同时运行很多任务时,也可以通过nice/renice改变进程的优先级来控制CPU资源的利用率,不过这样不能限制CPU的百分比。

Reference:
https://www.techforgeek.info/how_to_limit_cpu_usage.html
http://weyo.me/pages/techs/linux-get-pid/

linux中cgroup的简单使用 Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在Linux内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为cgroup,并且被合并到2.6.24版的内核中去。 阅读详情

相关推荐

【进程线程绑定CPU】总结

本文整合了网上关于这块讲解比较详细的文章,转载者请注明!

速度就是力量 6392

优化命令taskset详解

引言:我的Linode十分繁忙,在跑一些密集操作数据库的Rake任务时尤其如此。但我观察发现,Linode服务器的4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态。不了解Linux是如何调度的,但目前显然有优化的余地。除了处理正常任务,CPU#0还需要处理每秒网卡中断。因此,若能将CPU#0分担的任务摊派到其他CPU核心上,可以预见,系统的处理能力将有更大的提升。两个名词SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),

m0_58292366的博客 6287

dpdk之CPU绑定

Linux对线程的亲和性是有支持的,在Linux内核中,所有线程都有一个相关的数据结构,称为task_count,这个结构中和亲和性有关的是cpus_allowed位掩码,这个位掩码由n位组成,n代码逻辑核心的个数。 Linux内核API提供了一些方法,让用户可以修改位掩码或者查看当前的位掩码。 sched_setaffinity();   //修改位掩码,主要事用来绑定进程 sched_g...

liyu123__的博客 1万+

使用cpulimit来限制linux下进程的cpu利用率

参考文章: https://blog.youkuaiyun.com/loyachen/article/details/52167124apt-get install cpulimit两种方法,一个是直接在limit情况下运行: 另一种是先运行起来了,再根据进程号限制:

YuQiao0303的博客 1748

Docker 容器 CPU 核心绑定 (cpuset) 和 CPU 份额 (cpu-shares)

即使 CPU 0 和 CPU 1 被占满,容器也不会使用其他核心,限制效果完全生效。将容器绑定到 CPU 0 和 CPU 1,设置 CPU 份额为。同样绑定到 CPU 0 和 CPU 1,设置 CPU 份额为。中的任务为空闲,其余的 CPU 时间片可以被其他容器利用。键展开 CPU 核心信息,比如 CPU 0、CPU 1。的 2 倍,因此分配的 CPU 时间片比例是 2:1。设置容器 CPU 使用的权重,控制多容器竞争时的优先级。用于绑定容器到特定的 CPU 核心,实现性能隔离。键展开 CPU 核心信息。

lzping_719的专栏 1413

Android15车载音频进阶之audioserver绑定大核小核方案(一百五十八)

本篇目的:Android15车载音频进阶之audioserver绑定大核小核方案。

Android系统攻城狮 2172

Cpulimit - 控制进程的CPU使用率

是一个轻量级的工具,用于限制Linux系统中单个进程的CPU使用率。它可以有效地帮助您管理系统的资源,并确保关键进程不会被其他消耗大量CPU资源的进程所影响。 ## 功能和用途 Cpulimit 可以帮助您在以下场景中发挥作用: - **优化系统性能**:当您的系统中有某些进程过度占用CPU资源时,您可以使用cpulimit来限制这些进程的CPU使用率,从而提高整个系统的整体性能。 - **...

gitblog_00092的博客 2215

限制Java进程CPU使用率的多种方法

在以下场景中,限制 Java 进程的 CPU 使用率显得尤为重要:防止单个应用耗尽系统资源,影响其他关键服务;成本控制,在云环境中避免因资源超额使用产生额外费用;性能测试,模拟低配环境下的应用表现;故障隔离,当某个服务出现异常时减少影响范围。注意:此方法会影响系统中所有 Java 进程,包括 IDE、其他服务等,请谨慎使用。对于长期运行的Java服务,使用systemd是更优雅和可靠的方案。除了限制使用率,还可以通过 CPU 亲和性来实现物理隔离。对于需要更精细控制的场景,可以直接使用 cgroups。

全糖少冰我吃不了苦 173

限制进程的CPU使用率的工具cpulimit-快速开始

限制进程的CPU使用率的工具cpulimit-快速开始 官方git:https://github.com/opsengine/cpulimit CPULIMIT是一个限制进程的CPU使用率的工具(以百分比表示,不在CPU时间)。控制批处理作业是有用的,当您不希望它们吃太多CPU周期时。目标是防止进程运行超过指定的时间比。它不会更改漂亮的值或其他调度优先级设置,而是真实的CPU使用率。此外,它能够动态快速地适应整个系统负载。使用的CPU金额的控制完成将SigStop和Sigcont POSIX信号发送到进程。

西京刀客 2359

Linux进程CPU绑定优化与实践

多核处理器由两个或更多独立的处理器核心组成,这些核心共享缓存和其他资源,但能在同一芯片上独立执行计算任务。与单核处理器相比,多核处理器能在相同功耗下提供更高的处理能力。CPU亲和性是操作系统中用于控制进程或线程与特定CPU核心绑定的功能,以保证执行的连续性和数据的本地性,从而优化性能。它允许系统管理员和程序员决定哪些进程或线程应在特定的CPU核心上运行,或者不应在哪些核心上运行。为什么CPU亲和性重要呢?

weixin_42584507的博客 865

汽车软件工程师必看:ASPICE流程实战指南(附完整产物清单)

本文为汽车软件工程师提供ASPICE流程实战指南,详细解析如何搭建合规开发环境、各阶段文档产出清单及工具链整合策略。通过实战案例和模板资源,帮助团队高效实施ASPICE标准,提升软件开发质量与效率。

weixin_29230805的博客 469

线程/进程和核绑定(CPU亲和性)

文章目录前言一、CPU亲和性1 前言2 为何要手动绑定线程/进程到CPU核3 多进程和多线程在多核CPU上运行:4 应用场景举例二、Linux的CPU亲和性特征1 软亲和性2 硬亲和性3 硬亲和性使用场景三、查看CPU的核1 使用指令2 使用sysconf四、Linux操作系统中修改CPU亲和性的方法1 taskset1.1 获取进程pid:`ps`1.2 查看进程当前运行在哪个cpu上1.3 指定进程运行在cpu1上1.4 如何确认绑定成功1.5 启动程序时绑定cpu2 Linux API2.1 绑定进程

Antrn 1万+

顶刊级科研绘图技巧

顶刊级科研绘图技巧

2401_89571885的博客 1156

Linux:进程的CPU配置与线程的绑定操作

Linux下进程的CPU隔离配置和线程绑定,做了一个简单的学习了解。

HandsomeJacky的博客 4080

软考高级,信息系统项目管理师(高项)经验分享

软考高级,信息系统项目管理师(高项)经验分享 2020-12-21信息系统项目管理师(俗称高项)成绩出来了54,55,47,终于成为高级工程师了。 本文以编写整体管理论文的格式进行,将分为项目启动、项目计划、项目执行、项目检查、项目收尾5个过程回顾高项的考试历程,希望对其他同学有借鉴意义。个人觉得可能对于一次考不过的人参考价值比较大。 第一阶段、项目启动阶段Start——决定考哪个科目。 如图,高级资格的类型有:信息系统项目管理师、系统分析师、系统架构设计师、......

zcheva的专栏 5万+

【cocos2dx面试题干货】--2021年最新cocos2dx面试干货(引擎篇)

【cocos2dx面试题干货】--2020年度最新cocos2dx面试干货(引擎篇 ) 大家好,我是Lampard~~ 经过春招一番艰苦奋战之后,我终于是进入了心仪的公司。 今天给大家分享一下我在之前精心准备的一套面试知识。 由于我面试的岗位是cocos2dx的开发岗,今天就先给大家分享一下引擎方面的知识。 本人亲测80%的引擎相关题目都...

Lampard的博客 1万+

linux进程与线程的核绑定操作

linux进程与线程的核绑定操作

yyz916的博客 4661

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 243

限制CPU使用率:优先级,信号,cgroups,systemd

为了提升系统的整体效率,需要在不同的场景中控制进程的cpu使用率。控制进程cpu的使用率,实质上是控制进程在单位时间内的CPU时间片。常用的手段有利用进程优先级,信号,cgroup。 优先级 进程优先级、nice和权重之间的关系 目前,Linux内核默认实现了4种调度器,分别是deadline, realtime, CFS和idel。 进程能够获得多少CPU时间,和调度策略紧密相关。Linux支持...

John的博客 4407

Android 蓝牙——概述(一)

Profiles (蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles:MAP:(MessageAccessProfile),短信访问协议,允许设备间的信息交换,短信。使用场景:智能车载中同步短信等信息。HFP:(Hands-free Profile),电话免提协议,让蓝牙设备(如蓝牙耳机/车机)可以控制电话,如接听、挂断、拒接等。

小旭的专栏 3492

SAP FICO资产明细表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO资产明细表开发说明书(包括源代码,测试样例及FS)

我好像病了的博客 1467

深入解析Linux资源限制:绑核、cgroups 与 cpulimit 的全面指南

在高性能计算,实时系统或资源受限的嵌入式场景中,合理分配和管理CPU资源是优化系统性能的关键。本文围绕绑核(CPU Affinity),cgroups(Control Groups)和 cpulimit三大工具,详细介绍其原理,使用方法及适用场景,希望对你的系统优化工作有所增益。

makou_yuan的博客 3752

HDR 成像技术学习(三)—— LOFIC

LOFIC(Lateral Overflow Integration Capacitor,横向溢出集合电容)介绍,从像素结构到工作时序。

沧海一升的博客 9729

限制进程在特定CPU核上运行

本文记录了如何限制进程在特定CPU核上运行

chen_znn的博客 2491

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Linux CGroup资源限制(概念&限制进程CPU使用)

Linux CGroup资源限制(概念&限制进程CPU使用)

weixin_45565886的博客 5018

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: tensorflow batch_normalization的正确使用姿势
下一篇: 在tensorfow lite中对各op进行单元测试
IT修道者
IT修道者 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄17年 326粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值