CPU
————
————
CPU
CPU物理个数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)
[root@ufo ~]# grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
2
每个CPU的核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)
[root@ufo ~]# grep 'cpu cores' /proc/cpuinfo|uniq|awk -F ':' '{print $2}'
8
逻辑CPU个数:一般情况下,逻辑cpu数=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术( HT 简单来说,它可使处理器中的1颗内核像2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu数=物理CPU个数×每颗核数x2)
[root@ufo ~]# cat /proc/cpuinfo| grep "processor"|wc -l
32
总核数 = CPU物理个数 x 每个CPU的核数
总逻辑CPU数 = 物理CPU个数 x 每颗物理CPU的核数 x 超线程数
SMP(Symmetric Multi-Processing),即对称多处理器结构,特征是只有一个操作系统实例,运行在多个CPU上,每个CPU的结构都是一样的,内存、资源共享。
top
top命令默认显示进程的数据(进程模式),如果使用top -H,该选项会列出所有Linux线程。如果top已经运行了,也可以通过按“H”键切换线程模式,每一个线程的%cpu最高也就100%。
%CPU表示的是上次更新到现在的CPU时间占用百分比,在实际的SMP环境中,如果进程有多个线程,用top命令默认模式查询,那么可能导致结果大于100%。
理论上cpu总共有N个核,top默认进程模式就可以显示到上限 N*100% 。总核数N = CPU物理个数 x 每个CPU的核数 (top 按"1"切换看到的是逻辑cpu个数,不是总核数,注意区别。总逻辑CPU数 = 物理CPU个数 x 每颗物理CPU的核数 x 超线程数)
top -H,或者top运行后按下H开启线程模式。
top -H -p pid(top进程模式查到的pid)
pstree命令快速查看进程中线程的关系:
$ pstree -p 15736
samples_test(15736)─┬─{samples_test}(15737)
└─{samples_test}(15738)