top前五行统计信息
第一行: top - 10:10:15 up 8:06, 4 users, load average: 0.00, 0.00, 0.00
第1行是任务队列信息,其参数如下
内容 含义
10:10:15 当前时间
up 8:06 系统运行时间 格式为时:分
4 users 当前登录用户数
load average: 0.00, 0.00, 0.00 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
【提示】:top给出的系统运行时间,反应了当前系统存活多久,对于某些应用而言,系统需要保证7*24小时的高可用性,这个字段信息就能很好的衡量系统的高可用性。
第二行:Tasks: 215 total, 1 running, 214 sleeping, 0 stopped, 0 zombie
第2行是行为进程信息,其参数如下
内容 |
含义 |
2048.0 total |
交换区总量 |
2048.0 free |
空闲交换区总量 |
0.0 used |
使用的交换区总量 |
1522.3 avail Mem |
缓冲的交换区总量。 |
【提示】:在linux操作系统中,一般有以下5种状态的进程信息:D:不可中断睡眠态(通常出现在IO阻塞)、R:运行态、S:睡眠态、T:已停止、z:僵尸态
第三行:%Cpu(s): 0.1 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第3行是CPU的信息,其参数如下
内容 含义
0.0 us 表示 CPU 在用户运行的时间百分比,通常用户 CPU 高表示有应用程序比较繁忙。典型的用户程序有:数据库、Web 服务器等。
0.0 sy 表示 CPU 在内核态运行的时间百分比(不包括中断),通常内核态 CPU 越低越好,否则表示系统存在某些瓶颈。
0.0 ni 表示用 nice 修正进程优先级的用户进程执行的 CPU 时间。nice 是一个进程优先级的修正值,如果进程通过它修改了优先级,则会单独统计 CPU 开销。
99.9 id 表示 CPU 处于空闲态的时间占比,此时,CPU 会执行一个特定的虚拟进程,名为 System Idle Process。
0.0 wa 表示 CPU 在等待 I/O 操作完成所花费的时间,通常该指标越低越好,否则表示 I/O 存在瓶颈,可以用 iostat 等命令做进一步分析。
0.0 hi 表示 CPU 处理硬中断所花费的时间。硬中断是由外设硬件(如键盘控制器、硬件传感器等)发出的,需要有中断控制器参与,特点是快速执行。
0.0 si 表示 CPU 处理软中断所花费的时间。软中断是由软件程序(如网络收发、定时调度等)发出的中断信号,特点是延迟执行
0.0 st CPU 被其他虚拟机占用的时间,仅出现在多虚拟机场景。如果该指标过高,可以检查下宿主机或其他虚拟机是否异常。
【提示】:一般我们关注多的是us、sy、id、wa、hi、wi这个6个数值,在这里我们需要注意的指标如下:
**CPU(s):**表示当前CPU的平均值,默认top命令配置显示的是平均的CPU使用情况,如果按下键盘1可以显示各个逻辑CPU的使用情况,
如下图所示:
请添加图片描述
- 统计空闲的CPU我们直接统计%id的计数即可,当id持续过低的时候,表示系统迫切需要解决CPU资源问题。
- 统计使用的是CPU需要用1-%id获取。或者us+sy+si.
- wa:使用率过高的时候,我们需要考虑IO的性能是否有瓶颈,可以在使用iostat、sar等命令做进一步分析;
- hi:使用率过高时,表示当前硬件中断占用很大的百分比。一般硬件中断我们可以分析文件/proc/interrupts、/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及CPU的频率设置,通过这些可以帮系统打散优化系统的硬件中断。
- si:Linux kernel通过用一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断。常见的软件中断一般都是和网络有关。从网卡到IP层的数据报文收发都是si处理的,长时间写日志也可能产生软件中断。
- 当软中断出现瓶颈的时候,系统有个进行叫ksoftirqd,每个CPU都有自己对应的ksoftirqd/n(n为CPU的逻辑ID),每个ksoftirqd的内核线程都会去运行对应的ksoftirqd(函数)来处理自己的中断队列上的软件中断。所以,当网络出现阻塞的时候,软件中断程序ksoftirqd肯定会出现瓶颈。此时我们可以通过ps aux|grep ksoftirqd查看ksoftirqd的瓶颈。
第四行:MiB Mem : 2425.4 total, 835.1 free, 700.8 used, 889.5 buff/cache
第4行是内存信息***(物理内存)***,其参数如下
内容 含义
2425.4 total 物理内存总量
835.1 free 空闲物理内存
700.8 used 已经使用的物理内存
889.5 buff/cache 内核缓存内存量
第五行:MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1522.3 avail Mem
第5行是swap内存交换分区信息**(虚拟内存)**,其参数如下
内容 含义
2048.0 total 交换区总量
2048.0 free 空闲交换区总量
0.0 used 使用的交换区总量
1522.3 avail Mem 缓冲的交换区总量。
注意: 这里应该还有个 cached Mem 原因:新安装的虚拟机 缓冲区非常小几乎没有
有以下结论可以帮助内存分析
buffer和cache的作用是所用I/O系统调用的时间,比如读写等。一般一个系统而言,如果cache的值很大,说明cache住的文件多。如果频繁访问文件都能被命中,很明显会比读取磁盘调用快,磁盘的IO必定会减小。
注意:cache的命中率很关键,如果频繁访问的文件不能被命中,对于cache而言是个比较的大的资源浪费,此时应考虑drop cache并提升对应的cache的命中率。
(2)从字段的意义上来说mem.free表示的是空闲内存总量,但是需要注意的是,虽然buffer/cache会占用一定的物理内存,但是当系统需要内存的时候,这些内存立即释放出来,也就是说buffer/cache可以看成可用内存。
iotop -m 10查看IO cpu占用