查看指定进程运行在哪一个CPU

比如机器有2个cpu,,某进程一直在这2个cpu切换,使用以下命令查看该进程此刻运行在哪个cpu上:

ps -o pid,psr,comm -p pid号

例如:

 

     PID        PSR             COMMAND 

分别代表:进程号  运行的cpu号    运行的程序

linux@shijinhua:~/self$ ps -o pid,psr,comm -p 31042
PID PSR COMMAND
31042 0 test

 

下面贴出我的测试代码

#include <stdio.h>

#define __USE_GNU
#include <unistd.h>
#include <math.h>
#include <sched.h>
#include <pthread.h>


void WasteTime()
{
sleep(1);
printf("start running \n");

}

int main(int argc, char **argv)
{
cpu_set_t mask;
while(1)
{

CPU_ZERO(&mask);
CPU_SET(0, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) < 0) {
perror("sched_setaffinity");
}
printf(" line = 33 \n ");
WasteTime();

CPU_ZERO(&mask);
CPU_SET(1, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) < 0) {
perror("sched_setaffinity");
}

printf(" line = 42 \n ");
WasteTime();
#if 0
CPU_ZERO(&mask);
CPU_SET(0, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) < 0) {
perror("sched_setaffinity");
}
WasteTime();

CPU_ZERO(&mask);
CPU_SET(1, &mask);
if (sched_setaffinity(0, sizeof(mask), &mask) < 0) {
perror("sched_setaffinity");
}
WasteTime();
#endif
}
}

 

 

编译的指令gcc  cpu_band.c -g -Wall -lpthread -o test

posted @ 2019-02-20 10:38  Genebrother  阅读(890)  评论(0)    收藏  举报