Linux 操作系统下CPU多核心的绑定
2011-10-18 18:12
489 查看
现在多CPU的趋势越来越大了. 有时候为了更好地操作机器, 需要将某个进程绑定到具体的CPU上去. 下面给出了一个进程绑定到具体的CPU上去的一个例子.
cpu.c
[CODE]
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/sysinfo.h>
#include<unistd.h>
#define __USE_GNU
#include<sched.h>
#include<ctype.h>
#include<string.h>
int main(int argc, char* argv[])
{
int num = sysconf(_SC_NPROCESSORS_CONF);
int created_thread = 0;
int myid;
int i;
int j = 0;
cpu_set_t mask;
cpu_set_t get;
if (argc != 2)
{
printf("usage : ./cpu num\n"); //输入要绑定的CPU序号
exit(1);
}
myid = atoi(argv[1]);
printf("system has %i processor(s). \n", num);
CPU_ZERO(&mask);
CPU_SET(myid, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) == -1) //绑定到CPU
{
printf("warning: could not set CPU affinity, continuing...\n");
}
while (1)
{
CPU_ZERO(&get);
if (sched_getaffinity(0, sizeof(get), &get) == -1)
{
printf("warning: cound not get cpu affinity, continuing...\n");
}
for (i = 0; i < num; i++)
{
if (CPU_ISSET(i, &get))
{
printf("this process %d is running processor : %d\n",getpid(), i);
}
}
}
return 0;
}
cpu.c
[CODE]
#include<stdlib.h>
#include<stdio.h>
#include<sys/types.h>
#include<sys/sysinfo.h>
#include<unistd.h>
#define __USE_GNU
#include<sched.h>
#include<ctype.h>
#include<string.h>
int main(int argc, char* argv[])
{
int num = sysconf(_SC_NPROCESSORS_CONF);
int created_thread = 0;
int myid;
int i;
int j = 0;
cpu_set_t mask;
cpu_set_t get;
if (argc != 2)
{
printf("usage : ./cpu num\n"); //输入要绑定的CPU序号
exit(1);
}
myid = atoi(argv[1]);
printf("system has %i processor(s). \n", num);
CPU_ZERO(&mask);
CPU_SET(myid, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) == -1) //绑定到CPU
{
printf("warning: could not set CPU affinity, continuing...\n");
}
while (1)
{
CPU_ZERO(&get);
if (sched_getaffinity(0, sizeof(get), &get) == -1)
{
printf("warning: cound not get cpu affinity, continuing...\n");
}
for (i = 0; i < num; i++)
{
if (CPU_ISSET(i, &get))
{
printf("this process %d is running processor : %d\n",getpid(), i);
}
}
}
return 0;
}
相关文章推荐
- Linux 操作系统下CPU多核心的绑定
- Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
- Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
- Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
- Linux系统-程序运行CPU核心绑定
- Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
- Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
- linux 线程与CPU绑定
- Linux_多核系统下绑定进程或线程到指定CPU_核执行
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
- [Linux 性能调优] 网卡中断与CPU的绑定问题
- windows下绑定线程(进程)到指定的CPU核心
- linux taskset命令与node.js(进程cpu绑定)
- Linux下判断cpu物理个数,几核,是超线程还是多核心
- Linux_查看系统cpu个数、核心数、线程数
- windows下绑定线程(进程)到指定的CPU核心
- Linux中线程与CPU核的绑定
- Linux下判断cpu物理个数,几核,是超线程还是多核心
- Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转