在Linux中,我希望爲進程分配比平時更高的優先級。即當一個進程啓動時,我希望優先級設置爲更高的值。我希望這可以隱式完成,即當過程開始時(例如雙擊)。如何優先啓動特定進程?
爲此我必須更改內核代碼(sched.c)?
那裏有任何工具或軟件包,我可以看到一個過程如何開始以及如何分配優先級?
請問ptrace的(http://linux.die.net/man/2/ptrace)和strace的(http://linux.die.net/man/1/strace)幫助我?
在Linux中,我希望爲進程分配比平時更高的優先級。即當一個進程啓動時,我希望優先級設置爲更高的值。我希望這可以隱式完成,即當過程開始時(例如雙擊)。如何優先啓動特定進程?
爲此我必須更改內核代碼(sched.c)?
那裏有任何工具或軟件包,我可以看到一個過程如何開始以及如何分配優先級?
請問ptrace的(http://linux.die.net/man/2/ptrace)和strace的(http://linux.die.net/man/1/strace)幫助我?
讓這個進程調用main()中的set_priority()系統調用來降低它的級別並提高它的優先級。 http://linux.die.net/man/2/setpriority
您也可以使用sched_setscheduler()將進程標記爲實時進程,但涉及的內容稍多一點,可能對您所尋找的內容過於矯枉過正。
您100%不需要改變內核此:-)
非常感謝.. :)請試試這個.. – rAzOr 2012-01-08 18:27:31
假設你沒有想破解的實際應用程序本身,你總是可以創造出包裝了「命令自定義桌面文件很好「,它會修改你要運行的命令的優先級(優先級)。
例如,創建一個〜/。本地/共享/應用/ 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
我覺得你的標題和標籤是有點誤導。你真的不想改變調度程序的內核代碼,是嗎?我想你只是想在流程啓動時運行一些東西,這會改變它的優先級。 – ugoren 2012-01-07 10:05:11
我想在啓動時初始化KVM進程的優先級..我不想在進程啓動後使用renice(或任何這樣的命令)..可以在不更改內核代碼的情況下完成嗎?正在考慮在sched_fork()函數中進行更改.. – rAzOr 2012-01-07 16:10:00