查看指定进程运行在哪一个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

浙公网安备 33010602011771号