CPU使用率--下篇

CPU使用率--下篇

CPU 缓存

CPU 缓存是位于中央处理单元(CPU)内部的一组高速存储器,用于临时存储经常被处理器访问的指令和数据。缓存的存在是为了提高计算机的性能,因为它可以更快地提供处理器所需的信息,而无需等待主内存的较慢访问。

CPU 缓存通常分为多级缓存(L1、L2、L3):

  1. L1 Cache(一级缓存):
    • 位于 CPU 内部,距离核心最近,速度最快。
    • 分为指令缓存(L1i)和数据缓存(L1d)。
    • 尺寸较小,通常在几十KB的范围。
  2. L2 Cache(二级缓存):
    • 位于 CPU 内部,但相对于 L1 Cache 较远,速度次于 L1。
    • 通常也分为指令缓存和数据缓存。
    • 尺寸较大,可以达到几百KB到数兆字节。
  3. L3 Cache(三级缓存):
    • 通常位于 CPU 芯片上,但不同核心共享。
    • 比 L1 和 L2 缓存更大,可以达到数兆字节。
    • 速度相对较慢,但仍然远快于主内存
MemoryL3 CacheL2 CacheL2 CacheL1 CacheL1 CacheCore 0Core 1CPU(Node)

CPU 缓存介于 CPU 和内存之间,缓存的是热点的内存数据。这些缓存按照大小不同分为 L1、L2、L3 等三级缓存,其中 L1 和 L2 在同一个cpu核中, 而在同一个CPU插槽中的多个核共享一个 L3 缓存。缓存命中率,即直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比。当可以直接通过缓存获取到需要的数据,则命中缓存;否则需要从磁盘等地方读取获取数据。缓存命中率越高,表示直接从缓存获取数据的次数越多,程序执行效率越高。

使用cachestat 可以查看整个个操作系统缓存的读写命中情况:

cachestat安装方式:

yum install perf-tools-unstable

下面以1秒间隔输出三组缓存信息:

$  cachestat 1
Counting cache functions... Output every 1 seconds.
    HITS   MISSES  DIRTIES    RATIO   BUFFERS_MB   CACHE_MB
    1989        0       13   100.0%          501       2600
   12969        0     1412   100.0%          501       2600
   16798        0     2803   100.0%          501       2600
$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    1
座:                 4
NUMA 节点:         1
厂商 ID:           GenuineIntel
CPU 系列:          6
型号:              85
型号名称:        Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
步进:              7
CPU MHz:             2194.844
BogoMIPS:            4389.68
超管理器厂商:  VMware
虚拟化类型:     完全
L1d 缓存:          32K
L1i 缓存:          32K
L2 缓存:           1024K
L3 缓存:           14080K
NUMA 节点0 CPU:    0-3

三级缓存要比一、二级缓存大许多倍,这是因为当下的 CPU 都是多核心的,每个核心都有自己的一、二级缓存,但三级缓存却是一颗 CPU 上所有核心共享的。


常用的性能监测工具

指标----->工具

性能指标 工具 说明
平均负载 uptime, top top 提供更全面的指标
系统整体CPU使用率 top, vmstat, mpstat, sar, /proc/stat sar 可以记录历史数据;/proc/stat 是其他性能工具的数据来源
进程CPU使用率 top, pidstat, ps, htop, atop pidstat 只显示实际使用了 CPU 的进程;htop 和 atop 以不同颜色显示更直观
系统上下文切换 vmstat 除了上下文切换次数,还提供运行状态和不可中断状态进程的数量
进程上下文切换 pidstat -w 查看进程的上下文切换次数
软中断 top, /proc/softirgs, mpstat top 提供软中断 CPU 使用率;/proc/softirqs 和 mpstat 提供各种软中断在每个 CPU 上的运行次数
硬中断 vmstat, /proc/interrupts vmstat 提供总的中断次数;/proc/interrupts 提供各种中断在每个 CPU 上运行的累积次数
网络 dstat, sar, tcpdump dstat 和 sar 提供总的网络接收和发送情况;tcpdump 可以动态抓取正在进行的网络通讯
I/O dstat, sar dstat 和 sar 都提供了 I/O 的整体情况
CPU个数 /proc/cpuinfo, lscpu 直接读取 /proc/cpuinfo 文件,或者使用 lscpu 命令查看 CPU 信息

工具----->指标

工具 CPU性能指标
uptime 平均负载
top 平均负载、运行队列、整体的CPU使用率以及每个进程的状态和CPU使用率
htop top增强版,以不同颜色区分不同类型的进程,更直观
atop CPU、内存、磁盘和网络等各种资源的全面监控
vmstat 系统整体的cpu使用率、上下文切换次数、中断次数,还包括处于运行和不可中断状态的进程数
mpstat 每个CPU的使用率和软中断次数
pidstat 进程和线程的CPU使用率、中断上下文切换次数
/proc/softirgs 软中断类型和在每个CPU上的累积中断次数
/proc/interrupts 硬中断类型和在每个CPU上的累积中断次数
ps 每个进程的状态和CPU使用率
pstree 进程的父子关系
dstat 系统整体的CPU使用率
sar 系统整体的CPU使用率,包括可配置的历史数据
strace 进程的系统调用
perf CPU性能事件剖析,如调用链分析、CPU缓存、CPU调度等
execsnoop 监控短时进程

工具使用关系

网络分析工具topvmstatpidstat进程分析工具top、vmstat 和 pidstat关系系统CPU 用户CPU 僵尸进程硬中断平均负载等待I/O软中断上下文切换中断次数运行状态进程数不可中断进程数自愿上下文切换非自愿上下文切换系统CPU用户CPUI/O分析工具dstatsar -d/proc/interrupt/proc/softirqsNET_RXNET_RX...SCHEDsar -ntcpdump非自愿上下文切换perfstracepsexecsnoop

使用案例

top、vmstat 和 pidstat 分别提供的重要的 CPU 指标,并用虚线表示关联关系,对应出了性能分析下一步的方向。

通过这张图你可以发现,这三个命令,几乎包含了所有重要的 CPU 性能指标,比如: 从 top 的输出可以得到各种 CPU 使用率以及僵尸进程和平均负载等信息。

  • 从 vmstat 的输出可以得到上下文切换次数、中断次数、运行状态和不可中断状态的进程数。
  • 从 pidstat 的输出可以得到进程的用户 CPU 使用率、系统 CPU 使用率、以及自愿上下文切换和非自愿上下文切换情况。
    eg-1
    pidstat 输出的进程用户 CPU 使用率升高,会导致 top 输出的用户 CPU 使用率 升高。所以,当发现 top 输出的用户 CPU 使用率有问题时,可以跟 pidstat 的输出做对比,观 察是否是某个进程导致的问题。 而找出导致性能问题的进程后,就要用进程分析工具来分析进程的行为,比如使用 strace 分析 系统调用情况,以及使用 perf 分析调用链中各级函数的执行情况
    eg-2
    top 输出的平均负载升高,可以跟 vmstat 输出的运行状态和不可中断状态的进程 数做对比,观察是哪种进程导致的负载升高。 如果是不可中断进程数增多了,那么就需要做 I/O 的分析,也就是用 dstat 或 sar 等工具, 进一步分析 I/O 的情况。 如果是运行状态进程数增多了,那就需要回到 top 和 pidstat,找出这些处于运行状态的到 底是什么进程,然后再用进程分析工具,做进一步分析。
    eg-3
    当发现 top 输出的软中断 CPU 使用率升高时,可以查看 /proc/softirqs 文件中 各种类型软中断的变化情况,确定到底是哪种软中断出的问题。比如,发现是网络接收中断导致 的问题,那就可以继续用网络分析工具 sar 和 tcpdump 来分析。
posted @ 2024-03-03 16:48  Emars  阅读(35)  评论(0编辑  收藏  举报