linux下,使用top命令进行监听:
按1:
1.top - 08:32:20 up 0 min, 0 users, load average: 0.19, 0.06, 0.02
当时系统时间:8:32:20 运行了0分钟,当前没有登录用户(登录到主机,例如使用ssh方式登录一个docker用户),系统负载平均长度:0.19, 0.06, 0.02,分别为1分钟、5分钟、15分钟到当前的平均负载值,系统是4核,所以系统负载不大
2.Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
进程状态信息:linux系统中进程一般有5种状态
状态 | 名称 | 说明 |
D | 不可中断的睡眠态 | Uninterruptible sleep,通常出现在IO阻塞 |
R | 可运行态 | Running or runnable |
S | 睡眠态 | Interruptible sleep |
T | 被跟踪或已停止 | stopped |
Z | 僵尸态 | process |
3.%Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
CPU状态信息:
0.7 us:用户空间占用CPU百分比
0.3 sy:内核空间占用cpu百分比
0.0 ni:用户进程空间内改变过优先级的进程占用cpu百分比
99.0 id:空闲cpu百分比
0.0 wa:等待输入/输出的cpu时间百分比
0.0 hi:硬中断占用cpu百分比
0.0 si:软中断占用cpu百分比
通常关注的就是上面这6项,需要注意的指标:
(1)id:统计空闲cpu利用率是,直接统计id的计数即可,当id持续过低,系统迫切需要解决cpu资源问题
(2)1-id:统计使用的cpu利用率需要通过1-id获取
(3)wa:使用率过高时,要考虑IO性能是否有瓶颈,可以用iostat、sar等命令做进一步分析
(4)hi:硬中断使用率过高,表示当前硬件中断占用很大的百分比,对一般硬件中断,我们可以分析文件/proc/interrupts、/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及cpu的频率设置,通过这些可以优化系统的硬件中断
(5)si:linux kernel 通过一种软件的方法(可延迟函数)来模拟硬件中断模式,通常叫做软中断。常见的软件中断一般都和网络相关。从网卡到ip层的数据报文收发都是由软件中断来处理的。长时间的写日志也可能产生软件中断
(6)ni:优先级,操作系统用来决定cpu分配的参数,linux使用round-robin的算法来做cpu排程,有限序越高,可能获得的cpu时间就越多。我们可以通过nice命令以更改过的优先级来执行程序,如果未指定程序,则会打印出目前的排程优先级,内定的adjustment为10,范围为-20(最高优先级)~19(最低优先级)
(7)us:一般我们想得到cpu利用率 需将 us + sy + si 。一般来说在做系统分析获取系统cpu使用情况应该用 1- id