说到性能分析,基本上就是 CPU、内存、磁盘 IO 以及网络这几个部分,本文先来看 CPU 这个部分。
一、CPU 基础信息
进行性能分析之前,首先得知道 CPU 有哪些信息,使用lscpu命令查看 CPU 配置信息。在 Linux 下,类似 lsxxx 这样的命令都是用来查看基本信息的,如 ls 查看当前目录文件信息,lscpu 就用来查看 CPU 信息,类似还有 lspci 查看 PCI 信息。
- Architecture: #架构
- CPU(s): #逻辑cpu颗数
- Thread(s) per core: #每个核心的线程数量
- Core(s) per socket: #每颗物理CPU的核数
- CPU socket(s): #物理CPU个数
- Vendor ID: #cpu厂商ID
- CPU family: #cpu系列
- Model: #型号
- Stepping: #步进
- CPU MHz: #cpu主频
- Virtualization: #cpu支持的虚拟化技术
- L1d cache: #一级缓存(google了下,这具体表示表示cpu的L1数据缓存)
- L1i cache: #一级缓存(具体为L1指令缓存)
- L2 cache: #二级缓存
二、cpu核数计算
- CPU总核数 =物理CPU个数 * 每颗物理CPU的核数 =2*4=8
- 总逻辑CPU数=物理CPU个数 * 每颗物理CPU的核数 * 超线程数* 复用比=2*4*2=16
一个核心就是一个物理线程,英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥CPU性能。
三、CPU 使用情况分析
知道了 CPU 的基本信息,我们就可以使用另外的命令来对 CPU 的使用情况分析一通了。top命令相信大家对下面这玩意不陌生,Windows 的任务管理器,top 的作用和它是一样的。
我们重点关注这么几个字段:
1)load average:三个数字分别表示最近 1 分钟,5 分钟和 15 分钟的负载,数值越大负载越重。一般要求不超过核数,比如对于单核情况要 < 1。如果机器长期处于高于核数的情况,说明机器 CPU 消耗严重了。
2)%Cpu(s):表示当前 CPU 的使用情况,如果要查看所有核(逻辑核)的使用情况,可以按下数字 “1” 查看。这里有几个参数,表示如下:
- us 用户空间占用 CPU 时间比例
- sy 系统占用 CPU 时间比例
- ni 用户空间改变过优先级的进程占用 CPU 时间比例
- id CPU 空闲时间比
- wa IO等待时间比(IO等待高时,可能是磁盘性能有问题了)
- hi 硬件中断
- si 软件中断
- st steal time
3)每个进程的使用情况
这里可以罗列每个进程的使用情况,包括内存和 CPU 的,如果要看某个具体的进程,可以使用 top -p pid