超线程

进程,线程,超线程,并发,并行 等概念

我的梦境 提交于 2020-03-20 23:43:57
3 月,跳不动了?>>> 进程是操作系统对一个正在运行的程序的抽象,即操作系统为该进程虚拟了独自的处理器资源,内存空间(又称虚拟地址空间)与磁盘空间 线程是进程中多个可以派遣的工作单位(或称执行单元,以CPU的角度来看)的集合,同一进程的多个线程共享该线程的资源(包括运行时在虚拟地址空间加载的代码,全局数据等) 并发(concurrency)从最终用户的角度来看,就是同时运行多个本地应用程序(或者网络应用程序例如 web服务器 同时处理来自多个远程用户的页面请求 / 活动连接 的过程) 并发 从计算机底层实现原理来看,是CPU等硬件 在操作系统所抽象出来的多个进程(或线程)之间快速来回切换执行的过程;具体讲,某一极短时间间隔内,CPU只能执行一个进程(或线程) 超线程(hyper threading,HT)也称“同时多线程”(simultaneous multi-threading) 采用超线程技术的多核CPU的任意一个物理核心在某一极短时间间隔内可以“同时”执行两个或多个线程 例如传统的单线程CPU,在某一极短时间间隔内只能执行一个线程,单线程CPU在不同线程间切换需要20,000个时钟周期 超线程多核CPU的任意一个物理核心在不同线程间切换只需要一个时钟周期; 典型的例子是 Intel Core i7 四核心处理器,一个物理核心可以同时执行两个线程, 总共可以“并行

单线程(Thread)与多线程的区别

随声附和 提交于 2020-01-29 17:21:22
首先了解一下cpu,随着主频(cpu内核工作时钟频率,表示在CPU内数字脉冲信号震荡的速度,等于外频(系统基本时间)乘倍频)的不断攀升,X86构架的硬件逐渐成为瓶颈,最高为4G,事实上目前 3.6G 主频的CPU已经接近顶峰。 多线程编程的目的,就是"最大限度地利用CPU资源" ,当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。 每个程序执行时都会产生一个进程,而每一个进程至少要有一个主线程 。这个线程其实是进程执行的一条线索,除了主线程外你还可以给进程增加其它的线程,也即增加其它的执行线索,由此在某种程度上可以看成是给一个应用程序增加了多任务功能。当程序运行后,您可以根据各种条件挂起或运行这些线程,尤其在多CPU的环境中,这些线程是并发运行的。多线程就是在一个进程内有多个线程。从而使一个应用程序有了多任务的功能。多进程技术也可以实现这一点,但是创建进程的高消耗(每个进程都有独立的数据和代码空间),进程之间通信的不方便(消息机制),进程切换的时间太长,这些导致了多线程的提出, 对于单CPU来说(没有开启超线程),在同一时间只能执行一个线程,所以如果想实现多任务,那么就只能每个进程或线程获得一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略换其他线程执行。由于时间片很短

linux 下查看机器是cpu是几核的

允我心安 提交于 2020-01-18 09:06:14
linux 下查看机器是cpu是几核的 几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpuinfo |grep "physical id"|grep "0"|wc -l cat /proc/cpuinfo | grep processor 1. 查看物理CPU的个数 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 2. 查看逻辑CPU的个数 #cat /proc/cpuinfo |grep "processor"|wc -l 3. 查看CPU是几核 #cat /proc/cpuinfo |grep "cores"|uniq 4. 查看CPU的主频 #cat /proc/cpuinfo |grep MHz|uniq # uname -a Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux (查看当前操作系统内核信息) # cat /etc/issue | grep Linux Red Hat Enterprise Linux AS release 4 (Nahant

(概念)多个CPU和多核CPU以及超线程(Hyper-Threading)

丶灬走出姿态 提交于 2020-01-10 12:49:16
引言 在这篇文章中我会主要介绍CPU相关的一些重要概念和技术。如果你想更好地了解操作系统,那就从本文开始吧。 中央处理器(Central processing unit) 在我们了解其它概念之前,我们应该首先了解一下什么是CPU,它是做什么的,它的主要组件以及相应的作用都是什么? 简单点说,CPU其实就是计算机内部的一个电子电路。根据一些具体的指令它可以执行基本的运算,逻辑,控制和IO操作等。CPU的主要组件包括: 算术逻辑单元(ALU is short for ‘arithmetic logic unit’),它主要执行一些算术和逻辑操作 处理器寄存器(processor registers),它主要的作用是给ALU提供操作数并存储ALU操作的结果 控制器(control unit),通过协调ALU,寄存器和其它组件之间的操作,从主存中取得并执行相应的指令。 当今大多数地CPU都是微处理器,即它们被包含在单个集成电路芯片(integrated circuit chip)中。一个包含CPU的集成电路可能也包含内存,外围接口和其它的一些计算机组件。这样的集成设备叫做微控制器(microcontrollers)或者芯片上的系统(SoC)。一些计算机采用多核处理器,即单个芯片中包含2个或更多的CPU(也被叫做“cores”); 在这种情况下,单个芯片有时也被称作”sockets”.

lunux中cpuinfo中信息详解

感情迁移 提交于 2020-01-08 23:37:08
转自: http://icooke.blog.51cto.com/4123148/757555 http://desert.blog.51cto.com/779694/200270 http://www.arjiu.com/archives/462.html 自己的cpu是两颗四核的cpu未使用超线程 ,总共8核8线程 。 判断依据: 1.具有相同core id的cpu是同一个core的超线程。 2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。 英文版: 1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core. 2.Any cpu with the same physical id are threads or cores in the same physical socket. echo "logical CPU number:" #逻辑CPU个数 cat /proc/cpuinfo | grep "processor" | wc -l echo "physical CPU number:" #物理CPU个数: cat

Linux-CpuInfo

杀马特。学长 韩版系。学妹 提交于 2020-01-08 23:32:21
转自http://blog.51cto.com/icooke/757555 在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢? 经过查看,我的开发机器是1个物理CPU,4核8线程,Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz 记录一下,判断的过程和知识。 判断依据: 1.具有相同core id的cpu是同一个core的超线程。 2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。 英文版: 1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core. 2.Any cpu with the same physical id are threads or cores in the same physical socket. echo "logical CPU number:" #逻辑CPU个数 cat /proc/cpuinfo | grep "processor" | wc -l echo

Linux cpuinfo 详解

瘦欲@ 提交于 2020-01-08 23:31:23
在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢? 经过查看,我的开发机器是1个物理CPU,4核8线程,Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz 记录一下,判断的过程和知识。 判断依据: 1.具有相同core id的cpu是同一个core的超线程。 2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。 英文版: 1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core. 2.Any cpu with the same physical id are threads or cores in the same physical socket. echo "logical CPU number:" #逻辑CPU个数 cat /proc/cpuinfo | grep "processor" | wc -l echo "physical CPU number:" #物理CPU个数: cat

租用的服务器CPU使用率高的原因分析与解决办法

六眼飞鱼酱① 提交于 2020-01-08 16:44:42
我们租用的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现CPU使用率达到80%以上。这是怎么回事情呢? 遇到病毒了吗?硬件有问题?还是系统设置有问题呢?宵云本文中将从硬件,系统进程,应用软件和病毒***四个方面来介绍CPU资源使用率为什么会达到那么高,以帮助大家排除服务器CPU使用率高的种种疑惑。 一、硬件因素 以下分别从CPU温度,CPU超线程,硬件配置,硬件驱动和待机方面分析。 情况1、CPU温度过高 如果CPU风扇散热不好,会导致CPU温度太高(CPU温度多少正常?),使CPU自动降频,从而使CPU的性能降低。总之高温时CPU会自动将降低工作效率。 情况2、超线程 超线程导致CPU使用率占用高,这类故障的共同原因就是都使用了具有超线程功能的P4 CPU。据一些网友总结超线程似乎和天网防火墙有冲突,可以通过卸载天网并安装其它防火墙解决,也可以通过在BIOS中关闭超线程功能解决 情况3、硬件配置不合理 例如内存不足,当运行一些大型软件时,CPU的资源大部分耗在了虚拟内存的交换处理上。而电源功率不足,也会使CPU的性能难以发挥。还有,在购买CPU时,选的CPU核心频率不足是导致CPU的使用率高的最直接原因。 情况4、不完善的驱动程序 硬件的驱动程序没有经过认证或者是不合法的认证,会造成CPU资源占用率高。因大量的测试版的驱动在网上泛滥

linux 查看CPU详情命令

一个人想着一个人 提交于 2019-12-05 04:39:12
一、直观查询CPU数量 逻辑CPU个数: # cat /proc/cpuinfo | grep 'processor' | wc -l 物理CPU个数: # cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l 每个物理CPU中Core的个数: # cat /proc/cpuinfo | grep 'cpu cores' | wc -l 二、查看CPU的详细信息 #cat /proc/cpuinfo 各个字段意义: processor 逻辑处理器的id。 physical id 物理封装的处理器的id。 core id 每个核心的id。 cpu cores 位于相同物理封装的处理器中的内核数量。 siblings 位于相同物理封装的处理器中的逻辑处理器的数量。 具有相同core id的cpu是同一个core的超线程。具有相同physical id的cpu是同一颗cpu封装的线程或者cores。 如果“siblings”和“cpu cores”一致,则说明不支持超线程,或者超线程未打开。 如果“siblings”是“cpu cores”的两倍,则说明支持超线程,并且超线程已打开。 显示4个逻辑CPU,通过physical id,前面两个逻辑cpu的相同,后面两个的相同,所以有两个物理CPU。前面两个的 core

PostgreSQL 参数调整(性能优化)

别说谁变了你拦得住时间么 提交于 2019-12-04 10:26:08
昨天分别在外网和无外网环境下安装PostgreSQL,有外网环境下安装的相当顺利。但是在无外网环境下就是两个不同的概念了,可谓十有八折。感兴趣的同学可以搭建一下。 PostgreSQL安装完成后第一件事便是做相关测试,然后调整参数。 /*CPU 查看CPU型号*/ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c /*查看物理CPU个数*/ cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l /*查看逻辑CPU个数*/ cat /proc/cpuinfo | grep "processor" | wc -l /*查看CPU内核数*/ cat /proc/cpuinfo | grep "cpu cores" | uniq /*查看单个物理CPU封装的逻辑CPU数量*/ cat /proc/cpuinfo | grep "siblings" | uniq /*计算是否开启超线程 ##逻辑CPU > 物理CPU x CPU核数 #开启超线程 ##逻辑CPU = 物理CPU x CPU核数 #没有开启超线程或不支持超线程*/ /*查看是否超线程,如果cpu cores数量和siblings数量一致,则没有启用超线程,否则超线程被启用。*/ cat /proc