硬件-CPU知识

  • 中央处理器(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)  评论(0)    收藏  举报