服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux服务器性能分析之CPU利用率

Linux服务器性能分析之CPU利用率

2019-05-22 12:14blogsheng服务器之家 Linux

Linux内核的调度方式基本上采用“抢占式优先级”方式,即当进程在用户模式下运行时,不管是否自愿,在一定条件下(如时间片用完或等待I/O),核心就可以暂时剥夺其运行而调度其它进程进入运行。

1. 指标范围

1.1 User mode CPU utilization+ System mode CPU utilization

合理值:60-85%,如果在一个多用户系统中us+sy时间超过85%,则进程可能要花时间在运行队列中等待,响应时间和业务吞吐量会受损害;us过大,说明有用户进程占用很多cpu时间,需要进一步的分析其它软硬件因素;sy过大,说明系统管理方面花了很多时间,说明该系统中某个子系统产生了瓶颈,需要进一步分析其它软硬件因素。

Linux服务器性能分析之CPU利用率

1.2 Wa(wait)

参考值:小于25%,超过25%的wa的值可以表示子系统可能没有被正确平衡,也可能是磁盘密集工作负载的结果,系统的磁盘或其它I/o可能有问题,可以通过iostat/SAR –C命令进一步分解分析

1.3 Id(idle)

参考值:大于40,如果r经常大于4,且id经常小于40,表示cpu的负荷很重

1.4 r

参考值:小于4,队列大于4时,表明系统的cpu或内存可能有问题,如果r经常大于4,且id经常少于40,表示cpu的负荷很重。当队列变长时,队列中进程在等待cpu调度执行时所花的时间会变长

1.5 判断cpu瓶颈的方法

很慢的响应时间(slow response time)

Cpu的空闲时间为零(zero percent idle cpu)

过高的用户占用cpu时间(high percent user cpu)

过高的系统占用cpu时间(high percent system cpu)

长时间的有很长的运行进程队列(large run queue size sustained over time)

2. 如何查看cpu利用率

2.1 使用top命令查看

数据来自/proc/stat文件

Linux服务器性能分析之CPU利用率

%us=(Usertime+Nicetime)/CPU时间*100%

%sy=(Systemtime+Hardirqtime+Softirqtime)/CPU时间*100%

%id=(Idletime)/CPU时间*100%

%ni=(Nicetime)/CPU时间*100%

%wa=(Waitingtime)/CPU时间*100%

%hi=(Hardirqtime)/CPU时间*100%

%si=(Softirqtime)/CPU时间*100%

%st=(Stealtime)/CPU时间*100%

备注: top 命令默认情况下,是每 3 秒刷新一次。也可以通过 top -d <刷新时间间隔> 来指定刷新频率,如top -d 0.1 或top -d 0.01 等。top 执行时,也可以按“s ”键,修改时间间隔。

2.2 使用vmstat查看

Linux服务器性能分析之CPU利用率

r表示运行队列的大小,b表示由于IO等待而的线程数量,in表示中断的数量,cs表示上下文切换的数量。

2.3 其它查看方式

Iostat、sar -q、sar –u等

3. CPU介绍

3.1 内核中的时间

HZ是系统时钟在一秒内固定发出时钟中断的次数。HZ在编译内核前是可以进行配置的,因此通过下述命令就可以查看当前系统的时钟中断频率:cat /boot/config-`uname -r` | grep CONFIG_HZ

tick为系统时钟每“滴答“一次的时间,其值为(1/HZ)秒。也就是连续两次时钟中断之间的时间间隔。

jiffies用来计算自系统启动以来tick的次数,也就是说系统时钟每产生一次时钟中断,该变量的值就增加一次。

3.2 CPU时间组成

CPU的工作时间由三部分组成:用户态时间、系统态时间和空闲态时间。具体的组成为:

CPU时间包含User time、System time、Nice time、Idle time、Waiting time、Hardirq time、Softirq time、Steal time

空闲态时间==idle time

用户态时间==user time+ Nice time。

内核态时间==system time+ Hardirq time+ Softirq time。

user time。指CPU在用户态执行进程的时间。

system time。指CPU在内核运行的时间。

nice time。指系统花费在调整进程优先级上的时间。

idle time。系统处于空闲期,等待进程运行。

waiting time。指CPU花费在等待I/O操作上的总时间,与ed相似。

steal time。指当前CPU被强制(involuntary wait )等待另外虚拟的CPU处理完毕时花费的时间,此时 hypervisor 在为另一个虚拟处理器服务。

Softirq time 、Hardirq time。分别对应系统在处理软硬中断时候所花费的CPU时间。

延伸 · 阅读

精彩推荐