首页 > 系统相关 >【linux】把进程绑定到特定cpu核上运行

【linux】把进程绑定到特定cpu核上运行

时间:2023-09-12 18:48:38浏览次数:35  
标签:核上 绑定 cpu taskset linux 进程 CPU

目的

某个进程需要较高的运行效率时,就有必要考虑将其绑定到单独的核上运行,以减小由于在不同的核上调度造成的开销。
把某个进程/线程绑定到特定的cpu核上后,该进程就会一直在此核上运行,不会再被操作系统调度到其他核上。但绑定的这个核还是可能会被调度运行其他应用程序的。

命令

查看 CPU 的数量

cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l

这个命令会读取 /proc/cpuinfo 文件,并使用 grep 命令查找包含 "physical id" 字符串的行,然后使用 sort 命令和 -u 参数对结果进行排序并去重,最后使用 wc 命令统计行数,即为 CPU 的数量。

需要注意的是,这个命令只能统计物理 CPU 的数量,如果系统中存在超线程或者多核 CPU,那么实际的 CPU 核心数量会比统计结果大。如果需要查看 CPU 核心数量,可以使用以下命令:

查看CPU核心数量

cat /proc/cpuinfo | grep "processor" | wc -l

需要注意的是,这个命令会统计所有的 CPU 核心,包括超线程和多核 CPU 中的虚拟核心。

查看进程ID

# ps -ef | grep vgw
root      11397  51918  0 17:36 pts/0    00:00:00 ./vgw-agent
root      11847  51918  0 17:37 pts/0    00:00:00 grep --color=auto vgw

查看进程绑定cpu情况

# taskset -p pid
pid 2726's current affinity mask: 6

显示的十进制数字6--->转换为2进制是110,每个1对应一个cpu,所以进程运行在1号和2号cpu上(cpu从0开始)

启动时绑定

启动时绑定到第二个cpu:

taskset -c 1 ./agent &

启动时绑定到第1个、第3个cpu:

taskset -c 0,2 ./agent &

启动后绑定

按CPU数直接绑核

#命令格式
taskset -cp cpu-list pid

其中cpu-list是数字化的cpu列表,从1开始。多个不连续的cpu可用逗号连接,连续的可用短线连接,比如1,2,5-11等。

将进程9865绑定到#1、#2、#5、#11号核上面:

taskset -cp 1,2,5,11 9865

将进程9865绑定到#1、#2、#5~#11号核上面:

taskset -cp 1,2,5-11 9865  

注意,cpu的标号是从0开始的,所以cpu1表示第二个cpu(第一个cpu的标号是0)。

掩码形式绑核

#命令格式
taskset -p mask pid

按照二进制形式,从最低位到最高位代表物理CPU的#0、#1、#2、……、#n号核。
比如:0x00000001代表CPU的0号核,0x00000003代表CPU的0号和1号核。
需要注意的是,并非掩码中给出的CPU核就一定会存在,比如0x00000400理论上代表CPU的10号核,但是该核在真正的计算机上面并不一定是存在的。而且,如果我们试图将物理上并不存的核绑定给某个进程时,会返回错误。

标签:核上,绑定,cpu,taskset,linux,进程,CPU
From: https://www.cnblogs.com/dingwc/p/17697448.html

相关文章

  • Linux 中的 /dev/random 和 /dev/urandom 是什么?
    在Linux系统中,/dev/random和/dev/urandom是两个特殊的设备文件,用于生成随机数。在本文中,我们将深入探讨这两个设备文件的区别,以及它们在Linux系统中的作用。/dev/random/dev/random是一个随机数生成器设备文件,用于生成高质量的随机数。它通过收集系统上的环境噪声(例如硬件噪声,磁......
  • 如何在 Linux 中为现有用户创建主目录?
    在Linux系统中,每个用户都有一个主目录,通常称为home目录,用于存储用户的个人文件和配置信息。然而,有时候我们会创建一个新的用户,但是忘记或者没有选择为其创建一个主目录。在这种情况下,我们需要为现有用户创建主目录。本文将介绍如何在Linux中为现有用户创建主目录。了解主目录在Li......
  • linux 中删除文件的倒数第二列
     001、方法1[root@pc1test03]#lsa.txt[root@pc1test03]#cata.txt##测试数据01020304050607080910111213141516171819202122......
  • 5、linux命令之`tail`
    目录linux命令之tail1、语法2、参数3、实例linux命令之tail用来打印日志,可以指定后面多少行输出。1、语法tail[参数][文件]2、参数选项说明-f循环读取-q不显示处理信息-v显示详细的处理信息-c<数目>显示的字节数-n<行数>显示文件的尾部n行......
  • CentOS Linux 7安全基线检查
    检查密码重用是否受限制 |  身份鉴别描述强制用户不重用最近使用的密码,降低密码猜测攻击风险检查提示--加固建议在/etc/pam.d/password-auth和/etc/pam.d/system-auth中passwordsufficientpam_unix.so这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了r......
  • bilibili B站:makefile 编译Linux C/C++项目快速入门
    视频摘自:https://www.bilibili.com/video/BV1vg41177zT    ......
  • Linux安全加固
    1、设置复杂密码  :服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂密码2、设置密码策略   :修改文件/etc/login.defs     PASS_MAX_DAYS99999   密码的有效期:99999基本上表示永久有效    PASS_MIN_DAYS0     表示自上次修......
  • Linux禁用root用户
    1、背景描述出于安全考虑,需要禁止使用root用户通过ssh远程登录Linux禁用root用户远程登录后,需要提供一个权限用户用于ssh远程登录2、创建拥有sudo权限的用户2.1、创建一个普通用户rainuseradd命令用于创建一个用户,选项-m表示创建用户的主目录,-c表示添加注释us......
  • linux 中 删除文件的最后一列以及若干列
     001、[root@pc1test03]#lsa.txt[root@pc1test03]#cata.txt##测试数据01020304050607080910111213141516171819202122232......
  • Jmeter ServerAgent 修改端口,linux
     编辑serverAgent.sh,在后面加上  --udp-port端口--tcp-port端口比如  参考:https://blog.csdn.net/lemon_linaa/article/details/89963904......