从 shell 优先运行进程(不是“nice”)

Posted

技术标签:

【中文标题】从 shell 优先运行进程(不是“nice”)【英文标题】:Run processes with priority from shell (not “nice” ) 【发布时间】:2014-01-25 14:54:07 【问题描述】:

我正在寻找与nice 等效的命令,但用于设置进程优先级和选择要使用的调度程序。

我需要能够输入(或包含在脚本中)run-with-scheduler batch a-big-long-commandrun-with-scheduler round-robin priority 10 之类的内容来设置进程优先级和调度程序。

我看到的每一个地方都有标题为“如何在 Linux 中设置进程优先级”的文章,但它们都写了关于友好的文章。正如您可能知道的那样,友善不是优先级,直到最近还没有办法设置优先级。然而,最近在 Linux 内核中添加了额外的调度程序。这些其他调度程序允许优先级,并且具有不同的行为。

例如批处理调度程序不会经常切换,并且优先级低于所有其他调度程序。这会导致任务运行得更快(切换更少),但前提是没有更高优先级的任务正在运行。

kde 工具 ksysguard(图形进程查看器),能够查看和设置进程的好坏、调度程序和优先级。但是,我正在寻找命令行工具的名称。

如何在命令行中指定命令的调度程序和优先级?

【问题讨论】:

您无法设置优先级。只有调度程序可以。 @IgnacioVazquez-Abrams 适用于普通调度程序,它很不错。但现在还有其他:[空闲]、批处理、正常、[ISO]、实时、FIFO。 ([] 中的那些不在我的内核中)。 RealTime 和 FIFO 中的线程具有固定的优先级,我认为批处理可能只有一个优先级。 oreilly.com/catalog/linuxkernel/chapter/ch10.html 我相信nice 命令是作为标准 Linux 实用程序可用的最佳命令。对于大多数用途来说,它应该足够了。你需要nice 不为你做什么? 我知道最近的内核支持多个调度程序。我还知道 kde 工具 ksysguard(图形进程查看器)能够查看和设置进程的好坏、调度程序和优先级。我只是在寻找命令行工具的名称。 【参考方案1】:

使用schedtool

安装包schedtool:(在debian/ubuntu/mint等上运行sudo apt-get install schedtool

然后您将有一个命令schedtool,阅读手册:man schedtool,并阅读调度程序。除非您真的知道自己在做什么,否则不要使用实时调度程序。 (除非以更高的能力运行,否则你无论如何都不能。)

这里有一些例子。

schedtool -B -e long-process schedtool -R -p 1 read-time-process #不要这样做 schedtool -a 0 a-process-to-run-on-cpu-0-only

另见http://manpages.ubuntu.com/manpages/hardy/man8/schedtool.8.html

【讨论】:

以上是关于从 shell 优先运行进程(不是“nice”)的主要内容,如果未能解决你的问题,请参考以下文章

进程设置优先级啥作用?

Linux进程管理命令之调整进程优先级

脚本控制------------------------(nice与renice命令进程优先级控制)

nice---进程优先级

进程的优先级

在linux中如何根据nice值设置任务时间片