从 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-command
或 run-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”)的主要内容,如果未能解决你的问题,请参考以下文章