20181204進程優先級nice

進程優先級nice

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

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

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

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

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

四.啓動具有不同 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章