| | |
| | | #include<sys/sysinfo.h> |
| | | #include<unistd.h> |
| | | |
| | | // setup the cpu set of this program to run on |
| | | void set_cpu(int id) |
| | | // setup the cpu set of this program (task) to run on |
| | | void set_task_cpu(int id) |
| | | { |
| | | int num = sysconf(_SC_NPROCESSORS_CONF); |
| | | |
| | | cpu_set_t mask; |
| | | CPU_ZERO(&mask); |
| | | if (sched_getaffinity(0, sizeof(mask), &mask) == -1) |
| | |
| | | fprintf(stderr, "warning: could not get CPU affinity/n"); |
| | | } |
| | | |
| | | CPU_SET(id, &mask); |
| | | if (sched_setaffinity(0, sizeof(mask), &mask) == -1) |
| | | { |
| | | fprintf(stderr, "warning: could not set CPU affinity/n"); |
| | | } |
| | | for(int i= 0; i< num; i++) |
| | | { |
| | | LOG_ERROR << "cpu " << i <<": " << CPU_ISSET(i, &mask) <<LOG_ENDL; |
| | | } |
| | | |
| | | //CPU_CLR(0x0000, &mask); |
| | | //CPU_CLR(0x0001, &mask); |
| | | //CPU_CLR(0x0002, &mask); |
| | | //CPU_CLR(0x0003, &mask); |
| | | //CPU_CLR(0x0004, &mask); |
| | | //CPU_CLR(0x0005, &mask); |
| | | |
| | | CPU_SET(0x0000, &mask); |
| | | CPU_SET(0x0001, &mask); |
| | | CPU_SET(0x0002, &mask); |
| | | CPU_SET(0x0003, &mask); |
| | | CPU_SET(0x0004, &mask); |
| | | CPU_SET(0x0005, &mask); |
| | | |
| | | if (sched_setaffinity(0, sizeof(mask), &mask) == -1) |
| | | { |
| | | LOG_ERROR << "warning: could not set CPU affinity" << LOG_ENDL; |
| | | } |
| | | |
| | | for(int i= 0; i< num; i++) |
| | | { |
| | | LOG_ERROR << "cpu " << i <<": " << CPU_ISSET(i, &mask) <<LOG_ENDL; |
| | | } |
| | | } |
| | | |
| | | void cpu_sched() |
| | | { |
| | | //set_cpu(0x0003); |
| | | //set_task_cpu(0x0003); |
| | | } |
| | | |
| | | void pthread_cpu_sched(const pthread_attr_t *attr) |
| | | { |
| | | cpu_set_t mask; |
| | | CPU_ZERO(&mask); |
| | | |
| | | } |