认识cpu、核与线程
作为一个后台开发人员,我想有必要了解这些基础知识。如果本文有不严谨或者疏忽的地方,请指正。
cpu与核心
物理核
- 物理核数量=cpu数(机子上装的cpu的数量)*每个cpu的核心数
虚拟核
- 所谓的4核8线程,4核指的是物理核心。通过超线程技术,用一个物理核模拟两个虚拟核,每个核两个线程,总数为8线程。
- 在操作系统看来是8个核,但是实际上是4个物理核。
- 通过超线程技术可以实现单个物理核实现线程级别的并行计算,但是比不上性能两个物理核。
单核cpu和多核cpu
- 都是一个cpu,不同的是每个cpu上的核心数
- 多核cpu是多个单核cpu的替代方案,多核cpu减小了体积,同时也减少了功耗
- 一个核心只能同时执行一个线程
进程和线程
理解
- 我们打开的微信,浏览器都是一个进程
- 进程可能有多个子任务,比如微信要接受消息,发送消息,这些子任务就是线程。
- 资源分配给进程,线程共享进程资源。
线程切换
- cpu给线程分配时间片(也就是分配给线程的时间),执行完时间片后会切换都另一个线程。
- 切换之前会保存线程的状态,下次时间片再给这个线程时才能知道当前状态。
- 从保存线程A的状态再到切换到线程B时,重新加载线程B的状态的这个过程就叫上下文切换。
- 而上下切换时会消耗大量的cpu时间。
线程开销
- 上下文切换消耗
- 线程创建和消亡的开销
- 线程需要保存维持线程本地栈,会消耗内存
串行,并发与并行
串行
- 多个任务,执行时一个执行完再执行另一个。
- 比喻:吃完饭再看球赛。
并发
- 多个线程在单个核心运行,同一时间一个线程运行,系统不停切换线程,看起来像同时运行,实际上是线程不停切换。
- 比喻: 一会跑去食厅吃饭,一会跑去客厅看球赛。
并行
- 每个线程分配给独立的核心,线程同时运行。
- 比喻:一边吃饭一边看球赛。
多核下线程数量选择
计算密集型
- 程序主要为复杂的逻辑判断和复杂的运算。
- cpu的利用率高,不用开太多的线程,开太多线程反而会因为线程切换时切换上下文而浪费资源。
IO密集型
- 程序主要为IO操作,比如磁盘IO(读取文件)和网络IO(网络请求)。
- 因为IO操作会阻塞线程,cpu利用率不高,可以开多点线程,阻塞时可以切换到其他就绪线程,提高cpu利用率。
总结
- 提高性能的一种方式:提高硬件水平,处理速度或核心数。
- 另一种方式:根据场景,合理设置线程数,软件上提高cpu利用率。
我觉得分享是一种精神,分享是我的乐趣所在,不是说我觉得我讲得一定是对的,我讲得可能很多是不对的,但是我希望我讲的东西是我人生的体验和思考,是给很多人反思,也许给你一秒钟、半秒钟,哪怕说一句话有点道理,引发自己内心的感触,这就是我最大的价值。(这是我喜欢的一句话,也是我写博客的初衷)
认识cpu、核与线程的更多相关文章
- CPU、CPU核与线程的关系
CPU相关概念: CPU:独立的中央处理单元,体现在主板上是有多个CPU的插槽. CPU cores:在每一个CPU上,都可能有多个核(core),每一个核中都有独立的一套ALU.FPU.Cache等 ...
- 【测试数据】android下CPU核与线程数的关系
测试方法 24MB的一张4K图片,连续计算5次直方图. 小米mix2s, 高通骁龙 845.4大核,4小核. 数据表格 线程数 绝对时间(s) 累计CPU时间(s) 每线程平均耗时(us) 每线程最大 ...
- 查看windows电脑CPU核心数,线程数
在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中输入“cpu get *”即可查看物理CPU数.CPU核心数.线程数.其中, Name:表示物理CPU数 NumberOfC ...
- 快速了解cpu、核与线程
作为一个后台开发人员,我想有必要了解这些基础知识.如果本文有不严谨或者疏忽的地方,请指正. cpu与核心 物理核 物理核数量=cpu数(机子上装的cpu的数量)*每个cpu的核心数 虚拟核 所谓的4核 ...
- CPU个数、CPU核心数、CPU线程数
CPU个数.CPU核心数.CPU线程数 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之 ...
- 一个 CPU 核 开多少个 线程 比较合适 ?
一个 CPU 核 开多少个 线程 比较合适 ? 这是一个 线程池 的 问题 . 我之前也 反对 过 线程池, 因为我认为 线程池 影响了 对 用户 的 实时响应性 . 我也认为, 分时 (对 CPU ...
- Linux 进程、线程运行在指定CPU核上
/******************************************************************************** * Linux 进程.线程运行在指定 ...
- [转发]CPU个数、CPU核心数、CPU线程数
我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与 ...
- taskset -pc PID 查看线程占用cpu核
taskset -pc PID 可以用于 查看 当前线程 对应绑定的 在 哪个核上面. 这个 可以用于 程序优化, 查看 哪个线程占用的 cpu 比重比较高 首先 可以通过 top -H - ...
随机推荐
- 怎么一次性获取form所有的值?rerialize() 、 serializeArray()方法的使用
from直接提交当然方便,但是有时候需要对数据进行处理再用ajax提交,挨个去获取值未免太麻烦,讲两个一次性获取所有值的方法. 方法1 $("form").serialize(); ...
- 论文笔记 Network In Network
这篇论文思路简单.易实现.效果好,是一篇难得的佳作.从实现的角度理解,就是做了以下两个替换: 将线性卷积替换为多层感知机(某种程度上,线性卷积可以认为识一层感知机). 将全连接层用global ave ...
- 踩一踩微信小程序开发的坑---tabBar
最近忙于开发视频直播的项目,小程序学习也放置了两三个星期了,web开发者工具更新到新版,发现上个版本做的demo不显示了
- Git添加远程报错:remote origin already exists.
在本地创建了一个Git仓库,如何在Github创建一个Git仓库,并且让这两个仓库进行远程同步,这样Github上的仓库既可以作为备份仓库,还可以通过该仓库进行多人协作. 1.登录github,建立一 ...
- NodeJS+Express+MongoDB 简单个人博客系统【Study笔记】
Blog 个人博客系统 iBlog是在学习NodeJs时候一个练手项目Demo 系统支持用户注册/登录,内容文章查看,评论,后台管理(定制显示的分类版块,进行文章内容添加)超级管理员还可进行用户管理等 ...
- 非滤波单目视觉slam笔记1
非滤波单目视觉slam 主要分为以下8部分 数据类型 数据关联 初始化 位姿估计 地图维护 地图生成 失效恢复 回环检测 数据类型 直接法(稠密,半稠密) 基本原理是亮度一致性约束,\(J(x,y) ...
- PO/VO/POJO/BO/VO图解
- ionic 中关于日期的转换格式
//在HTML页面上{{ 2015-12-07T15:59:59.000Z | date }} //结果:December 7, 2015 {{ 2015-12-07T15:59:59.000Z | ...
- 关于HTML学习整理(一)
新人,自己整理,第一次发,以后慢慢整理,欢迎指点,那些链接怎么做的,希望有人告知一下,谢谢! HTML页面写法,标签成对出现,可嵌套使用 <html> <head> <t ...
- 【解决】安装compass失败(gem install compass)
原始日期:2016-01-25 16:26 这个问题比较常见. 很多人在安装ruby后再使用gem install compass命令安装compass,发现安装失败. [解决方法:] / ...