1. 程式人生 > >20181204程序優先順序nice

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 級別
[[email protected] ~]# ps axo pid,command,nice --sort=-nice 自定義顯示程序
[[email protected] ~]# ps axo pid,command,nice,cls --sort=-nice
TS 表示該程序使用的排程策略為 SCHED_OTHER

四.啟動具有不同 nice 級別的程序
啟動程序時,通常會繼承父程序的 nice 級別,預設為 0。
[[email protected] ~]# nice -n -5 sleep 6000 &
[[email protected] ~]# 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


[[email protected] ~]#nice -n -20 /etc/init.d/httpd restart 啟動以後,加優先順序
[

[email protected] ~]# 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 級別
[[email protected] ~]# sleep 7000 &
[3] 10089
[[email protected] ~]# renice -20 10089
10089: old priority 0, new priority -20