让机器所有的cpu核打满
下面的程序可以将一个机器所有的cpu核打满:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define __USE_GNU
#include <sched.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <pthread.h>
void thread_func(int n)
{
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(n,&mask);
if (sched_setaffinity(0, sizeof(mask), &mask) == -1)
{
printf("warning: could not set CPU affinity, continuing...\n");
}
nice(-1);
int pid[1];
struct sched_param p[1];
struct sched_param para;
para.sched_priority = 23;
sched_setscheduler(0, SCHED_FIFO, ¶);
printf("Parent pid is %d policy is %d, prio:%d\n", getpid(), sched_getscheduler(0), para.sched_priority);
while(1)
{
}
}
int main(int argc, char *argv[])
{
int i = 0;
pthread_t id[24];
for (i = 0; i <=23 ; i++)
{
int ret;
ret = pthread_create(&id[i], NULL, (void*)thread_func, i);
if (ret != 0)
{
printf("Create pthread error!\n");
return -1;
}
}
// pthread_join
for (i = 0; i <=23 ; i++)
{
pthread_join(id[i], NULL);
}
return 0;
}