20181204進程優先級nice

進程優先級nice

一.Linux 進程調度及多任務
每一個 CPU(或 CPU 核心)在一個時間點上只能處理一個進程,經過時間片技術,Linux 實際可以運行的進程(和線程數)能夠超出實際可用的 CPU 及核心數量。Linux 內核進程調度程序將多個進程在 CPU 核心上
快速切換,從而給用戶多個進程在同時運行的印象。shell

二.相對優先級 nice
因爲不是每一個進程都與其餘進程一樣重要,可告知進程調度程序爲不一樣的進程使用不一樣的調度策略。常規
系統上運行的大多數進程所使用的調度策略爲 SCHED_OTHER (也稱爲 SCHED_NORMAL),但還有其它一些
調度策略用於不一樣的目的。
SCHED_OTHER 調度策略運行的進程的相對優先級稱爲進程的 nice 值,能夠有 40 種不一樣級別的 nice 值。
20181204進程優先級niceide

nice 值越高: 表示優先級越低,例如+19,該進程容易將CPU使用量讓給其餘進程。
nice 值越低: 表示優先級越高,例如-20,該進程更不傾向於讓出CPU。線程

三.查看進程的 nice 級別
1.使用 top 查看 nice 級別
NI: 實際 nice 級別
PR: 將 nice 級別顯示爲映射到更大優先級隊列,-20 映射到 0,+19 映射到 39rest

2.使用 ps 查看 nice 級別
[root@tianyun ~]# ps axo pid,command,nice --sort=-nice 自定義顯示進程
[root@tianyun ~]# ps axo pid,command,nice,cls --sort=-nice
TS 表示該進程使用的調度策略爲 SCHED_OTHERblog

四.啓動具備不一樣 nice 級別的進程
啓動進程時,一般會繼承父進程的 nice 級別,默認爲 0。
[root@tianyun ~]# nice -n -5 sleep 6000 &
[root@tianyun ~]# ps axo command,pid,nice |grep sleep
sleep 6000 2652 0
sleep 6000 2660 -5
sleep 7000 2803 0
sleep 8000 2806 -20
sleep 6000 2810 -5
grep sleep 2812 0繼承


[root@tianyun ~]#nice -n -20 /etc/init.d/httpd restart 啓動之後,加優先級
[root@tianyun ~]# ps axo pid,command,nice,cls |grep httpd
11116 /usr/sbin/httpd -20 TS
11119 /usr/sbin/httpd -20 TS
11120 /usr/sbin/httpd -20 TS
11121 /usr/sbin/httpd -20 TS
11122 /usr/sbin/httpd -20 TS
11123 /usr/sbin/httpd -20 TS
11124 /usr/sbin/httpd -20 TS
11125 /usr/sbin/httpd -20 TS
11126 /usr/sbin/httpd -20 TS隊列

五.更改現有進程的 nice 級別
1.使用 top 更改 nice 級別
r 調整進程的優先級(Nice Level) (-20 高) ---0--- (19 低)
2.使用 shell 更改 nice 級別
[root@tianyun ~]# sleep 7000 &
[3] 10089
[root@tianyun ~]# renice -20 10089
10089: old priority 0, new priority -20進程

相關文章
相關標籤/搜索