linux中进程与cpu核的绑定

简介: linux中进程与cpu核的绑定

一、cpu亲缘性

进程绑定CPU亲缘性,使得进程只能在指定的cpu上进行调度或者运行。

绑定cpu亲缘性的好处:每个CPU本身自己会有cache,如果调度到其他cpu上,CPU cache命中率就低了,设置CPU亲缘性,程序就会一直在指定的cpu运行,从而避免因切换带来的CPU的L1/L2 cache失效。从而进一步提高应用程序的性能。

二、fork用法

此图来源 linuxC中fork()函数详解

三、设置进程与cpu的亲缘性

#include <stdio.h>
#define __USE_GNU
#include <sys/syscall.h>
#include <unistd.h>
#include <pthread.h>
void process_affinity(int num) {
  //gettid();//和下面这行的一摸一样的用法
  pid_t selfid = syscall(__NR_gettid);//获取当前的pid
  cpu_set_t mask;//定义一个cpu集合
  CPU_ZERO(&mask);//初始化cpu集合
  CPU_SET(1, &mask);//将索引为1的cpu加入到cpu集合中(比如总过有4个cpu,那么0,1,2,3.   1就是第二个cpu)
  //selfid
  sched_setaffinity(0, sizeof(mask), &mask);//将当前线程与 cpu集合中的 cpu核设置亲缘cpu,也就是说只允许cpu集合中的cpu对该进程进行调度
  while(1) ;
}
int main() {
  // 4
  int num = sysconf(_SC_NPROCESSORS_CONF);//获取cpu核数
  int i = 0;
  pid_t pid = 0;
  for (i = 0;i < num/2;i ++) {//创建  cpu核数 一半的进程  来测试以下
    pid = fork();
    if (pid <= (pid_t)0) {//子进程,直接退出。 主进程继续循环,来创建子进程
      break;
    }
  }
  if (pid == 0) {//子进程中,它们当前的pid为0,也就是对子进程设置亲缘性
    process_affinity(num);
  }
  while (1) usleep(1);
}
相关文章
|
4天前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
|
2天前
|
存储 缓存 NoSQL
Redis 6.0 版本如何绑定不同的 CPU 核心给主线程、后台线程和后台进程
Redis 6.0 版本如何绑定不同的 CPU 核心给主线程、后台线程和后台进程
|
2天前
|
NoSQL Redis
为什么不建议随意绑定 Redis 到特定的 CPU 核心
为什么不建议随意绑定 Redis 到特定的 CPU 核心
|
10天前
|
Linux
Linux —— 进程间通信
Linux —— 进程间通信
16 1
|
15天前
|
Unix Linux
linux进程状态基本语法
linux进程状态基本语法
|
15天前
|
缓存 Linux 编译器
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
【Linux】多线程——线程概念|进程VS线程|线程控制(下)
30 0
|
15天前
|
存储 Linux 调度
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
【Linux】多线程——线程概念|进程VS线程|线程控制(上)
35 0
|
15天前
|
存储 NoSQL Unix
【Linux】进程信号(下)
【Linux】进程信号(下)
24 0
|
15天前
|
安全 Linux Shell
【Linux】进程信号(上)
【Linux】进程信号(上)
23 0
|
22天前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署