linux操作系統原理
linux:進程搶占,根據時間中斷搶占
系統時鐘:內部時鐘頻率,產生時鐘中斷
tick:時間解析度,中斷次數Hz
100Hz 每秒100次時間中斷
1000Hz
每次滴答都會產生可搶的時鐘中斷
A:5ms, 1ms
C:
進程類別:
交互式進程(I/O)
批處理進程(CPU)
實時進程(Real-time),立即響應,優先級最高
CPU密集型(批處理進程):時間片長,優先級低
IO密集型(交互式進程):時間片短,優先級高
[[email protected] ~]# ps -e -o class,rtprio,nice,pri,nice,cmd
CLS RTPRIO NI PRI NI CMD
TS - 0 19 0 [kthreadd] 凡是加了括號的都為內核線程
FF (fifo) 99 - 139 - [migration/0]
TS - 0 19 0 [ksoftirqd/0]
FF 99 - 139 - [migration/0]
Liunx優先級:priority
實時優先級:1-99,數字越小,優先級越低
靜態優先級:100-139,數字越小,優先級越高
nice值 -20到19,對應100到139,nice值為0對應的為120,默認為0
實時優先級畢靜態優先級高
nice值:調整靜態優先級
調度類別;
實時進程:
SCHED FIFO:first in first out 調度fifo的進程
SCHED_RR: round robin 調度rr的實時調度進程
SCHED_Other:專門用來調度用戶空間進程的,100-139之間的進程
紅帽6上多2個:
SCHED_BATCH 調度批處理進程
SCHED_IDLE 調度空閑進程
動態優先級:
臨時性的調高優先級,主要對100-139的進程,對用戶空間進程,長時間沒有獲得時間片或長時間獲得時間片,進行調整
dynamic priority = max (100,min ( static priority - bonus + 5,139)) 動態優先級等於 從100和 min ( static priority - bonus + 5,139)中取最大數
bonus(範圍-10到10)
比如110的優先級 懲罰3級的措施後
110-(-3)+5 =118
等於118
手動調整進程優先級:
100-139 :nice值
nice N COMMAND
renice -n 指定新的nice值 指定PID號
1-99:
chrt:
-p 指定PID
-f 指定fifo類別
-r 指定 rr類別
-b 指定批處理進程
-i 空閑進程
chrt -f -p [prio] PID 調整fifo的優先級
chrt -r -p [prio] PID 調整rr的優先級
chrt -f -p [prio] COMMAND 啟動命令時指定優先級
ps -e -o class,rtprio,nice,pri,nice,cmd 查看命令
chrt -p [prio] COMMAND 調整100-139進程的優先級
本文出自 “運維成長路” 博客,謝絕轉載!
linux操作系統原理