Linux CPU负载性能监测

本文详细介绍了Linux系统中的平均负载和CPU使用率,通过stress工具模拟不同类型的负载场景,并推荐了top、mpstat和pidstat三个监测工具进行系统监控。在分析CPU密集型和IO密集型进程的影响时,强调了平均负载与CPU使用率的区别,并解释了自愿上下文切换和非自愿上下文切换的概念。
摘要由CSDN通过智能技术生成

平均负载和 CPU 使用率

平均负载是指单位时间内的活跃进程数,也就是处于可运行状态®和不可中断状态(D)的进程数。不仅包括了正在使用 CPU 的进程,还包括等待 CPU 和等待 I/O 的进程。可以参考这篇笔记

CPU使用率是指单位时间内CPU繁忙情况的统计,与平均负载并不是一个东西。

CPU使用率为100%时,是指换算成单个CPU的情况下使用率是100%,如果是多核的话,这并不是总的CPU使用率,所以此时即使100%也问题不大。实际上对于一个8核CPU其使用率最高是800%。一个进程内有多个线程的话,它的CPU使用率是这些线程的使用率总和,因此CPU使用率可能会超过100%。

大量进程执行CPU密集型操作:平均负载会升高,CPU使用率也会升高。
大量进程执行IO密集型操作:等待的进程也会引起平均负载比较高,但CPU使用率却比较低。
大量进程拥塞等待调度:平均负载很升高,CPU使用率也会比较高。

压测命令 stress

stress - tool to impose load on and stress test systems
`stress’ imposes certain types of compute stress on your system

Linux 系统压力测试工具,可模拟平均负载升高的场景。

常用参数:

  • -c, --cpu N —— spawn N workers spinning on sqrt(),可用于模拟CPU密集型进程
  • -i, --io N —— spawn N workers spinning on sync(),可用于模拟I/O密集型进程
  • -m, --vm N —— spawn N workers spinning on malloc()/free(),模拟频繁的堆内存申请与释放
  • -t, --timeout N —— timeout after N seconds,运行时间(秒)

模拟负载场景

  • CPU密集型进程模拟

    stress --cpu 1 --timeout 600
    
  • IO密集型进出程模拟

    stress -i 1 --timeout 600
    
  • 大量进程同时运行模拟

    stress -c 4 -i 4 --timeout 600
    

例如: 执行stress -c 4 -i 4 --timeout 600后,在另一个终端执行uptime,过一会儿后可以看到平均负载明显上升,趋近于8,与8个进程同时运行一致:

$ uptime
 12:18:54 up 14:28,  1 user,  load average: 7.95, 5.10, 2.23

监测工具

主要包括topmpstatpidstat

top

top的使用方法非常简单,直接执行就可以看到CPU的使用率

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值