第一行后面的三个值是系统在之前 1、5、15 的平均负载,也可以看出系统负载是上升、平稳、下降的趋势,当这个值超过 CPU 可执行单元的数目,则表示CPU的性能已经饱和成为瓶颈了。
第二行统计了系统的任务状态信息。包括正在 CPU 上运行的和将要被调度运行的;sleeping 通常是等待事件(比如 IO 操作)完成的任务,细分可以包括interruptible和uninterruptible的类型stopped是一些被暂停的任务,通常发送SIGSTOP或者对一个前台任务操作Ctrl-Z可以将其暂停;zombie僵尸任务,虽然进程终止资源会被自动回收,但是含有退出任务的 task descriptor 需要父进程访问后才能释放。
第三 CPU占用率根据类型有以下几种情况:
√ (us) user:CPU在低 nice 值(高优先级)用户态所占用的时间(nice<=0)。正常情况下服务器的CPU时间应该都在此执行这类程序。
√ (sy) system:CPU处于内核态所占用的时间,操作系统通过系统调用(system call)从用户态陷入内核态,以执行特定的服务;通常情况下该值会比较小,但是当服务器执行的 IO 比较密集的时候,该值会比较大。
√ (ni) nice:CPU在高nice值(低优先级)用户态以低优先级运行占用的时间(nice>0)。默认新启动的进程 nice=0,是不会计入这里的,除非手动通过renice或者setpriority()的方式修改程序的nice值。
√ (id) idle:CPU在空闲状态所占用的时间。
√ (wa) iowait:等待IO完成做占用的时间。
√ (hi) irq:系统处理硬件中断所消耗的时间。
√ (si) softirq:系统处理软中断所消耗的时间,软中断分为softirqs、tasklets、work queues。
√ (st) steal:在虚拟机情况下才有意义,因为虚拟机CPU也是共享物理CPU 的,这段时间表明虚拟机等待hypervisor调度CPU的时间,也意味着这段时间hypervisor将CPU调度给别的CPU执行。
第四行和第五行是物理内存和虚拟内存(交换分区)的信息
total = free + used + buff/cache,buffers和cached Mem信息总和到一起。buffers和cached Mem是/proc/meminfo中的Buffers和Cached字段:Buffers是针对raw disk的块缓存,主要是以raw block的方式缓存文件系统的元数据,这个值一般比较小;而Cached是针对于某些具体的文件进行读缓存,以增加文件的访问效率而使用的,可以说是用于文件系统中文件缓存使用。
avail Mem是一个新的参数值,用于指示在不进行交换的情况下,可以给新开启的程序多少内存空间,大致和free+buff/cached相当。
top命令非常强大,但是通常用于控制台实时监测系统信息,不适合长时间监测系统的负载信息,同时对于短命的进程也会遗漏无法给出统计信息。
了解更多服务器及资讯,请关注梦飞科技官方网站,感谢您的支持!