绑定进程的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

CMOS中的 latch-up 闩锁效应、添加tap解决latch-up、使用combained area绘制TAP TAP的作用 IC后端版图【VLSI】

本文详细阐述了闩锁效应latch-up问题、如何通过添加Tap来解决。详细讲述了如何通过combained area来绘制TAP

Jie_MSD的博客 1万+

线程/进程和核绑定(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万+

从服装打版到激光切割:二维异形件排版算法在实际生产中的避坑指南

本文深入探讨二维异形件排版算法在服装、家具等行业的实际应用,对比NFP和重叠移除两种核心策略的优缺点,并提供算法落地的五大实战陷阱与解决方案。通过案例分析和技术要点解析,帮助生产管理者提升材料利用率5%-15%,优化生产效率。

weixin_28717431的博客 416

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

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

HandsomeJacky的博客 4080

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 325

ESP32 LVGL开发板例程使用记录:自制常用汉字字库(二)

1、将下载的文件移入工程文件中 ,路径为项目文件中 ”......\lib\lvgl\src\font“文件夹下。3、修改字库配置文件,文件名为lv_conf.h中的内容,向其中加入下面内容(位置可搜索注释块来找到地方)修改完成可以编译试试,看是否成功,如字库较大时编译出错,请使能:LV_FONT_FMT_TXT_LARGE。2、打开此文件,修改包含头文件的路径,不然会报错,修改方法可对照自己库中其他字库文件中的包含路径。导入完成后在VSCode工程中可以查看到此文件。上次说完了如何制作 字库.c 文件。

qq_43279097的博客 1956

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

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

yyz916的博客 4661

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

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

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

John的博客 4407

单机多环境部署apollo 2.3.0

理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在

Life is a starting point everywhere 1299

大模型的安全发展与安全治理

2022 年底,OpenAI 推出的 ChatGPT 在文本生成领域实现了重大突破,引领了大模型技术的发展方向,推动了各式各样的基座大模型及行业大模型的发展,并逐步向多模态和具身化方向迅速演进。显然,大模型展现出的强大能力为人工智能通用化揭开了序幕。然而,大模型技术的安全性也面临着生成内容的安全性、伦理道德等重大挑战。只有积极确保大模型的安全性,才能更有效地推动其持续发展,进而更好地应对大模型技术变革所带来的机遇与挑战。

qq_41432686的博客 2582

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

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

makou_yuan的博客 3752

《Python等级认证CCF-GESP真题解析》专栏总目录

❤️ 专栏名称:《🌸 专栏介绍:中国计算机学会GESP《CCF编程能力等级谁》Python编程(1~8级)历届真题解析。🚀 订阅专栏:订阅后可阅读专栏内所有真题解析,真题持续更新中,限时9.9元,欢迎订阅!

人生就是一个不断学习的过程 1878

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

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

chen_znn的博客 2491

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

weixin_45565886的博客 5018

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 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、付费专栏及课程。

余额充值