linux下調整程序優先順序
程序的優先順序決定了程序是否優先被cpu分配資源進行處理。
在cpu資源十分充足時,每個正在執行的程序都能分配到足夠的資源進行處理,此時調整程序的優先順序是沒有什麼意義的;
如果cpu資源緊張時,top檢視cpu使用達到90%以上時,優先順序高的程序將被優先分配資源去執行。
如果此時手頭有乙個非常緊要的任務要執行,比如傳輸乙個非常重要的資料或是準備給客戶發一封非常緊急的郵件,
你希望這些任務優先地被執行完成,那麼就需要調整這些任務的優先順序了。
優先順序的值=優先係數+nice值
優先係數由系統核心決定,不可更改
nice值可以手動更改,範圍是 -20~19
優先順序的值越低,優先順序越高;優先順序的值越高,優先順序越低。
所以想調整成最高優先順序的話,就將nice值設為-20;想調整成最低優先順序的話,將nice值設為19。
調整優先順序:
1、任務未執行前進行調整
# nice -n-20 sh /***/***.sh --以最高優先順序執行***.sh這個指令碼
# nice -n19 sh /***/***.sh --以最低優先順序執行***.sh這個指令碼
2、任務已經開始執行的情況下調整
①# top --檢視系統當前程序運**況
> r --鍵入小r
> pid to renice: --提示輸入執行的程序的pid
> renice pid 23302 to value: --把這個程序的nice值設定為多少,根據需要進行調整
②# renice -20 pid 將程序的nice值改為-20
# renice 19 pid 將程序的nice值改為19
linux執行緒優先順序設定:
linux核心的三種排程策略:
1,sched_other 分時排程策略,
2,sched_fifo實時排程策略,先到先服務。一旦占用cpu則一直執行。一直執行直到有更高優先順序任務到達或自己放棄
3,sched_rr實時排程策略,時間片輪轉。當程序的時間片用完,系統將重新分配時間片,並置於就緒佇列尾。放在佇列尾保證了所有具有相同優先順序的rr任務的排程公平
linux執行緒優先順序設定
首先,可以通過以下兩個函式來獲得執行緒可以設定的最高和最低優先順序,函式中的策略即上述三種策略的巨集定義:
int sched_get_priority_max(int policy);
int sched_get_priority_min(int policy);
sched_other是不支援優先順序使用的,而sched_fifo和sched_rr支援優先順序的使用,他們分別為1和99,數值越大優先順序越高。
設定和獲取優先順序通過以下兩個函式:
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);
例如以下**建立了乙個優先順序為10的執行緒:
struct sched_param
;例:建立優先順序為10的執行緒
pthread_attr_t attr;
struct sched_param param;
pthread_attr_init(&attr);
pthread_attr_setschedpolicy(&attr, sched_rr);
param.sched_priority = 10;
pthread_attr_setschedparam(&attr, ¶m);
pthread_create(*** , &attr , *** , ***);
pthread_attr_destroy(&attr);
《原文整理自網路》
Linux程序優先順序和調整優先順序
linux 是乙個多使用者 多工的作業系統,系統中通常執行著非常多的程序。但是 cpu 在乙個時鐘週期內只能運算一條指令 現在的 cpu 採用了多執行緒 多核心技術,所以在乙個時鐘週期內可以運算多條指令。但是同時運算的指令數也遠遠小於系統中的程序總數 那問題來了 誰應該先運算,誰應該後運算呢?這就需...
程序 執行緒 優先順序調整方法
1.nice 優先順序的範圍為 20 19 等 40個等級,其中數值越小優先順序越高,數值越大優先順序越低,既 20的優先順序最高,19的優先順序最低 2.chrt 命令 chrt p r 50 調整成rr 50 chrt p 是查詢 chrt p o 0 調整成other 3.建立後修改 int ...
Linux程序優先順序的調整方法
linux下的程序排程優先順序是從 20到19,一共40個級別,數字越大,表示程序的優先順序越低。預設時候,程序的優先順序是0。檢視程序優先順序有兩個辦法 ps和top。top命令顯示的ni列的值。或者可以使用ps efl來檢視,也是在ni列表示了程序的優先順序。程序的優先順序可以在程式執行的時候設...