性能篇:CPU

CPU相关概念:

  • 处理器:物理芯片,一个或者多个
  • 核数:一个物理芯片上实现多个CPU功能,又称为芯片级多处理(chip-levelmultiprocessing,CMP)
  • 线程数:利用单个CPU中断间隙实现多线程,提升CPU效率,也就是我们说的开超线程(1*2)
  • 指令:一些列的命令,告诉CPU需要做什么操作,比如资源I/O、算术、逻辑控制。
  • 中断:中断是系统实现CPU能合理的服务计算机的资源,由于CPU中断和执行的快速,我们才能感觉到电脑上的程序都是同时运行的。
    • 硬中断:由硬件设备引发的中断,跟操作系统没关系
    • 软中断:由系统引发的中断
    • 参考:https://blog.csdn.net/yue530tomtom/article/details/76095739

性能指标:基础

  • 负载(饱和度):反应CPU的繁忙程度,占用CPU时间线程数和等待CPU时间线程数计算得出,负载为1,说明CPU已经饱和运转(单核)
  • 使用率:CPU一段时间内的忙于执行的时间,百分比表示
  • 用户时间/内核时间:
    • 用户时间:CPU用户执行用户态的代码时间
    • 内核时间:CPU用户执行内核态的代码时间
    • 计算密集性体现在用户态占用一般用户/内核时间之比接近99/1,I/O密集型体现系统调用频率较高,可能是用户/内核时间之比接近70/30
  • 进程/线程
    • 进程是系统资源分配最小的单元
    • 线程是代码执行的最小单元

性能工具使用
在这里插入图片描述

uptime
在这里插入图片描述

平均负载,后面的3个数值分别是1分、5分钟、15分钟的平均负载
值的意义,平均负载大于CPU 数量表示CPU 不足以服务线程,有些线程在等待

判断方向:

  • CPU饱和度影响性能

备注:Linux 目前把在不可中断状态执行磁盘I/O 的任务也计入了平均负载,所以还需要借助vmstat和mpstat提供一些数据观察

vmstat
在这里插入图片描述

vmstat从整体上查看资源情况,进程、内存、交换分区、I/O、系统、CPU
r:可运行进程的数量(正在运行或等待运行时)
b:等待 I/O 完成的阻塞进程数
CPU:CPU总时间的百分比
us:用户态的时间
sy:内核态的时间
id:闲置时间
wa:等待I/O 时间,即线程被阻塞等待磁盘I/O 时的CPU 空闲时间

判断方向:

  • 是否进程数太多,导致性能问题
  • CPU的性能是单个导致还是整个(%usr + %sys)
  • CPU密集类型(计算或I/O)

参考:https://www.man7.org/linux/man-pages/man8/vmstat.8.html

mpstat
在这里插入图片描述

查看单个CPU的详细情况(-P ALL用来打印每个CPU 的报告)
CPU:逻辑CPU ID,或者all 表示总结信息。
● %usr:用户态时间
● %nice:以nice 优先级运行的进程用户态时间
● %sys:系统态时间(内核)
● %iowai:I/O 等待
● %irq:硬件中断CPU 用量
● %soft:软件中断CPU 用量
● %steal:耗费在服务其他租户的时间
● %guest:花在访客虚拟机的时间
● %idle:空闲

重要指标:%usr、%sys、%iowai、%irq、%soft、%idle
判断方向:

  • CPU的性能是单个导致还是整个(%usr + %sys)
  • CPU密集类型(计算或I/O)
  • CPU中断导致的性能问题

ps
在这里插入图片描述

用于查看进程资源使用情况
● %CPU:进程使用CPU资源总和,一个CPU显示100%
● %MEM:进程使用的总内存资源比例
● TIME:进程消耗CPU总时长
● VSZ:进程申请的内存(kb),并不是真正使用这么多
● RSS:进程固定使用的内存(kb)
● TTY:进程在哪个终端运行
Stat状态:
S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
R 运行,严格来说,应是“可运行”,即在运行队列中,处于正在执行或即将运行状态
D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
T (terminate)停止。通常是被shell作业控制所停止,或者进程正处于调试器的控制之下
Z (zombie)僵尸进程,通常是该进程已经死亡,但父进程没有调用wait类函数来释放该进程的资源
N (nice)低优先级任务
s 进程是会话期首进程
+ 进程属于前台进程组
l 进程是多线程的
< 高优先级任务

参考:https://linuxconfig.org/ps-output-difference-between-vsz-vs-rss-memory-usage

top

以上工具的各种资源集合
top进去后,按1 可以查看到单个CPU的资源
第一行:负载(uptime类似)
第二行:进程(ps类似)
第三行:CPU信息(hi硬中断,si软中断)
第四行:内存信息
第五行:交换分区信息
第六行:系统进程信息(
VIRT:申请内存,RES:使用内存,S:状态,SHR:共享内存(kb),
NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的,一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0,可以通过改变NI来改变PR: PRI(new) = PRI(old) + nice)

pidstat
在这里插入图片描述

查看进程的CPU、内存、线程、设备IO资源占用情况
-r 显示各个进程的内存使用统计
-d 显示各个进程的IO使用情况
-p 指定进程号(ALL 所有)
-t 显示选择任务的线程的统计信息外的额外信息

使用技巧:

  • watch -n 1 -d “vmstat 1 1 | column -t” #可以实时看到变换和显示平整的数据
  • ps aux | sort -k 3 -r | head #查看进程使用CPU资源的前10
  • time ls #real:CPU执行总时间 user和sys(用户态和内核态)

参考书籍:性能之巅:洞悉系统、企业与云计算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值