一个基于 Linux 操作体系的办事器运行的同时,也会表征出各类各样参数信息。平日来说袈渌维人员、体系治理员会对这些数据会极为敏感,然则这些参数对于开辟者来说也十分重要,尤其当你的法度榜样非正常工作的时刻,这些蛛丝马迹往往会赞助快速定位跟踪问题。
这里只是一些简单的对象查看体系的相干参数,当然很多对象也是经由过程分析加工 /proc、/sys 下的数据来工作的,而那些加倍过细、专业的机能监测和调优,可能还须要加倍专业的对象(perf、systemtap 等)和技巧才能完成哦。
毕竟来说,体系机能监控本身就是个大年夜学问。
一、CPU和内存类
1.1 top
➜ ~ top
第一行后面的三个值是体系在之前 1、5、15 的平均负载,也可以看出体系负载是上升、安稳、降低的趋势,当这个值跨越 CPU 可履行单位的数量,则表示 CPU 的机能已经饱和成为瓶颈了。
而 avail Mem 是一个新的参数值,用于指导在一向行交换的情况下,可以给新开启的法度榜样若干内存空间,大年夜致和 free + buff/cached 相当,而这也印证了膳绫擎的说法,free + buffers + cached Mem才是真正可用的物理内存。并且,应用交换分区不见得是坏工作,所以交换分区应用率不是什么严重的参数,然则频繁的 swap in/out 就不是功德情了,这种情况须要留意,平日表示物理内存紧缺的情况。
第二行统计了体系的义务状况信息。running 很天然不必多说,包含正在 CPU 上运行的和将要被调剂运行的;sleeping 平日是等待事宜(比如 IO 操作)完成的义务,细分可以包含 interruptible 和 uninterruptible 的类型;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,是不管帐入这里的,除非手动经由过程 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 应用率过高情况下指清楚明了响应地排查思路:
- 当 user 占用率过高的时刻,平日是某些个其余过程占用了大年夜量的 CPU,这时刻很轻易经由过程 top 找到该法度榜样;此时如不雅困惑法度榜样异常,可以经由过程 perf 等思路找出热点调用函数来进一步排查;
- 当 system 占用率过高的时刻,如不雅 IO 操作(包含终端 IO)比较多,可能会造成这部分的 CPU 占用率高,比如在 file server、database server 等类型的办事器上,不然(比如>20%)很可能有些部分的内核、驱动模块有问题;
- 当 nice 占用率过高的时刻,平日是有意行动,当过程的提议者知道某些过程占用较高的 CPU,会设置其 nice 值确保不会吞没其他过程对 CPU 的应用请求;
- 当 iowait 占用率过高的时刻,通平平易近味着某些法度榜样的 IO 操作效力很低,或者 IO 对应设备的机能很低以至于读写操作须要很长的时光来完成;
- 当 irq/softirq 占用率过高的时刻,很可能某些外设出现问题,导致产生大年夜量的irq请求,这时刻经由过程检查 /proc/interrupts 文件来深究问题地点;
- 当 steal 占用率过高的时刻,黑心厂商虚拟机超售了吧!
total = free + used + buff/cache,如今buffers和cached Mem信息总和到一路了,然则buffers和cached
Mem 的关系很多处所都没说清跋扈。其实经由过程比较数据,这两个值就是 /proc/meminfo 中的 Buffers 和 Cached 字段:Buffers 是针对 raw disk 的块缓存,主如果以 raw block 的方法缓存文件体系的元数据(比如超等可托息等),这个值一般比较小(20M阁下);而 Cached 是针对于某些具体的文件进行读缓存,以增长文件的拜访效力而应用的,可以说是用于文件体系中文件缓存应用。
最后是每个法度榜样的资本占用列表,个中 CPU 的应用率是所有 CPU core 占用率的总和。平日履行 top 的时刻,本身该法度榜样会大年夜量的攫取 /proc 操作,所以根本该 top 法度榜样本身也会是名列前茅的。
推荐阅读
【51CTO.com原创稿件】时至今日,云栖大年夜会已有八个岁首,本次大年夜会主题是“飞天·智能”, 自10月11日开端,为期四天。由杭州市人平易近当局、阿里巴巴集团、蚂蚁>>>详细阅读
地址:http://www.17bianji.com/lsqh/37888.html
1/2 1