Linux下查看CPU相關(guān)信息
CPU的信息主要都在/proc/cupinfo中
# 查看物理CPU個數(shù)
cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l
# 查看每個物理CPU中core的個數(shù)(即核數(shù))
cat /proc/cpuinfo|grep "cpu cores"|uniq
# 查看邏輯CPU的個數(shù)
cat /proc/cpuinfo|grep "processor"|wc -l
# 查看CPU的名稱型號
cat /proc/cpuinfo|grep "name"|cut -f2 -d:|uniq
Linux查看某個進(jìn)程運(yùn)行在哪個邏輯CPU上
ps
ps -eo pid,args,psr
參數(shù)的含義:
pid - 進(jìn)程ID
args - 該進(jìn)程執(zhí)行時傳入的命令行參數(shù)
psr - 分配給進(jìn)程的邏輯CPU
例子:
# ps -eo pid,args,psr | grep nginx
nginx: master process /usr/ 1
nginx: worker process 0
nginx: worker process 1
nginx: worker process 2
nginx: worker process 3
grep nginx 3
taskset
taskset可以顯示進(jìn)程運(yùn)行的CPU仿贬,也可以讓某個程序運(yùn)行在某個(或)某些指定的CPU上陪捷。
OPTIONS
-p, --pid
在現(xiàn)有的PID上操作,不會啟動新的任務(wù).
-c, --cpu-list
指定處理器的數(shù)字列表而不是位掩碼. 該列表可能包含多個項目,用逗號和范圍分隔. 例如: 0,5,7,9-11.
Linux查看線程的TID
TID就是Thread ID,他和POSIX中pthread_t表示的線程ID完全不是同一個東西.
Linux中的POSIX線程庫實現(xiàn)的線程其實也是一個輕量級進(jìn)程(LWP),這個TID就是這個線程的真實PID.
但是又不能通過getpid()獲取,Linux中定義了gettid()這個接口,但是通常都是未實現(xiàn)的拗胜,所以需要使用下面的方式獲取TID。
//program
#include <sys/syscall.h>
pid_t tid;
tid = syscall(__NR_gettid); // or syscall(SYS_gettid)
# ps -efL | grep prog_name
# ls /proc/pid/task //文件夾名即TID