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

Process 如何在启动时确定特定流程的优先级?,process,linux-kernel,Process,Linux Kernel,在Linux中,我希望为进程分配比通常更高的优先级。即,当流程启动时,我希望将其优先级设置为更高的值。我希望这是隐式完成的,即当流程开始时(例如双击) 为此,我必须更改内核代码(sched.c)吗 是否有任何工具或软件包可以让我了解流程是如何启动的,以及优先级是如何分配的 ptrace()和strace()能帮我解决这个问题吗?让进程在main()中调用set_priority()系统调用,以降低它的nice级别并提高它的优先级。有关详细信息,请参见手册页: 您还可以使用sched_setsch

在Linux中,我希望为进程分配比通常更高的优先级。即,当流程启动时,我希望将其优先级设置为更高的值。我希望这是隐式完成的,即当流程开始时(例如双击)

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

是否有任何工具或软件包可以让我了解流程是如何启动的,以及优先级是如何分配的


ptrace()和strace()能帮我解决这个问题吗?

让进程在main()中调用set_priority()系统调用,以降低它的nice级别并提高它的优先级。有关详细信息,请参见手册页:

您还可以使用sched_setscheduler()将该进程标记为实时进程,但这会涉及更多的内容,而且可能对您所寻求的内容来说有些过分


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

让进程在main()中调用set_priority()系统调用,以降低其良好级别并提高其优先级。有关详细信息,请参见手册页:

您还可以使用sched_setscheduler()将该进程标记为实时进程,但这会涉及更多的内容,而且可能对您所寻求的内容来说有些过分


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

假设您不想攻击实际应用程序本身,您可以始终创建一个自定义桌面文件,该文件将命令包装为“nice”,它将修改要运行的命令的准确度(优先级)

例如,创建一个~/.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

假设您不想攻击实际的应用程序本身,您可以始终创建一个自定义桌面文件,该文件将命令包装为“nice”,这将修改要运行的命令的准确度(优先级)

例如,创建一个~/.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

我认为你的标题和标签有点误导人。您真的不想更改调度器的内核代码,是吗?我想你只是想在进程启动时运行一些东西,这会改变它的优先级。我想在启动时初始化KVM进程的优先级。。我不想在进程启动后使用renice(或任何此类命令)。。这可以在不改变内核代码的情况下完成吗??我正在考虑对sched_fork()函数进行更改。我认为您的标题和标记有些误导。您真的不想更改调度器的内核代码,是吗?我想你只是想在进程启动时运行一些东西,这会改变它的优先级。我想在启动时初始化KVM进程的优先级。。我不想在进程启动后使用renice(或任何此类命令)。。这可以在不改变内核代码的情况下完成吗??正在考虑对sched_fork()函数进行更改..谢谢..)答案对我来说相当高。。请务必提供参考资料,以了解上述解决方案…桌面文件只是一种与窗口管理器无关的描述应用程序的方式。有关其格式的说明,请参见。例如,GnomeShell仅向具有已定义的.desktop文件(来自软件包或用户定义的文件)的用户提供应用程序。谢谢:)答案对我来说相当高。。请务必提供参考资料,以了解上述解决方案…桌面文件只是一种与窗口管理器无关的描述应用程序的方式。有关其格式的说明,请参见。例如,GNOMEShell仅向用户提供具有定义的.desktop文件(来自包或用户定义的文件)的应用程序。