linux下把进程/线程绑定到特定cpu核上运行?

发布网友 发布时间:2022-04-20 05:52

我来回答

3个回答

热心网友 时间:2023-08-30 13:49

你那个是系统下把CPU的核说钉在五河以下是比较好的,因为吧和内心压力非常大,发热量非常大。

热心网友 时间:2023-08-30 13:49

Linux提供一个接口,可以将进程绑定到特定的CPU:

#include <sched.h>

int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *mask);

int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask);

热心网友 时间:2023-08-30 13:49

使用taskset指令
获取进程pid
-> % ps
PID TTY TIME CMD
2683 pts/1 00:00:00 zsh
2726 pts/1 00:00:00 dgram_servr
2930 pts/1 00:00:00 ps
查看进程当前运行在哪个cpu上
-> % taskset -p 2726
pid 2726's current affinity mask: 3
显示的十进制数字3转换为2进制为最低两个是1,每个1对应一个cpu,所以进程运行在2个cpu上。
指定进程运行在cpu1上
-> % taskset -pc 1 2726
pid 2726's current affinity list: 0,1
pid 2726's new affinity list: 1
注意,cpu的标号是从0开始的,所以cpu1表示第二个cpu(第一个cpu的标号是0)。
至此,就把应用程序绑定到了cpu1上运行,查看如下:
-> % taskset -p 2726
pid 2726's current affinity mask: 2
启动程序时绑定cpu
#启动时绑定到第二个cpu
-> % taskset -c 1 ./dgram_servr&
[1] 3011
#查看确认绑定情况 《Linux就 该这么学》
-> % taskset -p 3011
pid 3011's current affinity mask: 2

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com