当前位置: 首页 > news >正文

linux下绑定进程到指定CPU的操作方法

taskset简介

 # taskset 
Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]


Show or change the CPU affinity of a process.

Options:
 -a, --all-tasks         operate on all the tasks (threads) for a given pid
 -p, --pid               operate on existing given pid
 -c, --cpu-list          display and specify cpus in list format
 -h, --help              display this help
 -V, --version           output version information

The default behavior is to run a new command:
    taskset 03 sshd -b 1024
You can retrieve the mask of an existing task:
    taskset -p 700
Or set it:
    taskset -p 03 700
List format uses a comma-separated list instead of a mask:
    taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
    e.g. 0-31:2 is equivalent to mask 0x55555555

For more details see taskset(1).

查看cpu的核数

cat /proc/cpuinfo

root@w0112-virtual-machine:/home/w0112# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 158
model name	: Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz
stepping	: 10
microcode	: 0xde
cpu MHz		: 2304.000
cache size	: 8192 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat
bugs		:
bogomips	: 4608.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 158
model name	: Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz
stepping	: 10
microcode	: 0xde
cpu MHz		: 2304.000
cache size	: 8192 KB
physical id	: 2
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 22
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat
bugs		:
bogomips	: 4608.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 43 bits physical, 48 bits virtual
power management:

processor指出是第几个cpu处理器

root@w0112-virtual-machine:/home/w0112# cat /proc/cpuinfo  | grep processor
processor    : 0
processor    : 1

cpu cores指出每个处理器的核心数量

root@w0112-virtual-machine:/home/w0112# cat /proc/cpuinfo  | grep "cpu cores"
cpu cores    : 1
cpu cores    : 1

由此可以看出我的虚拟机有两个处理器,每个处理器有一个核

虚拟机可以通过如下设置配置

taskset使用

测试脚本bb.sh

#!/bin/sh
while [ 1 ]
do
date=`date`
echo "date:$date"
sleep 5
done

默认不绑定cpu

运行脚本

./bb.sh &

查看脚本程序的进程ID

root@w0112-virtual-machine:/home/w0112#  ps | grep bb.sh
  3037 pts/13   00:00:00 bb.sh

查看默认bb.sh绑定到那个核

语法:taskset -p PID

taskset -p 3037

root@w0112-virtual-machine:/home/w0112# taskset -p 3037
pid 3037's current affinity mask: 3

3表示默认使用了cpu0 cpu1

使用CPU编号绑定核

启动绑定到指定CPU

语法:taskset -c cpu-list PID

指定绑定到cpu0

root@w0112-virtual-machine:/home/w0112# taskset -c 0 ./bb.sh&
[2] 3175

查看进程运行在那个核

root@w0112-virtual-machine:/home/w0112# taskset -p 3175
pid 3175's current affinity mask: 1
 1表示cpu0

指定绑定到cpu0和cpu1

root@w0112-virtual-machine:/home/w0112# taskset -c 0,1 ./bb.sh &
[1] 3307

查看绑定结果

root@w0112-virtual-machine:/home/w0112# taskset -p 3307
pid 3307's current affinity mask: 3

3表示cpu0和cpu1  

启动后绑定

运行测试脚本

./bb.sh &

root@w0112-virtual-machine:/home/w0112# ./bb.sh &
[1] 3389

进程ID 3389

绑定到cpu0

语法: taskset -cp cpu PID

绑定到CPU0

root@w0112-virtual-machine:/home/w0112# taskset -cp 0 3389
pid 3389's current affinity list: 0,1
pid 3389's new affinity list: 0
默认绑定到两个核,修改之后绑定到CPU0

查看绑定结果

oot@w0112-virtual-machine:/home/w0112# taskset -p 3389
pid 3389's current affinity mask: 1
mask为1表示cpu0

绑定到cpu0和cpu1

绑定指令

root@w0112-virtual-machine:/home/w0112# taskset -cp 0,1 3389
pid 3389's current affinity list: 0
pid 3389's new affinity list: 0,1
affinity是从0开始 mask是从1开始

查看绑定结果

root@w0112-virtual-machine:/home/w0112# taskset -p 3389
pid 3389's current affinity mask: 3
mask 3表示cpu0和cpu1 对应二进制0011,即是cpu0和cpu1

使用mask形式绑定核

指令介绍

语法:taskset -p mask PID

按照二进制形式从最低为到最高位分别表示cpu的核的序号

0xffffffffffffffff :表示是64核

0x0000000000000001:表示是cpu的第1核

0x0000000000000007:表示是cpu的第1、2、3个核

绑定cpu的两个核

root@w0112-virtual-machine:/home/w0112# taskset -p 0x3 3389
pid 3389's current affinity mask: 3
pid 3389's new affinity mask: 3

查看绑定结果

root@w0112-virtual-machine:/home/w0112# taskset -p 3389
pid 3389's current affinity mask: 3

判断进程目前分配到cpu ID

ps -o pid,psr,comm -p <PID>

root@w0112-virtual-machine:/home/w0112# ps -o pid,psr,comm -p 3389
   PID PSR COMMAND
  3389   0 bb.sh
表示进程bb.sh目前在cpu0上运行,PSR显示的是当前运行在的核的编号,如果没有绑定cpu,可能会出现运行在1上,这个由内核调度来完成的


 


 


 

相关文章:

linux下绑定进程到指定CPU的操作方法

taskset简介 # taskset Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]] Show or change the CPU affinity of a process. Options: -a, --all-tasks operate on all the tasks (threads) for a given pid -p, --pid operate on ex…...

springboot+maven插件调用mybatis generator自动生成对应的mybatis.xml文件和java类

mybatis最繁琐的事就是sql语句和实体类&#xff0c;sql语句写在java文件里很难看&#xff0c;字段多的表一开始写感觉阻力很大&#xff0c;没有耐心&#xff0c;自动生成便成了最称心的做法。自动生成xml文件&#xff0c;dao接口&#xff0c;实体类&#xff0c;虽一直感觉不太优…...

C# 根据前台传入实体名称,动态查询数据

前言&#xff1a; 项目中时不时遇到查字典表等数据&#xff0c;只需要返回数据&#xff0c;不需要写其他业务&#xff0c;每个字典表可能都需要写一个接口给前端调用&#xff0c;比较麻烦&#xff0c;所以采用下面这种方式&#xff0c;前端只需传入实体名称即可&#xff0c;例…...

Netty入门学习

目录 为什么要学习nettynetty学习导图学习netty前需要知道的知识I/O模型主要I/O模型 netty框架的整体结构netty的逻辑架构网络通信层事件调度层服务编排层 为什么要学习netty Netty是由JBOSS提供的一个Java开源框架&#xff0c;现为Github上的独立项目。Netty本质是一个NIO框架…...

代客泊车对HUT功能交互规范

目录 1. 版本记录... 7 2. 文档范围和控制... 8 2.1 目的/范围... 8 2.2 文档冲突... 8 2.3 文档授权... 8 2.4 文档更改控制... 8 3. 系统组成... 9 3.1 IPAS系统&#xff08;环视和超声波雷达&#xff09;...…...

mysql的update_time

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50) NOT NULL,age INT,update_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间 );具体解释如下&#xff1a; DEFAULT CURRENT_TIMESTAMP: 这部分表示当插入…...

避免安装这5种软件,手机广告频繁弹窗且性能下降

在我们使用手机的日常生活中&#xff0c;选择合适的应用软件对于保持良好的使用体验至关重要。然而&#xff0c;有些软件可能会给我们带来不必要的麻烦和困扰。特别是那些频繁弹窗广告、导致手机性能下降的应用程序&#xff0c;我们应该尽量避免安装它们。 首先第一种&#xf…...

kafka-事务

1. 事务的5个API // 1初始化事务 void initTransactions();// 2开启事务 void beginTransaction() throws ProducerFencedException;// 3在事务内提交已经消费的偏移量&#xff08;主要用于消费者&#xff09; void sendOffsetsToTransaction(Map<TopicPartition, OffsetAn…...

【安装】阿里云轻量服务器安装Ubuntu图形化界面(端口号/灰屏问题)

阿里云官网链接 https://help.aliyun.com/zh/simple-application-server/use-cases/use-vnc-to-build-guis-on-ubuntu-18-04-and-20-04 网上搜了很多教程&#xff0c;但是我没在界面看到有vnc连接&#xff0c;后面才发现官网有教程。 其实官网很详细了&#xff0c;不过这里还是…...

Python 扩展 快捷贴士:os模块下的创建目录的方式

Python3 os.makedirs() 方法 概述 os.makedirs() 方法用于递归创建多层目录。 如果子目录创建失败或者已经存在&#xff0c;会抛出一个 OSError 的异常&#xff0c;Windows上Error 183 即为目录已经存在的异常错误。 如果第一个参数 path 只有一级&#xff0c;即只创建一层目…...

Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明

目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfsHi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs 介绍 恩兔N2是一个家庭存储的系列产品, NS-1 是其中体积…...

redis缓存雪崩和缓存击穿

目录 缓存雪崩 解决方案&#xff1a; 缓存击穿 ​解决方案 缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 解决方案&#xff1a; u 给不同的 Key 的 TTL 添加随机值 u 利用 Redis …...

计算机网络(5) --- http协议

计算机网络&#xff08;4&#xff09; --- 协议定制_哈里沃克的博客-CSDN博客协议定制https://blog.csdn.net/m0_63488627/article/details/132070683?spm1001.2014.3001.5501 目录 1.http协议介绍 1.协议的延申 2.http协议介绍 3.URL 4.urlencode和urldecode 2.HTTP协…...

ubuntu 硬盘操作

查看移动硬盘的文件系统名 以及空间使用情况 df -hl查看硬盘的格式类型&#xff0c;以及挂载位置 df -T挂载硬盘 fdisk -l #查看磁盘信息 mount -o rw /dev/sdb1 /home/test # 挂载硬盘-o 指定挂载文件系统时的选项 ro 以只读方式挂载 rw 以读写方式挂载 注意&#xff1a;…...

C#垃圾回收器GC、析构函数(Finalize 方法)和Dispose

1、垃圾回收器GC GC&#xff08;Garbage Collection)是.NET中的垃圾回收器。以应用程序的root为基础&#xff0c;遍历应用程序在Heap上动态分配的所有对象&#xff0c;通过识别它们是否被引用&#xff0c;来确定哪些对象是已经死亡的&#xff0c;哪些仍需要被使用。已经不再被…...

第20周 服务容错-Hystrix

RabbitMQ 安装 1. 首先在Linux上进行一些软件的准备工作&#xff0c;yum下来一些基础的软件包 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel 2. 下载RabbitMQ所需软件包&#xff08;本神在这里使用的是 RabbitM…...

浏览器不同源的页面之间如何跨域通信

目录 1&#xff0c;需求2&#xff0c;难点3&#xff0c;思路浏览器不同源的页面之间如何跨域通信&#xff1f; 4&#xff0c;实现第1版第2版最终版其他的问题1&#xff0c;页面路径需完全一致。2&#xff0c;事件注册问题 1&#xff0c;需求 现在有2个项目&#xff0c;页面路径…...

【云原生】K8S二进制搭建三:高可用配置

目录 一、部署CoreDNS二、配置高可用三、配置负载均衡四、部署 Dashboard 一、部署CoreDNS 在所有 node 节点上操作 #上传 coredns.tar 到 /opt 目录中 cd /opt docker load -i coredns.tar在 master01 节点上操作 #上传 coredns.yaml 文件到 /opt/k8s 目录中&#xff0c;部…...

HOT78-跳跃游戏

leetcode原题链接&#xff1a;跳跃游戏 题目描述 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1&#xff1a; 输入&#xff1a;nums [2,3,1,1,4] 输…...

HDFS中的NAMENODE元数据管理(超详细)

元数据管理 元数据是什么元数据管理概述内存元数据元数据文件fsimage内存镜像文件edits log编辑日志 namenode加载元数据文件顺序 元数据管理相关目录文件元数据相关文件VERSIONseen_txid 元数据文件查看&#xff08;OIV,OEV&#xff09;SecondaryNameNode介绍checkpoint机制SN…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...