cpu个数、核数、线程数的关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cpu个数、核数、线程数的关系相关的知识,希望对你有一定的参考价值。
参考技术A cpu个数:是指物理上,也及硬件上的核心数;核数:是逻辑上的,简单理解为逻辑上模拟出的核心数;
线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数 * 核数
首先明白几个概念:
(1) 单个cpu线程在同一时刻只能执行单一Java程序,也就是一个线程
(2) 单个线程同时只能在单个cpu线程中执行
(3) 线程是操作系统最小的调度单位,进程是资源(比如:内存)分配的最小单位
(4)Java中的所有线程在JVM进程中,CPU调度的是进程中的线程
(5)Java多线程并不是由于cpu线程数为多个才称为多线程,当Java线程数大于cpu线程数,操作系统使用时间片机制,采用线程调度算法,频繁的进行线 程切换。
a 那么java多进程,每个进程又多线程,cpu是如何调度的呢?
个人理解:操作系统并不是单纯均匀的分配cpu执行不同的进程,因为线程是调度的最小单位,所以会根据不同进程中的线程个数进行时间分片,均匀的执 行每个线程,也就是说A进程中有10个线程,而B进程中有2个进程,那么cpu分给进程的执行时间理论上应该是5:1才合理。
b cpu线程数和java线程数有直接关系吗?
个人理解:没有直接关系,正如上面所说,cpu采用分片机制执行线程,给每个线程划分很小的时间颗粒去执行,但是真正的项目中,线程要做很多的的操 作,读写磁盘、数据逻辑处理、出于业务需求必要的休眠等等操作。
c 如何确定程序线程数?
个人理解:一般情况程序线程数等于cpu线程数的两到三倍就能很好的利用cpu了,过多的程序线程数不但不会提高性能,反而还会因为线程间的频繁切换 而受影响,具体需要根据线程处理的业务考略,不断调整线程数个数,确定当前系统最优的线程数。
Linux上如何查看物理CPU个数,核数,线程数
首先,看看什么是超线程概念
超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的运行效率。
超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
其次,看看物理CPU个数,核数以及线程数的关系
总核数 = 物理CPU个数 * 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数
上述公式中,逻辑CPU数即线程数
如何查看CPU物理个数
# grep ‘physical id‘ /proc/cpuinfo | sort -u
physical id : 0 physical id : 1
如何查看每个物理CPU的核数
# grep ‘core id‘ /proc/cpuinfo | sort -u | wc -l
8
如何查看总的逻辑CPU个数
# grep ‘processor‘ /proc/cpuinfo | sort -u | wc -l
32
32/8/2=2,可见该CPU支持并已打开超线程。
如何查看CPU的型号
# dmidecode -s processor-version
Intel(R) Xeon(R) CPU E5-2658 @ 2.10GHz Intel(R) Xeon(R) CPU E5-2658 @ 2.10GHz
关于物理CPU,核数以及超线程的区别
A core is the most basic computational unit of a processor. A processor is made up of one or more cores. Tradition processors had only one core while modern processors have multiple cores.
A core consists of an ALU, CU, and a set of registers.
A core consists of two levels of caches called L1 and L2 which is there in each core.
A processor consists of a cache that is shared by call cores called L3 cache. It is common to all cores.
A processor depending on the architecture can consist of a memory controller and an input/output controller.
Certain processor packages consist of Graphics Processing Units (GPU) as well.
A core that does not have hyper-threading can execute only one instruction at a time while a multicore processor made up of several cores can execute several instructions parallel. If a processor is made up of 4 cores that do not support hyper threading then that processor can execute 4 instructions at the same time.
A core having hyper-threading technology has redundant functional units so that they can execute multiple instructions at a time. For example, a core with 2 threads can execute 2 instructions at the same time hence a processor with 4 such cores can execute 2×4 instructions parallel. These threads are usually called logical cores and the task manager of Windows generally show the number of logical cores but not the physical cores.
以上是关于cpu个数、核数、线程数的关系的主要内容,如果未能解决你的问题,请参考以下文章