通过cat/proc/cpuinfo命令,可以查看CPU相关的信息:
[root
rh~]$cat/proc/cpuinfoprocessor:0
vendor_id:GenuineIntel
cpufamily:6
model:44
modelname:Intel(R)Xeon(R)CPUE
.40GHzstepping:
cpuMHz:.
cachesize:KB
physicalid:0
siblings:8
coreid:0
cpucores:4
apicid:0
initialapicid:0
fpu:yes
fpu_exception:yes
cpuidlevel:11
wp:yes
flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmovpatpse36clflushdtsacpimmxfxsrssessesshttmpbesyscallnxpdpe1gbrdtscplmconstant_tscarch_perfmonpebsbtsrep_goodxtopologynonstop_tscaperfmperfpnipclmulqdqdtes64monitords_cplvmxsmxesttmssse3cx16xtprpdcmpciddcasse4_1sse4_popcntaeslahf_lmaratepbdtstpr_shadowvnmiflexpriorityeptvpid
bogomips:.15
clflushsize:64
cache_alignment:64
addresssizes:40bitsphysical,48bitsvirtual
powermanagement:
......
在查看到的相关信息中,通常有些信息比较让人迷惑,这里列出一些解释:
physicalid:指的是物理封装的处理器的id。
cpucores:位于相同物理封装的处理器中的内核数量。
coreid:每个内核的id。
siblings:位于相同物理封装的处理器中的逻辑处理器的数量。
processor:逻辑处理器的id。
我们通常可以用下面这些命令获得这些参数的信息:
[root
rh~]$cat/proc/cpuinfogrep"physicalid"
sort
uniq
physicalid:0
physicalid:1
[root
rh~]$cat/proc/cpuinfogrep"cpucores"
sort
uniq
cpucores:4
[root
rh~]#cat/proc/cpuinfogrep"coreid"
sort
uniq
coreid:0
coreid:1
coreid:10
coreid:9
[root
rh~]$cat/proc/cpuinfogrep"siblings"
sort
uniq
siblings:8
[root
rh~]$cat/proc/cpuinfogrep"processor"
sort
uniq
processor:0
processor:1
processor:10
processor:11
processor:1
processor:13
processor:14
processor:15
processor:
processor:3
processor:4
processor:5
processor:6
processor:7
processor:8
processor:9
通过上面的结果,可以看出这台机器:
1)有个物理封装的处理器(physicalid有个);
)每个物理封装的处理器有4个内核(cpucores为4);
3)每个物理封装的处理器有8个逻辑处理器(siblings为8),可见台机器的处理器开启了超线程技术,每个内核(core)被划分为了个逻辑处理器(processor);
4)总共有16个逻辑处理器(processor有16个);
超线程技术:超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。
1.、查看多核CPU信息可以使用mpstat命令或sar命令来查看。具体使用可以通过manmpstat/sar来查看。
、在Linux环境下计算进程的CPU占用.1、通过/proc/stat文件查看所有的CPU活动信息下面实例数据是内核.6.4-4版本以上的:
[root
rh~]$cat/proc/statcpu
cpu071678
cpu
cpu
cpu
cpu
cpu547936906
cpu69
cpu
cpu
cpu
cpu
cpu
cpu
cpu139446479
cpu147300476
cpu
intr1144384911187071704...省略若干数据...
ctxt
btime
processes
procs_running1
procs_blocked0
softirq417638854
第一行的数据表示的是CPU总的使用情况。我们来解释一下这行数据各数值的含义:
1)这些数值的单位都是jiffies,jiffies是内核中的一个全局变量,用来记录系统启动以来产生的节拍数,在Linux中,一个节拍大致可以理解为操作系统进程调度的最小时间片,不同的Linux系统内核这个值可能不同,通常在1ms到10ms之间。
)cpu
user()从系统启动开始累积到当前时刻,处于用户态的运行时间,不包含nice值为负的进程。
nice(40)从系统启动开始累积到当前时刻,nice值为负的进程所占用的CPU时间。
system()从系统启动开始累积到当前时刻,处于核心态的运行时间。
idle()从系统启动开始累积到当前时刻,除IO等待时间以外的其他等待时间。
iowait()从系统启动开始累积到当前时刻,IO等待时间。(since.5.41)
irq(41)从系统启动开始累积到当前时刻,硬中断时间。(since.6.0-test4)
softirq()从系统启动开始累积到当前时刻,软中断时间。(since.6.0-test4)
stealstolen(0)Whichisthetimespentinotheroperatingsystemswhenrunninginavirtualizedenvironment.(since.6.11)
guest(0)WhichisthetimespentrunningavirtualCPUforguestoperatingsystemsunderthecontroloftheLinuxkernel.(since.6.4)
从以上信息我们可以得到总的CPU活动时间为:
totalCPUTime=user+nice+system+idle+iowait+irq+softirq+stealstolen+guest
.、通过/proc/[PID]/stat文件查看某一进程的CPU活动信息..1、存储进程信息的文件目录
Linux系统贯彻“一切都是文件”的思想,所有的进程的运行状态也都可以通过读取文件来获取。/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。
在/proc/[PID]/目录下的各个文件记录着这个进程的各项运行指标。是进程号。
..、查看进程运行的详细信息
通过查看/proc/[PID]/stat文件,可以进程运行的详细信息,其中就包括CPU占用信息。比如:
[root
rh~]$cat/proc/1/stat1(init)S-301600101551615110518551615
/proc/[PID]/stat文件信息解释
看到上面这些信息,肯定会很迷惑,不知道每个字段都是什么意思。
1)我们可以通过man5proc命令查看文档,找到/proc/[pid]/stat节点,就可以看到各字段的意思了。如:
/proc/[pid]/stat
Statusinformationabouttheprocess.Thisisusedbyps(1).Itisdefinedin/usr/src/linux/fs/proc/array.c.
Thefields,inorder,withtheirproperscanf(3)formatspecifiers,are:
pid%dTheprocessID.