CPU的核心数、线程数的关系和区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU的核心数、线程数的关系和区别相关的知识,希望对你有一定的参考价值。

一、关系:

1、线程数可以模拟出不同的CPU核心数。

CPU的核心数指的是硬件上存在着几个核心,而线程数可以模拟出多个核心数的功能。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

2、对于一个CPU,线程数总是大于或等于核心数的。

一个核心最少对应一个线程,但通过超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。 

二、区别:

1、存在形式不同。

(1)、CPU的核心数指的是硬件上真实存在的物体;

(2)、CPU的线程数只是一种逻辑上的概念,并非真实存在的物体,只是为了更好地描述CPU的运作能力。

2、线程数对于不同的CPU类型存在状态不同。 

(1)、对于Intel的CPU:除了核心数的说法之外,还可以使用线程数的概念,因为它是通过Intel超线程技术来实现的。

(2)、对于AMD的CPU:只有核心数的说法,而没有线程数的概念,因为AMD的CPU没有超线程技术,一个CPU核心固定地对应一个线程。

3、出现原因不同。

(1)、核心数出现的原因:处理器主频提升上的技术遇到瓶颈,向“多核心”的方向发展可以在不用进行大规模开发的情况下将现有产品发展成为理论性能更为强大的多核心处理器系统,也因此出现了“核心数”的说法。

(2)、线程数出现的原因:为了进一步提高计算机多任务处理的工作能力。线程数越多,越有利于同时运行多个程序。

扩展资料:

线程数的多少,自然会影响到下载速度的多少,这样看来,下载线程数应该设置的越高越好,这样的理解是错误的。线程数的多少,要根据服务端和用户端的具体情况而定。

一般情况下,网络中的服务端,为用户提供的连接线程数,在1—10个,用户可以根据不同的服务端限制,来修改下载软件的原始下载线程数。根据下载资源的热门程度,其候选资源数量的不同,该任务下载可用的线程数也会不同,一般可以设置在35-50之间。

参考资料来源:百度百科-核心数量

参考资料来源:百度百科-线程数

参考技术A

一、关系:

1、线程数可以模拟出不同的CPU核心数。

CPU的核数是指硬件上有多个核,线程数可以模拟多个核的功能。线程越多,就越有利于同时运行多个程序,因为线程数等于CPU在某一时刻可以同时并行处理的任务数。

2、对于一个CPU,线程数总是大于或等于核心数的。

一个内核至少对应一个线程,但通过超线程技术,一个内核可以对应两个线程,即可以同时运行两个线程。

二、区别:

1、不同的存在形式

(1)CPU的核心数是指硬件上的真实对象。

(2)CPU线程数只是一个逻辑概念,不是一个真正的对象,只是为了更好地描述CPU的运行能力。

2、线程数对于不同的CPU类型存在不同的状态

(1)对于英特尔CPU:除了核心数之外,还可以使用线程数的概念,因为它是通过英特尔超线程技术实现的。

(2)对于AMDCPU:只有内核数,没有线程数的概念。因为AMDCPU没有超线程技术,一个CPU核对应一个线程。

3、出现原因不同

(1)核心数产生的原因:提高处理器主频的技术遇到了瓶颈。为了在“多核”的方向上发展,现有的产品可以发展成一个具有更强大理论性能而没有大规模发展的多核处理器系统。因此,“核心数”一词应运而生。

(2)线程数量的原因:为了进一步提高计算机的多任务处理能力。线程越多,同时运行多个程序就越好。

参考资源来源:

百度百科-核心数量

百度百科-线程数

参考技术B

一个核心最少对应一个线程,通过超线程技术,一个核心可以对应两个线程。超线程技术是很好的提升核心利用率,将闲置处理资源充分调动起来,在操作系统中一颗物理CPU能当做多颗CPU来使用。当然要发挥出多核多线程的作用,还需要软件和操作系统的支持优化。

CPU核心

随着工艺的局限和频率的难以提升,CPU的性能不能再是无限制的往高频率的方向发展了,开始转向多核心的方向,简单地说,就是在一个物理内核里并列几个功能相同的核心,它们可以并行执行不同的任务进程,打个比方说,以前是一个人上夜班,现在是四个人上夜班,这就是所谓的CPU核心。

各个CPU核心都具有固定的逻辑结构,如一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元等,CPU核心的进步对普通消费者而言,就是能以较低的价格买到性能较强的CPU。

但是,在多核CPU中,并不是所有的核心都是在全速满负载工作,可能有时内核会有所闲置,这样就有了Intel的超线程和AMD的多线程技术,把这些闲置资源利用起来。

线程

严格来说,线程(Thread)是操作系统能够进行运算调动的最小单位,作为进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

多线程指的是在一个CPU核心上执行多个线程,或者多个任务,虽然在同一核心但是它们之间完全分离。

参考技术C 一般来说,CPU的 线程 数跟CPU的 核心 数一致。但是部分技术如超线程技术会让一个物理核心模拟成逻辑核心,用较少的芯片面积代价换取更强的多任务处理能力。但是更多核心的CPU,为求运行稳定所以频率都较之同Die的CPU主频要低。Intel和AMD都有自家的TurboBoot和TurboCore技术,其技术思路都是针对目前大部分游戏应用对多核心优化不足,以关闭部分核心的代价而换取其他核心在更高主频上工作,最终达到不超过TPD的情况下高效工作。 部分AMD的CPU具有所谓“开核”功能(详细解析点我),其根本原因是厂商并没从硬件层进行核心屏蔽,ACC技术(高级时钟校正)可以增强CPU的容错性能,导致部分屏蔽核心重新开启运作。 由于AMD的CPU都是由同一款晶片上通过屏蔽L3或者核心从而获得其他低端产品,所以所有AMD同代的CPU都理论上存在破解可能性,不过是否能够破解成功,一般只取决你是否额外加钱挑出能开的CPU,以及厂商的市场策略。 对玩家的建议 单机玩家:选择有TurboBoot和TurboCore等动态加速技术很重要,对于《幕府将军》和《GTA》以及今后的游戏应用中,多核心优化是大趋势,同时具有动态加速+多核心是游戏玩家的首选。 网游玩家:网络游戏耗时通常较长,并且无法接受副本过程中蓝屏死机,带有节能效果的S系列(Intel)和e系列(AMD)的CPU更适合他们;如果考虑到多开的话,三核心到四核心的CPU更适合网游玩家。 一般就是说,核心就是工作的单位,线程就是通道。形象点来说就是:如果是双核心四线程,就是有2个工作的工人,有四条流水线来运输工人处理后的数据,如果是双核心双线程,就是有2个工作的工人,只有两条流水线来运输工人处理后的数据 参考技术D CPU的核心数,就是代表它是我们常说的几核电脑,
现在CPU主要也就两家,AMD Intel.
AMD的CPU几核就是几核,当然有极个别的可以超频,也称开核,
线程数,主要指Intel的CPU ,它采用超线程技术,单核的通过超线程技术可以显示为双核,双核的显示为4核,而且性能稳定,比起AMD的CPU发热更少,因为比它少一半核心嘛。

响应速度与uwsgi线程数的关系

压测发现接口响应较慢,代码打日志发现接口执行时间月0.04s,通过修改uwsgi进程与线程数量可显著影响响应速度及其分布。

结论:

压测时并发请求较多,

如果uwsgi worker较少,可以很快响应到来的请求(0.04s),但剩余请求会堆积,等待uwsgi处理,所以这种情况下,响应时间小者很小,大者很大。
技术图片

如果uwsgi worker较多,超过cpu核心数,则同时有很多请求被多个uwsgi处理,但这些worker会争夺cpu资源,导致每个请求的处理都较慢,但多个请求处理完的时间相近,所以这种情况下,响应时间小者很大,大者却不比小者大很多。

技术图片

此外发现thunder-lock明显拖慢响应速度。


参考:https://stackoverflow.com/questions/14962289/bad-django-uwsgi-performance

技术图片

以上是关于CPU的核心数、线程数的关系和区别的主要内容,如果未能解决你的问题,请参考以下文章

(转)CPU的核心数线程数的关系和区别

CPU的“核心数”、“线程数”的关系和区别分别是啥?

线程池大小设置,CPU的核心数线程数的关系和区别,同步与堵塞完全是两码事

线程池大小设置,CPU的核心数线程数的关系和区别,同步与堵塞完全是两码事

cpu个数、核数、线程数的关系

线程池应该设置多少核心线程数——Java多线程系列学习笔记