物理CPU数、CPU核心数、进程数
参考CSDN博客:https://blog.csdn.net/helloworld0906/article/details/90547159
一、 物理cpu数、cpu核数、线程数(逻辑cpu数)的关系
物理cpu数:是指物理上,也及硬件上的核心数,即实际server中插槽上的cpu的个数,物理cpu的数量,可以数不重复的physical id 有几个;
核数:一个物理CPU是几个核心的CPU组成;( 比如Intel 赛扬G460是单核心,双线程的CPU,Intel 酷睿i3 3220是双核心 四线程,Intel 酷睿i7 4770K是四核心 八线程 ,Intel 酷睿i5 4570是四核心 四线程等等)
逻辑cpu:单核cpu通过超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来,使得一个核心可以对应两个线程,也就是说它可以同时运行两个线程。(逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht),备注一下:Linux下top查看的CPU也是逻辑CPU个数)
线程数:是同一时刻物理cpu能并行执行的程序个数,总线程数=物理CPU数*cpu核心数 * 逻辑CPU数
二、进程相关了解
对于一个CPU,线程数总是大于或等于核心数的。一个核心最少对应一个线程,但通过超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。
线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。我们从任务管理器的性能标签页中看到的是两个CPU。 比如Intel 赛扬G460是单核心,双线程的CPU,Intel 酷睿i3 3220是双核心 四线程,Intel 酷睿i7 4770K是四核心 八线程 ,Intel 酷睿i5 4570是四核心 四线程等等。
对于一个CPU,线程数总是大于或等于核心数的。一个核心最少对应一个线程,但通过超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。 CPU的线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在Pentium4上。如果没有超线程技术,一个CPU核心对应一个线程。所以,对于AMD的CPU来说,只有核心数的概念,没有线程数的概念。
CPU之所以要增加线程数,是源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。
三、物理CPU数、CPU核心数、进程数(逻辑CPU数)之间的关系
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
#查看线程数 grep 'processor' /proc/cpuinfo | sort -u | wc -l
注意,此处查看的线程数是总得线程数,可以理解为逻辑cpu的数量
四、查看windows的物理CPU数、CPU核心数、进程数(逻辑CPU数)
在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中输入“cpu get *”即可查看物理CPU数、CPU核心数、线程数。其中,
Name:表示物理CPU数
NumberOfCores:表示CPU核心数
NumberOfLogicalProcessors:表示CPU线程数
1、在cmd命令中输入“wmic”,然后在出现的新窗口中分别输入“cpu get Name”,“cpu get NumberOfCores”,“cpu get NumberOfLogicalProcessors”即可查看物理CPU数、CPU核心数、线程数。
如下图所示:
Name:表示物理CPU数
NumberOfCores:表示CPU核心数
NumberOfLogicalProcessors:表示CPU线程数
注释:VM虚拟机中的CPU选择的核心数实际是代表线程数。
输入“cpu get *”也可
2.在cmd命令中输入“systeminfo”,以下信息表示物理CPU有两个
最新文章
- Data Science at the Command Line学习笔记(二)
- java.net.SocketException:Software caused connection abort: recv failed 异常分析 +socket客户端&;服务端代码
- [HTML][服务器]状态码列表status
- Android手机分辨率基础知识(DPI,DIP计算)
- excel表里的数据导入到数据库里
- 移动端开发(使用webuploader上传图片,客户端交互,修改alert弹窗等)
- 设计模式C++达到 3.抽象工厂
- 贪心+bfs 或者 并查集 Codeforces Round #268 (Div. 2) D
- 循环语句——do…while语句
- 前端学PHP之日期与时间
- [.NET]使用十年股价对比各种序列化技术
- Printer for Me
- 这么小的key-val数据库居然也支持事务——与短跑名将同名的数据库Bolt
- 理解REST和RPC
- R语言-attach、detach、with
- javascript 数组去重的6种思路
- mangodb驱动编译
- TCP粘包处理 参考spserver
- C# 操作 MongoDB
- TOJ 1885 Triangles
热门文章
- 《构建之法》项目管理&;典型用户和场景
- 异步处理ServletRequest引发的血案
- mysql配置默认字符集为UTF8mb4
- 卷积神经网络CNN识别MNIST数据集
- nextjs:如何将静态资源发布到 CDN
- 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境
- yum安装出现No package vim available解决办法
- .NET Core开发的iNeuOS物联网平台部署树霉派,从网关到云端整体解决方案。助力2019中国.NET峰会。
- 代码审计-MetInfo CMS变量覆盖漏洞
- linux系统取证