linux繫結程序到指定cpu

2021-07-27 18:41:00 字數 3010 閱讀 6190

方法之一:

top -p `pidof 程序名稱`

方法之二:

top -p `ps h -o pid -c 程序名稱`

如果還要檢視此程序下的各執行緒,可用如下:

top -h -p `pidof process`

----------------------------------------------我是分割線------------------------------------------

top實時顯示程序在那個cpu上:

(1)top

(2)按 "1" 實時顯示cpu資訊

(3)按 "f" 進入顯示配置檔案設定

(4)選中 "p", 空格或者"d", q或者esc退出在最後顯示cpu

----------------------------------------------我是分割線--------------------------------------------

繫結cpu方式:

c語言:

sched_setaffinity(0, sizeof(mask), &mask)
shell命令:

在grup啟動時傳給核心引數: isolcpus=2-15, 這裡表示隔離第3到16個cpu, linux程式只跑在第一和第二個cpu上, 空閒的cpu我們可以指定跑程序了.

這是核心文件裡對核心引數的解釋:

isolcpus=

[knl,smp] isolate cpus from the general scheduler.

format:

,...,or

-(must be a positive range in ascending order)

or a mixture

,...,-

this

option can be used to specify one or more cpus

to isolate from the general smp balancing and scheduling

algorithms. you can move a process onto or off an

"isolated" cpu via the cpu affinity syscalls or cpuset.

begins at 0 and the maximum value is

"number of cpus in system - 1"

.this

option is the preferred way to isolate cpus. the

alternative -

- manually setting the cpu mask

of all

tasks in the system -

- can cause problems and

suboptimal load balancer performance.

linux nice 命令詳解

功能說明:設定優先權。

語  法:nice [-n 《優先等級》][--help][--version][執行指令]

補充說明:nice指令可以改變程式執行的優先權等級。

參  數:-n《優先等級》或-《優先等級》或--adjustment=《優先等級》  設定欲執行的指令的優先權等級。等級的範圍從-20-19,其中-20最高,19最低,只有系統管理者可以設定負數的等級。

--version  顯示版本資訊。

linux renice 命令詳解

功能說明:調整優先權。

語  法:renice [優先等級][-g 《程式群組名稱》...][-p 《程式識別碼》...][-u 《使用者名稱》...]

補充說明:renice指令可重新調整程式執行的優先權等級。預設是以程式識別碼指定程式調整其優先權,您亦可以指定程式群組或使用者名稱調整優先權等級,並修改所有隸屬於該程式群組或使用者的程式的優先權。等級範圍從-20--19,只有系統管理者可以改變其他使用者程式的優先權,也僅有系統管理者可以設定負數等級。

參  數:

-g 《程式群組名稱》  使用程式群組名稱,修改所有隸屬於該程式群組的程式的優先權。

-p 《程式識別碼》  改變該程式的優先權等級,此引數為預設值。

-u 《使用者名稱》  指定使用者名稱,修改所有隸屬於該使用者的程式的優先權。

taskset設定cpu親和力,cpu親和力是指

cpu排程程式屬性關聯性是「鎖定」乙個程序,使他只能在乙個或幾個cpu執行緒上執行。  對於乙個給定的系統上設定的cpu。給定cpu親和力和程序不會執行在任何其他cpu。  注意,linux排程器還支援自然cpu關聯:(不能讓這個cpu只為這乙個程序服務)

這裡要注意的是我們可以把某個程式限定在某一些cpu上執行,但這並不意味著該程式可以獨佔這些cpu,其實其他程式還是可以利用這些cpu執行。如果要精確控制cpu,taskset就略嫌不足,cpuset才是可以

-a, --all-tasks 操作所有的任務執行緒-p, --pid 操作已存在的pid-c, --cpu-list 通過列表顯示方式設定cpu

(1)指定1和2號cpu執行25718執行緒的程式

taskset -cp 1,2 25718

(2),讓某程式執行在指定的cpu上 taskset -c 1,2,4-7 tar jcf test.tar.gz test

(3)指定在1號cpu上後台執行指定的perl程式

taskset –c 1 nohup perl pi.pl &

---------------------------------------------我是分割線-------------------------------

將某程式繫結cpu:

c語言可以指定程序或者執行緒繫結

shell可以先進/var/run/**.pid取得程序pid,然後繫結程序到cpu

或者直接使用taskset –c 繫結指定程式名

Linux程序或執行緒繫結到CPU

linux提供乙個介面,可以將程序繫結到特定的cpu include int sched setaffinity pid t pid,size t cpusetsize,const cpu set t mask int sched getaffinity pid t pid,size t cpuse...

redis程序繫結指定的CPU核

0 檢視某服務的pid ps aux grep redis1 顯示程序執行的cpu 命令 taskset p 21184顯示結果 pid 21184 s current affinity mask ffffff 注 21184是redis server執行的pid 顯示結果的ffffff實際上是二進...

使用cgroup繫結程序到指定核

cgcreate g cpuset test cgset r cpuset.cpus 0test cgset r cpuset.mems 0test mems必須設定 cgexec g cpuset sunwg g1 python test.py 注 1.檢視linux文件發現cpuset子系統是有...