如何在启动时确定特定流程的优先级?

时间:2012-01-07 06:54:01

标签: process linux-kernel

在Linux中,我希望为进程分配比平时更高的优先级。即当一个进程开始时,我希望它的优先级设置为更高的值。我希望这是隐式完成的,即当过程开始时(例如:双击)。

为此,我必须更改内核代码(sched.c)吗?

是否有任何工具或软件包可用于查看流程的准确程度以及优先级的分配方式?

ptrace http://linux.die.net/man/2/ptrace)和 strace http://linux.die.net/man/1/strace)会帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

假设您不想破解实际的应用程序本身,您总是可以创建一个自定义桌面文件,该文件用“nice”包装命令,这将修改您将运行的命令的niceness(优先级)。

例如,创建一个〜/ .local / share / applications / myfastapp.desktop,如下所示:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=nice -n -20 /usr/bin/myapp
Name=My App (niced)
Comment=Custom definition for myapp

答案 1 :(得分:0)

让进程调用main()中的set_priority()系统调用来降低它的优秀级别并提高它的优先级。有关详细信息,请参见手册页:http://linux.die.net/man/2/setpriority

您还可以使用sched_setscheduler()将该过程标记为实时过程,但这有点过于复杂,可能对您所寻求的内容有些过分。

您100%不需要为此更改内核: - )