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);
}
相关文章
|
2天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
1天前
|
消息中间件 Unix Linux
Linux的学习之路:17、进程间通信(1)
Linux的学习之路:17、进程间通信(1)
13 1
|
1天前
|
存储 安全 Linux
Linux的学习之路:9、冯诺依曼与进程(1)
Linux的学习之路:9、冯诺依曼与进程(1)
13 0
|
6天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
7天前
|
监控 Linux
linux监控指定进程
请注意,以上步骤提供了一种基本的方式来监控指定进程。根据你的需求,你可以选择使用不同的工具和参数来获取更详细的进程信息。
14 0
|
8天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
101 2
|
11天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
20 3
|
15天前
|
监控 Java Linux
linux下监控java进程 实现自动重启服务
linux下监控java进程 实现自动重启服务
|
16天前
|
监控 Linux Shell
初识Linux下进程2
初识Linux下进程2
|
2月前
|
运维 Linux
Linux系统调优详解(二)——CPU负载查看相关命令
Linux系统调优详解(二)——CPU负载查看相关命令
50 10