zoukankan      html  css  js  c++  java
  • linux cpu亲和性设置

     1、设置进程的cpu亲和性程序如下,

    #Using:g++ setCpuAffinity.c -o setCpuAffinity
    
    #include<sys/types.h>
    #include<sys/sysinfo.h>
    #include<unistd.h>
    
    //#define __USE_GNU
    #include<sched.h>
    #include<ctype.h>
    #include<string.h>
    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc, char* argv[])
    {
            int num = sysconf(_SC_NPROCESSORS_CONF);
            int created_thread = 0;
            int myid, pid;
            int i;
            int j = 0;
    
            cpu_set_t mask;
            cpu_set_t get;
    
            if (argc < 3)
            {
                    printf("usage : ./setAffinity pid num1,num2,..,numn 
    ");
                    exit(1);
            }
    
            pid = atoi(argv[1]);
            CPU_ZERO(&mask);
            for (i = 2; i < argc; i++)
            {
                    myid = atoi(argv[i]);
                    CPU_SET(myid, &mask);
            }
            if (sched_setaffinity(pid, sizeof(mask), &mask) == -1)
            {
                    printf("warning: could not set CPU affinity, continuing...
    ");
            } else {
                    printf("sched_setaffinity succeed !!!
    ");
    
            }
    }

     2、获取进程的CPU亲和性程序如下,

    #Using:g++ getCpuAffinity.c -o getCpuAffinity
    
    #include<sys/types.h>
    #include<sys/sysinfo.h>
    #include<unistd.h>
    
    //#define __USE_GNU
    #include<sched.h>
    #include<ctype.h>
    #include<string.h>
    #include<stdio.h>
    #include<stdlib.h>
    
    int main(int argc, char* argv[])
    {
            int num = sysconf(_SC_NPROCESSORS_CONF);
            int pid;
            int i;
    
            cpu_set_t get;
    
            if (argc != 2)
            {
                    printf("usage : ./setAffinity pid 
    ");
                    exit(1);
            }
    
            pid = atoi(argv[1]);
    
            CPU_ZERO(&get);
            if (sched_getaffinity(pid, sizeof(get), &get) == -1)
            {
                    printf("warning: cound not get cpu affinity, continuing...
    ");
            }
            for (i = 0; i < num; i++)
            {
                    if (CPU_ISSET(i, &get))
                    {
                            printf("this process %d is running processor : %d
    ", pid, i);
                    }
            }
    }
  • 相关阅读:
    BZOJ5368:[PKUSC2018]真实排名(组合数学)
    【HDU2222】Keywords Search
    KMP算法
    【BZOJ3262】 陌上花开
    【POJ2104】kth num
    【BZOJ1251】序列终结者
    【BZOJ3524】 [Poi2014]Couriers
    【BZOJ2049】 [Sdoi2008]Cave 洞穴勘测
    【BZOJ1468】Tree
    【BZOJ2152】聪聪可可
  • 原文地址:https://www.cnblogs.com/VincentXu/p/3596547.html
Copyright © 2011-2022 走看看