如何在类UNIX系统中为进程设置优先级

时间:2014-04-15 17:39:38

标签: c unix

        int pri = getpriority(PRIO_PROCESS, 2134);
        printf("The original priority of 2134 is :%d", pri);

       //cpu_usage of the process in top is 80%, pri is 39 and NICE value is 19
        setpriority(PRIO_PROCESS, 20);

        int p = getpriority(PRIO_PROCESS, 2134);
        printf("priority is set to :%d", p);

这里我试图为进程设置优先级(pid:2134)。在top命令中,它显示优先级为39,nice值为19.因此,进程的优先级非常低。但是进程的CPU使用率高于70.如果我将优先级设置为最小值,则应该减少该进程的CPU使用率。我很困惑是否将优先级设置在40..1或-19..20的范围内。有谁可以请检查这个。任何帮助将非常感激。

2 个答案:

答案 0 :(得分:3)

进程优先级与其分配的cpu使用百分比不成比例。

相反,它只作为调度程序的标记来确定要运行的两个进程中的哪一个现在可以运行。

因此,使用优先级较高的进程来解决它的高优先级进程几乎不会引起注意,而即使是空闲系统上的低优先级进程也可以一直运行。

答案 1 :(得分:0)

我发现这篇文章Change priority of the current process in C显示了如何使用函数setpriority设置优先级。

你必须使用带有3个参数的setpriority

但你需要成为root。

setpriority的人:http://linux.die.net/man/2/setpriority