linux優化之進程篇

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
相關文章
相關標籤/搜索