cpu性能优化

本文深入探讨了CPU性能优化,重点在于平均负载、CPU上下文切换和中断的影响。通过实验场景展示了CPU密集型、I/O密集型以及大量进程对平均负载的影响,揭示了平均负载与CPU核心数的关系。此外,还分析了上下文切换次数过多导致的性能问题,并通过观察中断次数来评估系统性能。最后,提到了CPU时间的组成部分及其在性能分析中的作用。
摘要由CSDN通过智能技术生成

平均负载

单位时间内,平均活跃进程数(包括可运行状态、不可中断状态).

  • 可运行状态:进程正在使用 / 等待cpu
  • 不可中断状态:进程正在等待硬件设备的I/O,是系统对进程和硬件设备的一种保护机制

平均负载多少算高?

一般情况下,需要结合load1、load5、load15三个值来预测趋势

  1. load1 > load15,说明平均负载在升高
  2. load1 < load15,说明平均负载在降低
    结论:平均负载 > cpu core * 70%
    cpu core = grep -E “processor” /proc/cpuinfo | wc -l

区别cpu使用率

CPU使用率是单位时间内CPU繁忙情况的统计。而平均负载包括正在使用CPU、等待CPU、等待IO的进程:

  • CPU密集型进程,CPU使用率高,平均负载高 ==> 正在使用cpu进程
  • I/O密集型进程,平均负载高,CPU使用率低 ==> 正在等待io操作进程
  • 大量等待CPU的进程,平均负载高,CPU使用率也会比较高 ==> 正在等待cpu进程

模拟实验

工具 备注
stress linux压力测试软件
sysstat mpstat、pidstat查看cpu

场景一:CPU密集型进程

终端1执行如下命令:

stress -c 1 --timeout 600 # 产生1个进程,压测cpu600s

终端2执行uptime查看平均负载

watch -d uptime # watch 监测 -d 表示高亮显示变化的部分

Every 2.0s: uptime
18:55:09 up 129 days, 17:37, 4 users, load average: 1.02, 1.04, 1.53

终端3查看cpu使用率变化:

mpstat -P ALL 2 5 # 每两秒刷新下所有CPU的统计报告,一共刷新显示5次

06:58:30 PM 38 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 # 有一个cpu的%User达到99%上

终端4查看cpu升高的进程:

pidstat -u 2 1

07:00:26 PM 0 4014 100.00 0.00 0.00 100.00 7 stress # stress进程cpu使用率达到100%

结论:平均负载的升高是由CPU使用率高造成的

场景二:io密集型进程
终端1执行如下命令:

stress -c 1 --timeout 600 # 产生1个进程,压测cpu600s

终端2执行uptime查看平均负载

watch -d uptime # watch 监测 -d 表示高亮显示变化的部分

Every 2.0s: uptime
18:55:09 up 129 days, 17:37, 4 users, load average: 1.68, 1.04, 0.78

终端3查看cpu使用率变化:

mpstat -P ALL 2 5 # 每两秒刷新下所有CPU的统计报告,一共刷新显示5次

Average: 2 1.52 0.51 10.15 16.75 0.00 0.00 0.00 0.00 0.00 71.07 # %system和%iowait还是较高

终端4查看cpu升高的进程:

pidstat -u 2 1

Average: 0 21233 0.00 2.97 0.00 2.97 - stress # stress进程的%system还是较高,说明系统调用在发生

结论:平均负载的升高是由进程等待io造成的

场景三:大量进程的情况
终端1执行如下命令:

stress -c 10 --timeout 600 # 产生1个进程,压测cpu600s

终端2执行uptime查看平均负载

wa

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值