说到性能分析,基本上就是 CPU、内存、磁盘 IO 以及网络这几个部分,本文先来看 CPU 这个部分。

一、CPU 基础信息

进行性能分析之前,首先得知道 CPU 有哪些信息,使用lscpu命令查看 CPU 配置信息。在 Linux 下,类似 lsxxx 这样的命令都是用来查看基本信息的,如 ls 查看当前目录文件信息,lscpu 就用来查看 CPU 信息,类似还有 lspci 查看 PCI 信息。

linux 系统cpu 可以是gpu训练吗 linux cpu性能_用户空间

  • 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 的作用和它是一样的。

 

linux 系统cpu 可以是gpu训练吗 linux cpu性能_一级缓存_02

我们重点关注这么几个字段:

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