linux系統中的進程分類:linux
交互式進程(IO密集型)
bash
批處理進程(cpu密集型)
ide
實時進程(守護進程)
對象
平衡進程IO密集和CPU密集的方法:
隊列
對於IO密集型:cpu時間片短,優先級較高
進程
對於cpu密集型:時間片較長,優先級較低
資源
進程優先級:it
分爲實時進程優先級、靜態進程優先級、動態進程優先級io
實時進程優先級:1-99(數字越小,優先級越低),通常是與系統內核相關的進程
class
靜態優先級:100-139(數字越小,優先級越高),通常是用戶空間的進程
實時進程優先級比靜態優先級高
動態優先級:當某個進程長時間得不到運行時,內核臨時性調高該進程的優先級;或當某個進
程過於佔用資源時,會調低優先級。(對象通常是100-139的進程)
調整進程優先級:
建立一個進程時,其默認優先級爲120,此時其nice值爲0,nice取值範圍是-20至19,一共40個級別。這個值越小,表示進程」優先級」越高,而值越大「優先級」越低。可經過nice命令改變一個將要執行的進程的nice值,或經過renice命令修改正在執行的進程的nice值
nice -n 10 bash #將bash的nice值修改成10,此時優先級爲130 renice 5 bash #將正在運行中的bash進程的nice值加5
進程的調度策略:
當兩個進程的優先級同樣時,就須要必定的調度策略
實時進程調度策略:
SCHED_FIFO:以先進先出的隊列方式進行調度,在優先級同樣的狀況下,誰先執行的就
先調度誰,除非它退出或者主動釋放CPU。
SCHED_RR:以時間片輪轉的方式對相同優先級的多個進程進行處理。
非實時進程調度策略:
SCHED_OTHER、SCHED_IDLE
使用chrt命令查看和設定進程的調度策略
用法:chrt [options] -p [指定優先級] PID
options:
-f 調度器設成 SCHED_FIFO
-o 調度器設成 SCHED_OTHER
-r 調度器設成 SCHED_RR
[root@localhost ~]# chrt -p 34735 #查看pid爲34735的進程屬性 pid 34735's current scheduling policy: SCHED_OTHER pid 34735's current scheduling priority: 0
# chrt -f -p 50 1000 #將PID 1000 的進程設定成 SCHED_FIFO,優先級設定成50。 # chrt -o -p 0 1000 #將PID 1000 的進程設定成 SCHED_OTHER,優先級設定成0。 # chrt -f 50 /bin/test.sh #啓動 /bin/test.sh 設定成 SCHED_FIFO,優先級設定成50