- 中央处理器(Central Processing Unit
- 影响CPU性能的物理因素:主频、架构、核
- 架构:Intel(x86)、AMD(x86)、IBM(PowerPC)、ARM(ARM)
- 主频:GHz
- 核心数
- 结构:运算器、控制器、寄存器、时钟
- 运算器:进行计算
- 控制器:把内存的指令、数据读入寄存器,控制计算机
- 寄存器:暂存指令、数据、地址
- 时钟: 在cpu中进行计算时,都会分配一个时间片段 ,计时
- 如果某个计算,在分配的时间片段中完成,自动中断
- 如果某个计算,在分配的时间片段中没有完成,强制中断
- 如果某个任务需要的计算时间比较长,cpu的分片就会出现不连续的时间分片
- cpu数据来源:
-
-
- 内存:与CPU沟通的桥梁;存cpu的运算数据;硬盘、外存数据
- CPU中的控制单元,控制指令执行的顺序并不是按照先后顺序,而是按照优先级顺序 NI
- 运算单元,进行计算
- 如果源数据充足
- 如果源数据不够,没有,等待, iowait
- CPU的几级缓存,就是我们的寄存器
- 监控CPU
- CPU-analysis
- us:用户进程空间中未变过优先级的进程占用CPU百分比
- sy:内核空间占用CPU百分比
- ni:用户进程空间内改变过优先级的进程占用CPU百分比
- id:空闲时
- wa:空闲&&等待I/O的时间百分比
- hi:硬中断时间百分比
- si:软中断时间百分比
- st:虚拟化时被其余VM窃取时间百分比
- load average值&CPU使用率关系
- 现在的linux服务器中,load average不等于CPU使用率
- load average 是系统的整体负载体现
- 它包括:CPU负载+Disk负载+网络负载+外设负载
- loadaverage =cpuload+ioload
- cpu的使用:用户进程使用时间us、系统内核运行时间sy、空闲时间idle、管理被抢占时间st
- 繁忙:us + sy +st + ni + hi + si ======== CPU使用率的时间(除以总时间)
- 空闲:idle+wa
- CPU-上下文
- 上下文:CPU寄存器和程序计数器
- 程序计数器:存储cpu正在执行的指令位置和下一条指令位置
- 上下文切换:先把当前的任务CPU上下文(CPU寄存器和程序计数器)保存起来(内核中),然后加载新的任务的上下文到CPU的寄存器和程序计数器中,CPU再跳转到程序计数器上执行任务
- 上下文切换类型:进程上下文切换、线程上下文切换、中断上下文切换
- 进程上下文切换
- 等级特权,跨等级时,需要‘系统调用’
- 同进程上下文切换:进程用户态 ------系统调用-----》进程内核态-----系统调用------》进程用户态
- 不同进程上下文切换:进程切换时要保存进程用户态资源(虚拟内存、栈等)
- 都需要保存资源,打开新的资源------消耗时间,也要消耗存储空间
- 如果频率很高,消耗资源比较高
- 线程上下文切换:
- 线程,共享进程的资源,但是,线程也有自己所有数据,如栈、寄存器
- 同进程中线程上下文切换:进程资源共享,切换线程私有资源
- 不同进程中线程:切换进程
- 保存资源,资源切换
- load 高 && CPU 高
- top
- 情况1:sys系统态高 =====排查CPU上下文切换
- 如果‘非自愿上下文切换’多,说明cpu不够用,进程时间片到,被迫切换
- 如果‘自愿上下文切换‘多,说明计算用的资源不够用,可能存在I/O、内存瓶颈
- 情况2:si软中断高 ===== CPU抢资源,资源不够用I/O问题
- sys高 + si高 ===推导出=== 内存 or 网络I/O 问题 -----解决办法:排查内存 和 I/O
- sys高 + si不高 ===推导出 =====》CPU瓶颈 -----解决办法之一:加CPU
- 情况3:us用户态高 ==== 用户程序计算
- 密集型计算、内存FGC、资源等待(线程池) ------解决办法:逐个排查
posted @
2021-07-11 20:32
sinder2018
阅读(
114)
评论()
收藏
举报