精华内容
下载资源
问答
  • CPU核心数目 与 多线程

    万次阅读 2017-03-16 22:05:23
    CPU核数跟多线程的关系一直以来有这样的疑惑,单核CPU适合多线程吗?是不是几个核的CPU开几个线程是最合适的?今天就这一问题查了一些资料,现整理如下:要说多线程就离不开进程,进程和线程的区别在这里就不详细说...

    一直以来有这样的疑惑,在现如今多核多线程的电脑处理器之下,一个进程中的几个线程是 怎么运行的呢?(是经系统和JVM分配少量的资源 最后轮流切换 时间调度?还是这几个线程分配到不同的核上同时运行?)
    今天就这一问题查了一些资料,现整理如下:

    单个CPU一个时刻只能运行一个线程?

    单核CPU电脑同一时间内只能执行一个线程,首先了解一下,CPU执行的过程 ,它是把时间分成若干个小时间段,这些时间段很小的,系统中有很多进程,每个进程中又包含很多线程,在同一 时间段 内,电脑CPU只能处理一个线程(线程A),而下一个 时间段 就不一定是上一个时间段内执行的那个线程(线程A)了,可能是别的线程(线程B 吧)

    CPU采用的是类似于时间片轮转的机制,也就是说同一时间一条进程提出执行请求时,其他进程只能等待它执行完毕,CPU才会处理其他请求。其他进程相当于在排队等待中。当然了,为了避免某条进程无限制时间的执行,一般会限定一个时间,超时 的话,CPU根据一定的线程调度算法来切换线程。可以看做很多线程在并发执行。其实还是在某一个时间点上只有一个线程在运行罢了。
    多核的话,每个核心都是同样的原理。但是两个核心就可以通过系统分配资源,同时执行不同的进程,这个就更复杂了。
    每条进程都有CPU分配的进程号的。避免混乱。

    一个核心就是实实在在的一个cpu处理设备 线程的概念可以理解成电脑处理信息的通道 既一个线程一个通道 一般来说一个cpu核心处理一个通道的信息 但也不是绝对 因特尔支持超线程技术的cpu每个核心可以处理两个或多个通道的信息 这就可以形容为超线程(既多出来的通道的处理能力)但前提是软件也必须的支持超线程才行 否则单核双线程或多线程也只能有单个通道工作 从某种意义上来说cpu的能力被浪费了 所以网友一般就会说 真正的核心数(通道) 比虚拟出来的核心(通道)来个更实在。最后 线程数决定这CPU能同时处理几件事情,在没有超线程技术的情况下核心数等於线程数。

    java线程调度

    CPU对于各个线程的调度是随机的(分时调度),在Java程序中,JVM负责线程的调度。 线程调度是指按照特定的机制为多个线程分配CPU的使用权,也就是实际执行的时候是线程,因此CPU调度的最小单位是线程,而资源分配的最小单位是进程。

    JVM调度的模式有两种:分时调度抢占式调度。

    分时调度 是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;

    抢占式调度 是根据线程的优先级别来获取CPU的使用权。JVM的线程调度模式采用了抢占式模式。既然是抢占调度,那么我们就能通过设置优先级来“有限”的控制线程的运行顺序,注意“有限”一次。

    CPU核数 跟多线程 的关系

      要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键的几点:

    a)进程之间是 相互独立的,不共享 内存和数据,线程之间 的内存和数据是 公用的,每个线程只有自己的一组CPU指令、寄存器和堆栈,对于线程来说只有CPU里的东西是自己独享的,程序中的其他东西都是跟同一个进程里的其他线程共享的。

    b)操作系统创建进程时要分配好多外部资源,所以开销大。(这个跟操作系统有关,有人做过实验,window创建进程的开销大,Linux创建进程的开销就很小。)

    再来说一下CPU,过去单CPU时代最先是单任务阶段 在一个时间点 只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。而现在多核CPU的情况下,同一时间点可以执行多个任务(并行),具体到这个任务在CPU哪个核上运行,这个就跟操作系统和CPU本身的设计相关了。

    我们假设一个极端的情况:在一台单核计算机上只运行2个程序,一个是我们的程序A,另一个是操作系统的程序B,每个程序是一个进程。单核CPU的时候,A和B在CPU上交替运行,具体的分配方式由操作系统来判断,我这里猜测应该跟A和B的线程数有关,因为线程是CPU级别的,如果A有5个线程,B也有5个线程,那么CPU分配给A和B的时间应该是1:1的;如果A增加到15个线程,CPU分配给A和B的时间应该是3:1的比例。所以此时如果A的线程数多,那么获得的CPU执行次数就多,处理的速度也就快了。以上假设的前提是:①A和B的优先级相同,②A和B都是只消耗CPU资源的程序。

    如果相同的情况用一个双核的计算机来处理又会是什么结果呢?假设这个双核的计算机和操作系统比较傻,把A进程分配到核1上,B进程分配到核2上,那不管A有几个线程,都是用核1来处理,那么时间肯定是一样的。不过现实中应该不会有这么傻的CPU和操作系统吧。所以赶紧还是会根据线程来进行处理,当A的线程比B多时,会占用核2来处理A的线程。

    刚才说的是只消耗CPU资源的程序,但这样的程序在实际应用中基本上是没有的,总会有跟资源打交道的。比如读个文件,查个数据库,访问一个网络连接等等。这个时候多线程才真正体现出优势,在一个进程中,线程a去读文件,线程b去查数据库,线程c去访问网络,a先用一下CPU,然后去读文件,此时CPU空闲,b就用一下,然后去查数据库,……,相对于读文件、查数据库、访问网络来说CPU计算的时间几乎可以忽略不计,所以多线程实际上是计算机多种资源的并行运用,跟CPU有几个核心是没什么关系的。

    https://my.oschina.net/xiaotian120/blog/196201 (java线程调度)
    http://blog.csdn.net/ziwen00/article/details/38097297(这篇写的也不错)

    展开全文
  • Java:线程:CPU核心数目 与 多线程

    千次阅读 2018-10-01 00:16:29
    1.多线程的几个状态?以及何时处于这个状态?  开始(创建):在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。  就绪:当调用了线程对象的start方法之后,该线程就进入了就绪状态...

    1.多线程的几个状态?以及何时处于这个状态?

           开始(创建):在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。

      就绪:当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。

      运行:线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。

      阻塞: 线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。

      结束:如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。

    2.时间片的概念是什么?


    时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。 

    ================================================================================

     

    一直以来有这样的疑惑,在现如今多核多线程的电脑处理器之下,一个进程中的几个线程是 怎么运行的呢?(是经系统和JVM分配少量的资源 最后轮流切换 时间调度?还是这几个线程分配到不同的核上同时运行?)
    今天就这一问题查了一些资料,现整理如下:

    单个CPU一个时刻只能运行一个线程?

    单核CPU电脑同一时间内只能执行一个线程,首先了解一下,CPU执行的过程 ,它是把时间分成若干个小时间段,这些时间段很小的,系统中有很多进程,每个进程中又包含很多线程,在同一 时间段 内,电脑CPU只能处理一个线程(线程A),而下一个 时间段 就不一定是上一个时间段内执行的那个线程(线程A)了,可能是别的线程(线程B 吧)

    CPU采用的是类似于时间片轮转的机制,也就是说同一时间一条进程提出执行请求时,其他进程只能等待它执行完毕,CPU才会处理其他请求。其他进程相当于在排队等待中。当然了,为了避免某条进程无限制时间的执行,一般会限定一个时间,超时 的话,CPU根据一定的线程调度算法来切换线程。可以看做很多线程在并发执行。其实还是在某一个时间点上只有一个线程在运行罢了。
    多核的话,每个核心都是同样的原理。但是两个核心就可以通过系统分配资源,同时执行不同的进程,这个就更复杂了。
    每条进程都有CPU分配的进程号的。避免混乱。

    一个核心就是实实在在的一个cpu处理设备 线程的概念可以理解成电脑处理信息的通道 既一个线程一个通道 一般来说一个cpu核心处理一个通道的信息 但也不是绝对 因特尔支持超线程技术的cpu每个核心可以处理两个或多个通道的信息 这就可以形容为超线程(既多出来的通道的处理能力)但前提是软件也必须的支持超线程才行 否则单核双线程或多线程也只能有单个通道工作 从某种意义上来说cpu的能力被浪费了 所以网友一般就会说 真正的核心数(通道) 比虚拟出来的核心(通道)来个更实在。最后 线程数决定这CPU能同时处理几件事情,在没有超线程技术的情况下核心数等於线程数。

    java线程调度

    CPU对于各个线程的调度是随机的(分时调度),在Java程序中,JVM负责线程的调度。 线程调度是指按照特定的机制为多个线程分配CPU的使用权,也就是实际执行的时候是线程,因此CPU调度的最小单位是线程,而资源分配的最小单位是进程。

    JVM调度的模式有两种:分时调度抢占式调度。

    分时调度 是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;

    抢占式调度 是根据线程的优先级别来获取CPU的使用权。JVM的线程调度模式采用了抢占式模式。既然是抢占调度,那么我们就能通过设置优先级来“有限”的控制线程的运行顺序,注意“有限”一次。

    CPU核数 跟多线程 的关系

      要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键的几点:

    a)进程之间是 相互独立的,不共享 内存和数据,线程之间 的内存和数据是 公用的,每个线程只有自己的一组CPU指令、寄存器和堆栈,对于线程来说只有CPU里的东西是自己独享的,程序中的其他东西都是跟同一个进程里的其他线程共享的。

    b)操作系统创建进程时要分配好多外部资源,所以开销大。(这个跟操作系统有关,有人做过实验,window创建进程的开销大,Linux创建进程的开销就很小。)

    再来说一下CPU,过去单CPU时代最先是单任务阶段 在一个时间点 只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。而现在多核CPU的情况下,同一时间点可以执行多个任务(并行),具体到这个任务在CPU哪个核上运行,这个就跟操作系统和CPU本身的设计相关了。

    我们假设一个极端的情况:在一台单核计算机上只运行2个程序,一个是我们的程序A,另一个是操作系统的程序B,每个程序是一个进程。单核CPU的时候,A和B在CPU上交替运行,具体的分配方式由操作系统来判断,我这里猜测应该跟A和B的线程数有关,因为线程是CPU级别的,如果A有5个线程,B也有5个线程,那么CPU分配给A和B的时间应该是1:1的;如果A增加到15个线程,CPU分配给A和B的时间应该是3:1的比例。所以此时如果A的线程数多,那么获得的CPU执行次数就多,处理的速度也就快了。以上假设的前提是:①A和B的优先级相同,②A和B都是只消耗CPU资源的程序。

    如果相同的情况用一个双核的计算机来处理又会是什么结果呢?假设这个双核的计算机和操作系统比较傻,把A进程分配到核1上,B进程分配到核2上,那不管A有几个线程,都是用核1来处理,那么时间肯定是一样的。不过现实中应该不会有这么傻的CPU和操作系统吧。所以赶紧还是会根据线程来进行处理,当A的线程比B多时,会占用核2来处理A的线程。

    刚才说的是只消耗CPU资源的程序,但这样的程序在实际应用中基本上是没有的,总会有跟资源打交道的。比如读个文件,查个数据库,访问一个网络连接等等。这个时候多线程才真正体现出优势,在一个进程中,线程a去读文件,线程b去查数据库,线程c去访问网络,a先用一下CPU,然后去读文件,此时CPU空闲,b就用一下,然后去查数据库,……,相对于读文件、查数据库、访问网络来说CPU计算的时间几乎可以忽略不计,所以多线程实际上是计算机多种资源的并行运用,跟CPU有几个核心是没什么关系的。

     

    https://my.oschina.net/xiaotian120/blog/196201 (java线程调度)
    http://blog.csdn.net/ziwen00/article/details/38097297(这篇写的也不错)

    原文参考:https://blog.csdn.net/qq_33530388/article/details/62448212

    展开全文
  • 转自:CPU个数、CPU核心数、CPU线程数(by kimsimple)   CPU个数即CPU芯片个数。 CPU核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU...

    转自:CPU个数、CPU核心数、CPU线程数(by kimsimple)

     

    CPU个数即CPU芯片个数。

    CPU核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的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主要分原生多核封装多核
      原生多核指的是真正意义上的多核,最早由AMD提出,每个核心之间都是完全独立的,都拥有自己的前端总线,不会造成冲突,即使在高负载状况下,每个核心都能保证自己的性能不受太大的影响,通俗的说,原生多核的抗压能力强,但是需要先进的工艺,每扩展一个核心都需要很多的研发时间。
      封装多核是只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起,但两核心只能共同拥有一条前端总线,在两个核心满载时,两个核心会争抢前端总线,导致性能大幅度下降,所以早期的PD被扣上了“高频低能”的帽子,要提高封装多核的性能,在多任务的高压下尽量减少性能损失,只能不断的扩大前端总线的总体大小,来弥补多核心争抢资源带来的性能损失,但这样做只能在一定程度上弥补性能的不足,和原生的比起来还是差了很多,而且后者成本比较高,优点在于多核心的发展要比原生快的多。

    HT技术超线程技术,是造就了PENTIUM 4的一个辉煌时代的武器,尽管它被评为失败的技术,但是却对P4起一定推广作用,双核心处理器是全新推出的处理器类别;HT技术是在单个处理器实现2个逻辑处理器,是充分利用单个处理器资源,而双核心处理器则是集成2个物理核心,是实际意义上的双核心处理器。

    通常,把将两个或更多独立处理器封装在一个单一集成电路(IC)中的方案称为多核心处理器;而封装在不同IC中的独立处理器形成的计算机系统被称为多处理器

    多核心处理器!=多处理器

    多核心处理器可以在不将每个核心分别独立物理封装的情况下进行多任务处理(线程级并发处理Thread-Level Parallelism,TLP),这种形式的TLP通常被认为是芯片级多处理)。

     


    单核多CPU与多核单CPU

    一台计算机的处理器部分的架构:

    单核多CPU,那么每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。(一致性问题)

    假如在这样的架构上,我们要跑一个多线程的程序(常见典型情况),不考虑超线程,那么每一个线程就要跑在一个独立的CPU上,线程间的所有协作都要走总线,而共享的数据更是有可能要在好几个Cache里同时存在。这样的话,总线开销相比较而言是很大的,怎么办?那么多Cache,即使我们不心疼存储能力的浪费,一致性怎么保证?

    多核单CPU,那么我们只需要一套芯片组,一套存储,多核之间通过芯片内部总线进行通信,共享使用内存。在这样的架构上,如果我们跑一个多线程的程序,那么线程间通信将比上一种情形更快。

    多个CPU常见于分布式系统,用于普通消费级市场的不多,多用于cluster,云计算平台什么的。多CPU架构最大的瓶颈就是I/O,尤其是各个CPU之间的通讯,低成本的都用100M以太网做,稍微好一点的用1000M以太网,再好的就用光纤等等,但无论如何速度和通量都比不上主板的主线。所以多CPU适用于大计算量,对速度(时间)不(太)敏感的任务,比如一些工程建模,或者像SATI找外星人这种极端的,跑上几千年都不着急的。而且多CPU架构更简单清晰,可以用消费级产品简单做数量堆叠,成本上有优势。而多核单CPU则适合对通讯I/O速度要求较快的应用,(相同核数量下)成本上也高一些,好像只有在超级计算机里会用到以万为单位的核心数,普通消费级产品也就是到16核封顶了,因为成本控制的原因。

     


    1、在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中分别输入

    “cpu get Name”,

    “cpu get NumberOfCores”,

    “cpu get NumberOfLogicalProcessors”

    即可查看物理CPU数、CPU核心数、线程数。
    如下图所示:

    Name:表示物理CPU名称
    NumberOfCores:表示CPU核心数 
    NumberOfLogicalProcessors:表示CPU线程数

    2、在cmd命令中输入“systeminfo”,可以查询物理CPU个数。

    展开全文
  • Linux查看多线程及多核心CPU使用率

    千次阅读 2016-05-11 15:11:19
    Linux下可以使用ps指令查看进程及线程CPU上的运行情况,指令如下(假定查看python进程的情况): root@dynamic-G31M-ES2C:~# ps -eo ruser,pid,ppid,lwp,psr,args -L | grep python dynamic 3963 1 3963 0 /usr/...

    Linux下可以使用ps指令查看进程及线程在CPU上的运行情况,指令如下(假定查看python进程的情况):

    root@dynamic-G31M-ES2C:~# ps -eo ruser,pid,ppid,lwp,psr,args -L | grep python
    dynamic   3963     1  3963   0 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
    dynamic   3963     1  4010   1 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video
    dynamic   4028     1  4028   1 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
    dynamic   4028     1  4043   1 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
    dynamic   4028     1  4045   1 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote
    root      4163     1  4163   0 /usr/bin/python /usr/lib/system-service/system-service-d
    dynamic   4167     1  4167   1 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
    dynamic   4167     1  4170   1 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
    dynamic   4167     1  4171   0 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
    dynamic   4167     1  4199   0 /usr/bin/python /usr/bin/update-manager --no-focus-on-map
    

    其中,每一列依次为:用户ID,进程ID,父进程ID,线程ID,运行该线程的CPU的序号,命令行参数(包括命令本身)。


    采用top指令可以查看多核心CPU每个核心的占用率,指令如下(先执行top指令,再按数字键1,即可看到每个CPU核心的使用率):

    root@dynamic-G31M-ES2C:~# top
    top - 15:15:45 up 12 days, 18:28,  5 users,  load average: 0.14, 0.15, 0.12
    Tasks: 153 total,   1 running, 152 sleeping,   0 stopped,   0 zombie
    Cpu0  :  3.1%us,  2.1%sy,  0.0%ni, 89.6%id,  3.8%wa,  0.0%hi,  1.4%si,  0.0%st
    Cpu1  :  5.6%us,  4.0%sy,  0.0%ni, 90.1%id,  0.3%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   2053628k total,  1612120k used,   441508k free,   148328k buffers
    Swap:  2083836k total,        0k used,  2083836k free,  1082960k cached
    
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                           
     4052 dynamic   20   0 92904  19m  10m S    5  1.0   1:03.14 gnome-terminal                                                                                                                    
     5053 root      20   0 39488 1176  868 S    5  0.1   0:42.08 tracker                                                                                                                           
     1222 root      20   0 99120  22m  15m S    3  1.1  20:08.00 Xorg                                                                                                                              
     3780 dynamic   20   0  343m  52m  24m S    3  2.6   1:01.15 compiz                                                                                                                            
        3 root      20   0     0    0    0 S    1  0.0   6:21.86 ksoftirqd/0                                                                                                                       
        7 root      20   0     0    0    0 S    0  0.0   0:43.22 rcu_sched                                                                                                                         
     5077 root      20   0  2856 1156  876 R    0  0.1   0:00.09 top                                                                                                                               
        1 root      20   0  3672 2064 1312 S    0  0.1   0:00.90 init                                                                                                                              
        2 root      20   0     0    0    0 S    0  0.0   0:00.02 kthreadd                                                                                                                          
        5 root       0 -20     0    0    0 S    0  0.0   0:00.00 kworker/0:0H                                                                                                                      
        8 root      20   0     0    0    0 S    0  0.0   0:00.00 rcu_bh                                                                                                                            
        9 root      RT   0     0    0    0 S    0  0.0   0:00.19 migration/0                                                                                                                       
       10 root      RT   0     0    0    0 S    0  0.0   0:03.01 watchdog/0                                                                                                                        
       11 root      RT   0     0    0    0 S    0  0.0   0:03.03 watchdog/1                                                                                                                        
       12 root      RT   0     0    0    0 S    0  0.0   0:00.16 migration/1                                                                                                                       
       13 root      20   0     0    0    0 S    0  0.0   1:05.16 ksoftirqd/1                                                                                                                       
       14 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/1:0                                                                                                                       
       15 root       0 -20     0    0    0 S    0  0.0   0:00.00 kworker/1:0H                                                                                                                      
       16 root       0 -20     0    0    0 S    0  0.0   0:00.00 khelper                                                                                                                           
       17 root      20   0     0    0    0 S    0  0.0   0:00.00 kdevtmpfs                                                                                                                         
       18 root       0 -20     0    0    0 S    0  0.0   0:00.00 netns                                                                                                                             
       19 root       0 -20     0    0    0 S    0  0.0   0:00.00 writeback                                                                                                                         
       20 root       0 -20     0    0    0 S    0  0.0   0:00.00 kintegrityd                                                                                                                       
       21 root       0 -20     0    0    0 S    0  0.0   0:00.00 bioset                                                                                                                            
       22 root       0 -20     0    0    0 S    0  0.0   0:00.00 kworker/u9:0                                                                                                                      
       23 root       0 -20     0    0    0 S    0  0.0   0:00.00 kblockd                                                                                                                           
       24 root       0 -20     0    0    0 S    0  0.0   0:00.00 ata_sff                                                                                                                           
       25 root      20   0     0    0    0 S    0  0.0   0:00.00 khubd                                                                                                                             
       26 root       0 -20     0    0    0 S    0  0.0   0:00.00 md         

    展开全文
  • 多线程CPU核心的关系

    千次阅读 2018-04-12 22:50:55
    多核心技术是将个一样的CPU放置于一个封装内(或直接将两个CPU做成一个芯片),而英特尔的HT技术是在CPU内部仅复制必要的资源、让CPU模拟成两个线程;也就是一个实体核心,两个逻辑线程,在一单位时间内处理两个.....
  • 核心:也指单芯片多处理器( ...多线程: Simultaneous Multithreading.简称SMT.让同一个处理器上的多个线程同步执行并共享处理器的执行资源。 核心数、线程数:目前主流CPU都是多核的。增加核心数目就是为了增加线程数,
  • 比如,可以通过一个CPU核心数模拟出2线程CPU,也就是说,这个单核心CPU被模拟成了一个类似双核心CPU的功能。 CPU线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在...
  • CPU核心数与线程数详解

    千次阅读 2020-03-29 21:58:42
    一开始,每个物理 cpu 上只有一个核心(a single core),对操作系统而言,也就是同一时刻只能运行一个进程/线程。 为了提高性能,cpu 厂商开始在单个物理 cpu 上增加核心(实实在在的硬件存在),也就出现了双核心...
  • 文章目录1 cpu架构和工作原理2 多核cpu和多cpu架构3 进程和线程4 多核、多CPU多线程、多进程的对应关系5 总结 1 cpu架构和工作原理 计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器...
  • 最近给一台安装了Windows Server 2003标准版的虚拟服务器分配了八个虚拟处理器,在设备管理器中,...解决问题的方向可以明确:让QEMU从分配多CPU,单CPU核心,改为分配单或多CPU多CPU核心。 QEMU-smp参数 QEM...
  • CPU个数,核心数,线程

    万次阅读 多人点赞 2018-08-14 09:29:07
    我们在买电脑的时候,经常会看cpu的参数,对cpu的描述有这几种:“双核”、“双核四线程”、“四核”、“四核四线程”、“四核八线程”……。 我们接触的电脑基本上都只有一个cup。cpu的个数很容易得到,螺丝刀拆开...
  • 此时假设我们设置的线程数量是 CPU 核心数的 2 倍以上,因为计算任务非常重,会占用大量的 CPU 资源,所以这时 CPU 的每个核心工作基本都是满负荷的,而我们又设置了过多的线程,每个线程都想去利用 CPU 资源来执行...
  • 查看CPU核心数、线程

    千次阅读 2019-07-08 10:27:33
    因为Intel的超线程技术存在,它把一个CPU内核虚拟化为类似2个CPU内核,所以看到了4个处理器,线程,能并行同时处理的任务数也越。 方法二:下载CPU-Z 工具可以看到CPU核心数和线程数,如下图所示: ....
  • CPU核心数和线程数的关系

    千次阅读 2019-01-01 14:33:24
    名称说明cpu个数: 是指物理上,也及硬件上的核心数; 核数: 是逻辑上的,简单理解为...线程数越,越有利于同时运行个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。 AMD线程数: 线程数...
  • 多核cpu多线程理解

    万次阅读 2019-01-04 17:00:38
    计算机cpu多线程 进程和线程: 进程包含线程,一个进程中包含多个线程. 线程是cpu调度和分配的基本单位,进程是操作系统进行资源分配(cpu,内存,硬盘io等)的最小单位. 单核cpu: 实现多进程依靠于操作系统的进程...
  • 多核CPU,多线程CPU,多发射CPU

    千次阅读 2012-05-21 18:01:49
    1.多核处理器的分类:对称处理器SMP和非对称处理器AMP。AMP又分为异构和同构。异构处理器使 用不同的核心,比如DSP+FPGA等。异构处理器目前有标准推动:Kronos发布的OPENCL。 2. 有些事实说明,当CPU 频率超过...
  • java里面的多线程是为了节省程序自己的等待时间而设的,和电脑的核心数量有关系么。如果我的代码只有一个主线程,那么四核的电脑是不是只能用一个核心? 因为可能要搭建小型服务器,提前了解下硬件方面的需求,大概...
  • 一、CPU和运行内存的关系 CPU是负责运算和处理的,内存是交换数据的,没有内存,CPU就没法接收到数据...二、CPU个数、核心数、线程数 对cpu的描述有这几种:“双核”、“双核四线程”、“四核”、“四核四线程”、...
  • 以下内容来源于网络,本人收集整理了一下。 先说核心数吧,核心数指CPU的内核数量,线程数指CPU可以同时处理的进程数量。...超线程技术是在一颗CPU同时执行个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU
  • Python多进程和多线程(跑满CPU

    万次阅读 多人点赞 2019-05-07 15:06:16
    Python多进程和多线程(跑满CPU) 概念 任务可以理解为进程(process),如打开一个word就是启动一个word进程。在一个word进程之中不只是进行打字输入,还需要拼写检查、打印等子任务,我们可以把进程中的这些子...
  • Java深入核心-多线程编程实战

    千人学习 2020-03-06 19:02:12
    对于一个 Java 程序员而言,能否熟练掌握多线程编程是判断他优秀与否的重要标准之一。因为并发编程是 Java 语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的...
  • 单核cpu多核cpu如何执行多线程

    千次阅读 2020-03-31 11:19:00
    花了很多时间来整理这方面的相关内容 程序和进程 程序: 为完成特定任务,用某种语言编写的一组指令集合,即一段静态的代码 进程: 是程序的一次执行过程,或是...一个进程同一时间并行多个线程,多线程是程序有多...
  • 2,指派线程CPU核心。 3,定时信息框的运用。 4,获取系统CPU核心数。 5,自动推荐使用线程数量。 温馨提示:因为是满载模式工作,所以开始工作后你会发现电脑变卡,CPU占用99%,因为所有CPU都被抢占了,如果要避免...
  • CPU核数跟多线程的关系

    千次阅读 2018-09-29 14:30:03
    一直以来有这样的疑惑,单核CPU适合多线程吗?是不是几个核的CPU开几个线程是最合适的? 今天就这一问题查了一些资料,现整理如下:  要说多线程就离不开进程,进程和线程的区别在这里就不详细说了,只将关键的几...
  • cpu个数、核数、线程数、Java多线程关系的理解

    万次阅读 热门讨论 2017-12-08 15:35:37
    cpu个数、核数、线程数的关系 cpu个数:是指物理上,也及硬件上的核心...二 cpu线程数和Java多线程 首先明白几个概念: (1) 单个cpu线程在同一时刻只能执行单一指令,也就是一个线程。 (2) 单个线程同时只能...
  • 一、多处理机(SMP): 1.多个物理cpu 2.每个cpu有自己的独立cache、寄存器、运算单元。 3.... 二、多核cpu 1.一个物理cpu包含多个cpu核心。...三、多线程cpu 1.一个物理cpu包含多个逻辑cpu
  • CPU除了核心数之外,还有线程数之说,下面笔者就来解释一下CPU核心数与线程数的关系和区别。   简单地说,CPU核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 192,673
精华内容 77,069
关键字:

多核心多线程cpu