linux CPU隔離和程序排程優先順序設定

2021-07-09 05:47:38 字數 2340 閱讀 9883

1.  uboot 啟動引數中增加 」isolcpus=1「  ,

計數從0開始

表示隔離第2個cpu, 系統啟動後,程式

不能在第2個cpu上執行。

如果要使用隔離的cpu,需要在**中新增如下**。

pid_t tid;

cpu_set_t set;

tid = gettid();

cpu_zero( &set );

cpu_set( 1, &set );

sched_setaffinity( tid, sizeof(cpu_set_t), &set );

檢視執行緒執行在那個cpu上:

a . 執行top -h,    顯示所有執行緒資訊

b.  按f鍵進入選單向,使用方向鍵

移動到「 p       = last used cpu」,用

空格鍵選中

c.   按q鍵回到上級選單顯示如下,多了一列p,

pid user      pr  ni    virt    res %cpu %mem     time+     p      s command           

1   root          20   0        2.3m   0.7m  0.0     0.3          0:04.65    0       s  init              

92  root          20   0        1.8m   0.6m  0.0     0.2          0:00.01    1       s  `- pvalue_valid+ 

2.  設定執行緒排程策略和優先順序

pthread_attr_t attr;

int policy, inher;

struct sched_param param;      

pthread_attr_init(&attr);

// policy = sched_fifo;

policy = sched_rr;

ret = pthread_attr_setschedpolicy(&attr, policy);

if (ret != 0) 

printf(" pthread_attr_setschedpolicy/n%s/n", strerror(ret));

param.sched_priority = 99;

ret = pthread_attr_setschedparam(&attr, ¶m);

if (ret != 0)  

printf(" pthread_attr_setschedparam/n%s/n", strerror(ret));

pthread_attr_setinheritsched(&attr,pthread_explicit_sched);   //

設定執行緒排程策略時,必須設定此引數,否則會繼承父程序的屬性。

ret = pthread_create(&thread_la, &attr, threadtest, null);

檢視執行緒排程策略和優先順序,可以用命令chrt

chrt -p pid 

設定為實時排程,優先順序99,執行命令

chrt -r  -p  99  pid 

3. 補充,另外 pc(ubuntu)機上有個taskset

命令(預設已安裝),可以設定程式執行在那個cpu上,但要隔離cpu,設定比較麻煩。

大家可以設定程式執行在那個cpu上。

例: 程式啟動時

0,5,7,9,10,11號cpu上執行;    cpuid

是從0 開始計數,

cpuid可以10進製,也可以16進製制0x00ea1, 1位代表乙個cpu,最低位為cpu0

例:程式執行後

taskset   -cp 0    11111

設定程序號為 11111的程序在 cpu 0上執行。

檢視使用上面的提到的top命令。

4    可以使用cgroup,配置比較複雜,可以查一下資料,這裡指示做簡單的介紹。

cgroup(control group)是將任意程序進行分組化管理的linux核心功能。cgroup本身是提供將程序進行分組化管理的功能和介面的基礎結構,i/o或記憶體的分配控制等具體的資源管理功能是通過這個功能來實現的。這些具體的資源管理功能稱為cgroup子系統或控制器。

cgroup子系統有控制記憶體的memory控制器、控制程序排程的cpu控制器等。執行中的核心可以使用的cgroup子系統由/proc/cgroup來確認。

cgroup提供了乙個cgroup虛擬檔案系統,作為進行分組管理和各子系統設定的使用者介面。要使用cgroup,必須掛載cgroup檔案系統。這時通過掛載選項指定使用哪個子系統。

程序排程和程序時間

由核心決定 排程策略,排程優先順序 nice值決定優先順序,nice越低優先順序越高 nice的範圍在 0 2 nzero 1 nzero是系統預設的nice值 只有特權程序允許提高排程許可權 關於nzero 定義nzero的標頭檔案因系統而異,除了標頭檔案,linux3.2 可以通過非標準的sys...

作業排程和程序排程的區別

處理機排程是作業系統的主要功能之一,它的實現策略決定了作業系統的型別,其排程演算法的優劣直接影響整個系統的效能。處理機排程的任務是選出待分派的作業或程序,為之分配處理機。一般來說,處理機排程可分為三個級別,分別是高階排程 中級排程和低階排程。高階排程又稱作業排程,作業就是使用者程式及其所需的資料和命...

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...