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

C 如何在类UNIX系统中为进程设置优先级,c,unix,C,Unix,这里我试图为一个进程设置优先级(pid:2134)。在top命令中,它显示优先级为39,nice值为19。所以这个过程的优先级很低。但是进程的CPU使用率在70以上。如果我将优先级设置为最小值,则该进程的CPU使用率应该会降低。我不知道是将优先级设置为40..1还是-19..20。请任何人检查一下这个。任何帮助都将不胜感激 进程优先级与其分配的cpu使用百分比不成正比 相反,它只作为调度器的一个标记,用于确定要运行的两个进程中的哪一个将立即运行 因此,一个高优先级进程与高优先级进程抗争将几乎不会

这里我试图为一个进程设置优先级(pid:2134)。在top命令中,它显示优先级为39,nice值为19。所以这个过程的优先级很低。但是进程的CPU使用率在70以上。如果我将优先级设置为最小值,则该进程的CPU使用率应该会降低。我不知道是将优先级设置为40..1还是-19..20。请任何人检查一下这个。任何帮助都将不胜感激

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

相反,它只作为调度器的一个标记,用于确定要运行的两个进程中的哪一个将立即运行

因此,一个高优先级进程与高优先级进程抗争将几乎不会引起注意,而即使是一个低优先级进程,在一个空闲的系统上也可以一直运行。

我发现了这篇文章,展示了如何使用函数setpriority设置优先级

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

但你必须是根


setpriority之人:

感谢您对重复数据消除器的回复。让我们在无限循环中运行5个进程,我将进程1的优先级设置为最小值。考虑1个周期,调度程序是否在每个周期中调度进程,或者它忽略了最小优先级的进程吗?@ VijayKuMARKDP:取决于调度器。有一些常见的调度器从不运行低优先级进程,也有一些常见的调度器尝试不让低优先级进程完全饿死,尽管它们得到的时间要少得多。
        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);