Linux环境下的CPU消耗分析

在Linux系统中, CPU 主要用于中断,内核以及用户进程的任务处理,优先级为 中断 > 内核 > 用户进程。在CPU消耗分析中,我们还经常遇到下面几个概念。

  • 上下文切换

        每个CPU在同一时间只能执行一个线程, Linux 中线程是抢占式调度的。 也就是说每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或者高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的的执行状态,并恢复要执行的线程的状态,这个过程就称为上下文切换。在java 应用程序中, 进行文件IO操作,网络IO操作, 锁等待或线程Sleep时,当前线程都会进入阻塞或休眠状态,从而触发上下文切换。上下文切换过多会造成内核占据较多的CPU使用,使得应用的响应速度下降。

  • 运行队列

       每个CPU 都会维护一个可运行的线程队列,假设一个8核的CPU,Java应用中启动了16个线程,如果这16个线程都处于可运行的状态,那么在分配平均的情况下每个CPU的运行队列里就会有2个线程。通常,系统的load主要 由CPU的运行队列来决定,假设以上状况维持 1 分钟,那这1分钟内系统的load就是2。 一般而言运行队列值越大,那线程会消耗越长的时间才能执行完。

  • 利用率

     CPU利用率为CPU 在用户进程, 内核,中断处理, IO等待以及空闲 5 个部分使用百分比, 这5 个值是用来分析CPU消耗的关键指标。

在Linux中我们可以通过 top 或 pidstat命令来查看进程的CPU消耗情况。

  1. top

       image

       在top 命令的输出中, us 表示用户进程处理所占的百分比, sy 表示内核线程处理所占的百分比, ni 表示被nice 命令改变优先级的任务所占的百分比, id 表示CPU的空闲时间所占的百分比, wa 表示在执行的过程中等待IO所占的百分比, hi 表示硬件中断所占的百分比, si 表示软件中断所占的百分比。

     2. pidstat

      pidstat 是 SYSSTAT 中的工具 (ubuntu 下安装 : sudo apt-get install sysstat)

      image

    

      当CPU消耗严重时,主要体现在us , sy, wa 或 hi 的值 变高, wa 的值是IO等待造成。 对于java 应用, CPU 消耗严重主要体现在 us, sy

两个值高。

转载于:https://www.cnblogs.com/vincent2010/p/4771676.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值