首页 培训网 最新资讯 热门问答

Linux认证

免费试听 在线客服

您的位置: 北京培训网 > Linux认证培训资讯 > 专业Linux培训机构为你解析top参数指标

专业Linux培训机构为你解析top参数指标

来源:教育联展网 | 发布时间: | 编辑:佚名

Top参数是Linux系统中与CPU有关的一个很重要的参数,也是千锋老师教学工作中发现的重难点。不过没关系,让我们一起来攻破它吧! 第二行统计了系统的任务状态信息。running 自然不必多说,包括正在 CPU 上运行的和将要被调度运行的;sleeping 通常是等待事件(比如 IO 操作)完成的任务,细分可以包括 interruptible 和 uninterruptible 的类型。

专业Linux培训机构为你解析top参数指标

Top参数是Linux系统中与CPU有关的一个很重要的参数,也是千锋老师教学工作中发现的重难点。不过没关系,让我们一起来攻破它吧!

第二行统计了系统的任务状态信息。running 自然不必多说,包括正在 CPU 上运行的和将要被调度运行的;sleeping 通常是等待事件(比如 IO 操作)完成的任务,细分可以包括 interruptible 和 uninterruptible 的类型。

首行后面的三个值是系统在之前 1、5、15 的平均负载,也可以看出系统负载是上升、平稳、下降的趋势,当这个值超过 CPU 可执行单元的数目,则表示 CPU 的性能已经饱和成为瓶颈了。

而stopped 是一些被暂停的任务,通常发送 SIGSTOP 或者对一个前台任务操作 Ctrl-Z 可以将其暂停;zombie 僵尸任务。

虽然进程终止资源会被自动回收,但是含有退出任务的 task descriptor 需要父进程访问后才能释放,这种进程显示为 defunct 状态。

无论是因为父进程提前退出还是未 wait 调用,出现这种进程都应该格外注意程序是否设计有误。



第三行 CPU 占用率根据类型有以下几种情况:

· (us) user:CPU 在低 nice 值(高优先级)用户态所占用的时间(nice<=0)。正常情况下只要服务器不是很闲,那么大部分的 CPU 时间应该都在此执行这类程序

· (sy) system:CPU 处于内核态所占用的时间,操作系统经由系统调用(system call)从用户态陷入内核态,以执行特定的服务;通常情况下该值会比较小,但是当服务器执行的 IO 比较密集的时候,该值会比较大

· (ni) nice:CPU 在高 nice 值(低优先级)用户态以低优先级运行占用的时间(nice>0)。默认新启动的进程 nice=0,是不会计入这里的,除非手动pass renice 或者 setpriority() 的方式修改程序的nice值

· (id) idle:CPU在空闲状态(执行 kernel idle handler )占用的时间

· (wa) iowait:等待 IO 完成做占用的时间

· (hi) irq:系统处理硬件中断所消耗的时间

· (si) softirq:系统处理软中断所消耗的时间,记住软中断分为 softirqs、tasklets (其实是前者的特例)、work queues,不知道这里是统计的是哪些时间,毕竟 work queues 的执行已经不是中断上下文了。

· (st) steal:在虚拟机情况下才有意义,因为虚拟机下 CPU 也是共享物理 CPU 的,所以这段时间表明虚拟机等待 hypervisor 调度 CPU 的时间,也意味着这段时间 hypervisor 将 CPU 调度给别的 CPU 执行,这个时段的 CPU 资源被“stolen”了。

· 这个值在我 KVM 的 VPS 机器上是不为 0 的,但也只有 0.1 这个数量级,是不是可以用来判断 VPS 超售的情况?CPU 占用率高,在很多情况下意味着一些东西,这也给服务器 CPU 使用率过高情况下指明了相应的排查思路:

a. 当 user 占用率过高的时候,通常是某些个别的进程占用了大量的 CPU,这时候很容易靠 top 找到该程序;此时如果怀疑程序异常,可以靠 perf 等思路找出热点调用函数来进一步排查;

b. 当 system 占用率过高的时候,如果 IO 操作(包括终端 IO)比较多,可能会造成这部分的 CPU 占用率高,比如在 file server、database server 等类型的服务器上,否则(比如>20%)很可能有些部分的内核、驱动模块有问题;

c. 当 nice 占用率过高的时候,通常是有意行为,当进程的发起者知道某些进程占用较高的 CPU,会设置其 nice 值确保不会淹没其他进程对 CPU 的使用请求;

d. 当 iowait 占用率过高的时候,通常意味着某些程序的 IO 操作效率很低,或者 IO 对应设备的性能很低以至于读写操作需要很长的时间来完成;

e. 当 irq/softirq 占用率过高的时候,很可能某些外设出现问题,导致产生大量的irq请求,这时候得检查 /proc/interrupts 文件来深究问题所在;

f. 当 steal 占用率过高的时候,黑心厂商虚拟机超售了吧!

第四行和第五行是物理内存和虚拟内存(交换分区)的信息:total = free used buff/cache,现在buffers和cached Mem信息总和到一起了,但是buffers和cached。

Mem 的关系很多地方都没说清楚。其实依靠对比数据,这两个值就是 /proc/meminfo 中的 Buffers 和 Cached 字段:Buffers 是针对 raw disk 的块缓存,主要是以 raw block 的方式缓存文件系统的元数据(比如超级块信息等),这个值一般比较小(20M左右)。

而 Cached 是针对于某些具体的文件进行读缓存,以增加文件的访问效率而使用的,可以说是用于文件系统中文件缓存使用。

而 avail Mem 是一个新的参数值,用于指示在不进行交换的情况下,可以给新开启的程序多少内存空间,大致和 free buff/cached 相当,而这也印证了上面的说法,free buffers cached Mem才是真正可用的物理内存。

并且,使用交换分区不见得是坏事情,所以交换分区使用率不是什么严重的参数,但是频繁的 swap in/out 就不是好事情了,这种情况需要注意,通常表示物理内存紧缺的情况。

末了是每个程序的资源占用列表,其中 CPU 的使用率是所有 CPU core 占用率的总和。通常执行 top 的时候,本身该程序会大量的读取 /proc 操作,所以基本该 top 程序本身也会是名列前茅的。

top 虽然非常强大,但是通常用于控制台实时监测系统信息,不适合长时间(几天、几个月)监测系统的负载信息,同时对于短命的进程也会遗漏无法给出统计信息。

咨询电话:010-64707530  金老师

热门机构推荐
Linux认证

免费体验课开班倒计时

11: 41: 09

稍后会有专业老师给您回电,请保持电话畅通

咨询电话:

本周热门资讯

全国分站 热门机构

北京Linux认证培训 上海Linux认证培训 广州Linux认证培训 深圳Linux认证培训 杭州Linux认证培训 苏州Linux认证培训 南京Linux认证培训 天津Linux认证培训 佛山Linux认证培训 南宁Linux认证培训 长沙Linux认证培训 重庆Linux认证培训 太原Linux认证培训 青岛Linux认证培训 宁波Linux认证培训 郑州Linux认证培训 西安Linux认证培训 厦门Linux认证培训 武汉Linux认证培训 成都Linux认证培训 无锡Linux认证培训 济南Linux认证培训 昆明Linux认证培训 贵阳Linux认证培训 扬州Linux认证培训 徐州Linux认证培训 珠海Linux认证培训 合肥Linux认证培训 长春Linux认证培训

珠海达内教育青岛达内武汉达内教育石家庄达内教育

申请试听名额

已有10254人申请免费试听

01电话咨询 |

QQ:
加盟合作:0755-83654572

今日已有25人申请,本月限额500