必威体育Betway必威体育官网
当前位置:首页 > IT技术

linux利用setpriority调整线程优先级,测试优先级对线程的影响

时间:2019-10-13 20:41:05来源:IT技术作者:seo实验室小编阅读:88次「手机版」
 

setpriority

以下测试是为了验证setpriority函数线程是否有效,理论上linux kernel是不区分调度是不区分线程和进程的。

用户线程和进程的区别是是否有独立的用户地址空间,线程的是共享的。

编译以下代码,运行 ./cpuidle.APP 19 -19

可以看到打印 -19 优先级的线程打印会比 19优先级的线程多 400多次, 几乎满屏都是 -19优先级的打印。

当有-19的线程运行,整个系统都要明显卡顿和19的线程相比。

以上愚见或许有不对之处,请多多包涵。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>  
#include <pthread.h>
#include<sys/resource.h>



static void *cpuidle_loop(void *arg)
{
    int pri;
    int size = 0, sum = 0;
    unsigned long long int loopCnt=0;
    struct timeval tv;
    int ret;

    pri = *(int *)arg;
    printf("[%s]pri=%d\n", __func__, pri);
    setpriority(PRIO_PROCESS, 0, pri);

    do{
        sum+=size;
        size += 10;
        loopCnt+=10;
        if(0==(loopCnt%1000000)){
            printf("pri[%d]loopCnt=%lld\n", pri, loopCnt);
        }
    }while(1);

    printf("size2=%d\n", size);

    pthread_exit(NULL);

    return NULL;
}
int main(int argn, char *argc[])
{
    int i=50;
    int pri = 0, pri2=0;
    int size = 0, sum = 0;
    pthread_t thread_id, thread_id2;

    printf("arg1=%s\n", argc[1]);
    pri = strtol(argc[1], NULL, 10);
    pri2 = strtol(argc[2], NULL, 10);

    printf("main pri=%d, pri2=%d\n", pri, pri2);
    pthread_create(&thread_id, NULL, cpuidle_loop, &pri);
    pthread_create(&thread_id2, NULL, cpuidle_loop, &pri2);

    do{
        sum+=size;
        size += 10;
        sleep(10);
    }while(1);

    printf("size=%d\n", size);

EXIT:
    exit(0);
}

相关阅读

程序,进程,线程的区别和联系

进程和程序区别和联系表现在以下方面:1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同

Ubuntu(乌班图),初学Linux的最佳选择

  主流的Linux发行版大致分为两个流派,第一个流派是日趋商业化的RedHat红帽系列,商业化的Redhat linux 从版本9开始变成了RHEL( Re

Linux系统源文件sources.list

源文件   APT的软件源定义来自/etc/apt/sources.list文件(源文件),记录了Linux系统下所有软件包的来源。 /etc/apt/sources.li

Linux中文输入法安装

使用kali linux系统,安装ibus。 配置更新源 打开终端进入:/etc/apt/sources.list使用vim添加下列更新源(i:开始编辑)#kali官方源deb h

Linux中查看正在运行的进程(ps命令)

ps是进程查看命令,可用于查看当前运行的进程信息。 ps命令-参数: A :所有的进程均显示出来,与 -e 具有同样的效用; -a : 显示现行终

分享到:

栏目导航

推荐阅读

热门阅读