2012-01-07 148 views
1

在Linux中,我希望爲進程分配比平時更高的優先級。即當一個進程啓動時,我希望優先級設置爲更高的值。我希望這可以隱式完成,即當過程開始時(例如雙擊)。如何優先啓動特定進程?

爲此我必須更改內核代碼(sched.c)?

那裏有任何工具或軟件包,我可以看到一個過程如何開始以及如何分配優先級?

請問ptrace的http://linux.die.net/man/2/ptrace)和strace的http://linux.die.net/man/1/strace)幫助我?

+0

我覺得你的標題和標籤是有點誤導。你真的不想改變調度程序的內核代碼,是嗎?我想你只是想在流程啓動時運行一些東西,這會改變它的優先級。 – ugoren 2012-01-07 10:05:11

+0

我想在啓動時初始化KVM進程的優先級..我不想在進程啓動後使用renice(或任何這樣的命令)..可以在不更改內核代碼的情況下完成嗎?正在考慮在sched_fork()函數中進行更改.. – rAzOr 2012-01-07 16:10:00

回答

0

讓這個進程調用main()中的set_priority()系統調用來降低它的級別並提高它的優先級。 http://linux.die.net/man/2/setpriority

您也可以使用sched_setscheduler()將進程標記爲實時進程,但涉及的內容稍多一點,可能對您所尋找的內容過於矯枉過正。

您100%不需要改變內核此:-)

+0

非常感謝.. :)請試試這個.. – rAzOr 2012-01-08 18:27:31

1

假設你沒有想破解的實際應用程序本身,你總是可以創造出包裝了「命令自定義桌面文件很好「,它會修改你要運行的命令的優先級(優先級)。

例如,創建一個〜/。本地/共享/應用/ 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 
+0

謝謝.. :)答案對我來說是相當高的水平..請提供參考以瞭解以上解決方案.. – rAzOr 2012-01-14 16:11:21

+0

.desktop文件只是一種窗口管理器與描述應用程序無關的方式。有關其格式的說明,請參閱http://standards.freedesktop.org/desktop-entry-spec/latest/。例如,gnome shell僅向具有已定義的.desktop文件(來自軟件包或用戶定義的文件)的用戶提供應用程序。 – stsquad 2012-01-16 14:27:19