Linux实现CPU物理隔离

文章目录

  • 背景
  • 使用 taskset 命令
  • 使用 cgroups
  • 案例

背景

在 Linux 上实现 CPU 的物理隔离(也称为 CPU 隔离或 CPU pinning),可以通过将特定的任务或进程绑定到特定的 CPU 核心来实现。这可以提高系统性能,尤其是在需要实时响应的应用中。以下是几种实现方法。

使用 taskset 命令

taskset 命令可以将进程绑定到指定的 CPU 核心。

1.启动新进程并绑定到特定 CPU 核心:

taskset -c 0,1 <command>

例如,绑定到 CPU 0 和 1:

taskset -c 0,1 my_program

2.将已有进程绑定到特定 CPU 核心:
获取进程的 PID:

ps -ef | grep my_program

然后使用 taskset 绑定:

taskset -cp 0,1 <PID>

使用 cgroups

cgroups(控制组)可以更灵活地管理系统资源,包括 CPU 核心的分配。

1.创建 cgroup 并设置 CPU 核心限制:

sudo cgcreate -g cpuset:/mygroup
sudo cgset -r cpuset.cpus="0-1" mygroup
sudo cgset -r cpuset.mems="0" mygroup

2.将进程加入 cgroup:启动新进程

sudo cgexec -g cpuset:mygroup my_program

3.将已有进程加入 cgroup:
获取进程的 PID:

ps -ef | grep my_program

然后将 PID 写入 cgroup 的 tasks 文件:

sudo sh -c 'echo <PID> >

案例

linxu是8核16线程,指定特定python脚本运行特定CPU,实现CPU的物理隔离.

使用 taskset 绑定 Python 脚本到特定 CPU 核
确定要绑定的 CPU 核:例如,如果你想将脚本绑定到第0和第1个CPU核,可以使用CPU编号0和1。

使用 taskset 运行 Python 脚本:假设你的Python脚本是script.py,可以使用以下命令将其绑定到CPU核0和1:

taskset -c 0,1 python3 script.py

这将会确保script.py只在CPU核0和1上运行。

如果你想更精细地控制绑定到特定的超线程,可以使用类似的方法。例如,假设你想将脚本绑定到超线程0、1、2和3,可以使用以下命令:

taskset -c 0,1,2,3 python3 script.py

检查绑定情况
可以使用htop或top命令来查看进程的CPU使用情况,并确认进程确实绑定到了指定的CPU核。

假设有8个脚本,脚本以process_split_{}.py命名,linux有16个CPU,每个脚本按照顺序绑定2个CPU,实现物理隔离,这样每个脚本只使用2个CPU同时运行任务,互相隔离。

创建Shell脚本:
新建一个名为run_scripts.sh的Shell脚本,内容如下:

bash
复制代码
#!/bin/bash# 绑定CPU核并运行脚本
taskset -c 0,1 python3 process_split_0.py &
taskset -c 2,3 python3 process_split_1.py &
taskset -c 4,5 python3 process_split_2.py &
taskset -c 6,7 python3 process_split_3.py &
taskset -c 8,9 python3 process_split_4.py &
taskset -c 10,11 python3 process_split_5.py &
taskset -c 12,13 python3 process_split_6.py &
taskset -c 14,15 python3 process_split_7.py &

赋予Shell脚本执行权限:
在终端中运行以下命令,赋予Shell脚本执行权限:

chmod +x run_scripts.sh

运行Shell脚本:
现在可以运行这个Shell脚本,它将按照顺序启动所有Python脚本并绑定到指定的CPU核上:

./run_scripts.sh

python代码

import subprocess# 定义脚本名称和绑定的CPU核对
scripts_and_cpus = [("process_split_0.py", "0,1"),("process_split_1.py", "2,3"),("process_split_2.py", "4,5"),("process_split_3.py", "6,7"),("process_split_4.py", "8,9"),("process_split_5.py", "10,11"),("process_split_6.py", "12,13"),("process_split_7.py", "14,15"),
]# 启动每个脚本并绑定到指定的CPU核
for script, cpus in scripts_and_cpus:command = ["taskset", "-c", cpus, "python3", script]subprocess.Popen(command)print("所有脚本已启动并绑定到指定的CPU核。")

当然使用cgroups 也可以实现对内存进行隔离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Poincaré图和SD2计算参考

在Poincar图分析中&#xff0c;SD2代表心率变异性的长期变化&#xff0c;它测量NN间期数据点沿着Poincar图主对角线方向的分散程度。SD2描述了NN间期的整体波动&#xff0c;通常更多地关联于自主神经系统的调节和生理应激反应。 如何计算 Poincar SD2 Poincar图将每个心跳间期…

JavaWeb__正则表达式

目录 1. 正则表达式简介2. 正则表达式体验2.1 验证2.2 匹配2.3 替换2.4 全文查找2.5 忽略大小写2.6 元字符使用2.7 字符集合的使用2.8 常用正则表达式 1. 正则表达式简介 正则表达式是描述字符模式的对象。正则表达式用于对字符串模式匹配及检索替换&#xff0c;是对字符串执行…

MYSQL 四、mysql进阶 8(索引优化与查询优化)

都有哪些维度可以进行数据库调优&#xff1f;简言之&#xff1a; 索引失效、没有充分利用到索引——建立索引关联查询太多JOIN&#xff08;设计缺陷或不得已的需求&#xff09;——SQL优化服务器调优及各个参数设置&#xff08;缓冲、线程数等&#xff09;——调整my.cnf数据过…

Linux io_uring

io_uring是Linux 内核提供的用于处理大量并发 I/O 事件的机制&#xff0c;在性能上优于epoll。 主要优势有&#xff1a; &#xff08;1&#xff09;无锁设计&#xff1a; io_uring&#xff1a;提供了无锁的用户空间和内核空间通信机制&#xff0c;这意味着在高并发场景下&am…

Linux C++ 047-设计模式之责任链模式

Linux C 047-设计模式之责任链模式 本节关键字&#xff1a;Linux、C、设计模式、责任链模式 相关库函数&#xff1a; 简介 责任链模式是面向对象中的一种软件设计模式&#xff0c;它包含了一些命令对象和一些处理对象&#xff0c;每个处理对象决定它能处理那些命令对象&…

C++中各类常用算法的总结以及使用

1.常用算法 文章目录 1.常用算法1.常用遍历算法1.for_each2.transform 2.常用查找算法1. find2. find_if3. adjacent_find4. binary_search5. count6. count_if 3.常用排序算法1. sort2. random_shuffle3. merge4. reverse 4.常用拷贝和替换算法1. copy2. replace3. replace_if…

如何在Vue中实现拖拽功能?

Vue.js是一款流行的JavaScript框架&#xff0c;用于构建用户界面。其中一个常见的需求是在Vue中实现拖拽功能&#xff0c;让用户可以通过拖拽元素来进行交互。今天&#xff0c;我们就来学习如何在Vue中实现这一功能。 首先&#xff0c;我们需要明白拖拽功能的基本原理&#xf…

一元非线性回归+多元线性回归

一元非线性回归 观察散点图&#xff0c;确定非线性形式&#xff0c;然后将非线性转化为线性求解。 常见的六类曲线&#xff1a; &#xff08;1&#xff09;双曲函数曲线 { y ^ x a b x y ^ a b x x y ^ 1 a b x \begin{cases} \hat{y}\frac{x}{abx}\\ \hat{y}\frac{abx…

【selenium】元素等待

【selenium】元素等待 1、三种元素等待的区别2、sleep等待3、隐式等待4、显示等待4.1 WebDriverWait类4.2 expected_conditions类 1、三种元素等待的区别 特点sleep隐式等待显示等待原理不论网页/元素是否加载完成&#xff0c;都会强制等待x秒设置一个等待时间&#xff0c;等待…

Java 修改微信公众号后台服务器地址URL后,微信公众平台客服功能接收不到用户发送的消息的解决办法

解决办法&#xff1a; 检查一下微信回调URL是否转发了客服消息。 /*** 处理具体的回调信息*/ PostMapping("/callback") public void callback(RequestParam(name "signature", required false) String signature,RequestParam(name "timestamp&q…

centos系统查找mysql的配置文件位置

执行命令查找mysql的安装目录&#xff1a; which mysql cd进入mysql的安装目录 cd /usr/bin 查找配置文件位置 ./mysql --help | grep "my.cnf" 定位配置文件 cd /etc 查找命令还可以用find命令 find / -name "my.cnf"

iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索

场景 我们有时候会遇到这样的一个交互场景&#xff1a;我们有一个UITableView 放在一个弹窗中&#xff0c;这个弹窗可以通过滑动进行展示和消失&#xff08;跟手滑动的方式&#xff09;&#xff0c;然后这个UITableView放在弹窗中&#xff0c;并且可以滚动&#xff0c;展示一些…

用微信服务号支付门诊缴费

时间上午10刚过&#xff0c;医院里计价收费处排起了长龙&#xff0c;放眼望去&#xff0c;左边的窗口六条队。右边在原来发药的位置也开辟了收费窗口&#xff0c;数了一下有四条队。一共十条排队付费的长龙&#xff0c;每一条队伍的人数不下20人&#xff0c;也即超过200人在排队…

百度智能云将大模型引入网络故障定位的智能运维实践

物理网络中&#xff0c;某个设备发生故障&#xff0c;可能会引起一系列指标异常的告警。如何在短时间内从这些告警信息中找到真正的故障原因&#xff0c;犹如大海捞针&#xff0c;对于运维团队是一件很有挑战的事情。 在长期的物理网络运维工作建设中&#xff0c;百度智能云通…

【linux】linux的特殊符号

特殊字符用途示例,参数分隔符或命令分隔符git log --prettyformat:"%h,%an,%ar,%s"/文件路径分隔符&#xff0c;根目录cd /home/user/documents\转义字符&#xff0c;行继续echo "This is a long command \定义字符串&#xff0c;不解析变量和转义字符echo Hell…

探索 Postman API 网络图:可视化 API 交互的窗口

引言 在当今快速发展的软件开发领域&#xff0c;API&#xff08;应用程序编程接口&#xff09;扮演着至关重要的角色。Postman&#xff0c;作为业界领先的 API 开发工具&#xff0c;提供了一个强大的功能——API 网络图&#xff0c;它可以帮助开发者以图形化的方式理解和分析 …

【前端从入门到精通:第十一课: JS基本语法】

独闯JavaScript 了解JavaScript 为什么学习JavaScript JavaScript 是 web 开发者必学的三种语言之一&#xff1a; HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 我们学习 JavaScript&#xff0c;以及 JavaScript 如何与 HTML 和 CSS 协同工作的知…

数字力量助西部职教全面提升——唯众品牌大数据、人工智能系列产品中标甘肃庆阳职院数字经济人才培养基地!

近日&#xff0c;唯众品牌凭借在大数据和人工智能领域深耕多年的技术积累和卓越产品&#xff0c;成功中标庆阳职业技术学院全国一体化算力网络国家枢纽节点数字经济人才培养基地项目&#xff0c;标志着唯众在助力西部职业教育与数字经济融合发展的新征程上迈出了坚实的一步。 …

Data Guard高级玩法:failover备库后,通过闪回恢复DG备库

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG、Mongodb数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享…

怎样将aac转换mp3格式?推荐四个aac转MP3的方法

怎样将aac转换mp3格式&#xff1f;当需要将aac格式音频转换为MP3格式时&#xff0c;有几种方法可以轻松实现这一目标。MP3是一种广泛支持的音频格式&#xff0c;几乎所有设备和平台都能播放MP3文件&#xff0c;包括各种音乐播放器、手机、平板电脑和汽车音响系统。而且它也提供…