您好,登錄后才能下訂單哦!
本篇內容主要講解“如何給linux進程設置實時優先級”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何給linux進程設置實時優先級”吧!
linux內核有五種調度方法:
SCHED_FIFO 實時調度策略,first in first out
SCHED_RR 實時調度策略,robin round
SCHED_OTHER 分時調度策略
SCHED_BATCH 批處理
SCHED_IDLE 優先級最低的策略
實時進程和分時進程的調度算法不同,分別在rt.c和fair.c中實現。實時進程的優先級總是高于普通進程。
實時進程根據實時優先級決定順序。而分時進程按完全公平分配調度(CFS)。
實時進程有兩種策略,FIFO和RR,實時優先級的范圍[0, MAX_RT_PRIO-1], 默認為[0,99]。實時優先級隊列是一組鏈表,每個優先級對應一個鏈表,先執行高的數值對應的鏈表。
FIFO 一旦處于可執行狀態就會一直執行,直到它自己阻塞或者釋放CPU。只能被優先級更高的進程搶占。一般用于延時要求較短的進程,被賦予較高的優先級。
RR 執行直到時間片用完或者自己阻塞和釋放CPU。只能被優先級更高的進程搶占。一般用于延時要求稍長的進程,被賦予較低的優先級。
要設置實時優先級,可以調用sched_setscheduler()
也可以用linux命令 chrt. chrt 也是調用了sched_setscheduler()這個函數。
用法:
chrt -p pid
chrt -p 1
Output:
pid 1's current scheduling policy: SCHED_OTHER
pid 1's current scheduling priority: 0
chrt -m
Output:
SCHED_OTHER min/max priority : 0/0
SCHED_FIFO min/max priority : 1/99
SCHED_RR min/max priority : 1/99
SCHED_BATCH min/max priority : 0/0
To set scheduling policy to SCHED_FIFO, enter:
# chrt -f -p [1..99] {pid}
Set policy to SCHED_FIFO with 50 priority:
# chrt -f -p 50 1024
To set scheduling policy to SCHED_RR, enter:
# chrt -r -p [1..99] {pid}
To set policy scheduling policy to SCHED_OTHER, enter:
# chrt -o -p 0 {pid}
# chrt -o -p 0 1024
如果設置不成功可能是由于一些限制,
http://home.lupaworld.com/home-space-uid-56821-do-blog-id-232810.html
需要改變
real-time priority (-r) 0
可以直接使用 ulimit -r 99來改變,每次開機修改會重置。
如果要永久修改可以在/etc/security/limits.conf中修改。
還要給/usr/bin/chrt命令授權CAP_SYS_NICE能力,如下:
setcap cap_sys_nice=eip /usr/bin/chrt
否則可能會出現以下報錯:
chrt: failed to set pid 0's policy: Operation not permitted
到此,相信大家對“如何給linux進程設置實時優先級”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。