内容简介:linux系统里面的top命令,可以说是排查线上问题的神器,也是linux系统里面最常用的命令之一,但大多数使用人员,仅仅停留在使用top命令看cpu的使用率,而很少关注其他的展示信息,大大浪费了这个命令的能力,不夸张的讲,这个小小的命令几乎涵盖了整个linux内核的监控面,是每一位优秀的工程师都要掌握的知识。今天我们就庖丁解牛的对这个命令分析一番:
前言
linux系统里面的top命令,可以说是排查线上问题的神器,也是 linux 系统里面最常用的命令之一,但大多数使用人员,仅仅停留在使用top命令看cpu的使用率,而很少关注其他的展示信息,大大浪费了这个命令的能力,不夸张的讲,这个小小的命令几乎涵盖了整个linux内核的监控面,是每一位优秀的工程师都要掌握的知识。
今天我们就庖丁解牛的对这个命令分析一番:
top命令第一行信息解释
(友情提示,可左右滑动)
第一行的数据,通过linux里面的uptime命令,也能拿到一模一样的信息,这里的数据分为四列:
第一列:当前系统时间 第二列:该机器从启动到现在的运行时间,比如上图里面运行了213天,15小时27分 第三列:目前系统登录的用户数,可以看到是1,这个信息同样的通过who命令也能在linux系统中获取
其他还有w命令,能看到更详细的信息:
注意最后一行what代表当前用户正在执行的命令,如果我们想看历史命令,就用history命令,此外还可以通过vim ~/.bash_history 来获取用户的操作命令历史
第四列:表示当前系统的平均load值,从左到右表示1分钟,5分钟,15分钟。
load average表示cpu处理队列的长度,这样也比较容易理解,单核cpu的load最大负载为1,表示一个时刻cpu处理一个任务,load是可以大于1的,这个时候机器已经超负载运行了,整体表现响应慢,卡顿等现象。
下面的命令可以用来查询cpu相关的信息:
查看物理CPU的个数:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
查看单个CPU是几核的:
cat /proc/cpuinfo | grep "cpu cores" | uniq
查看逻辑CPU的个数:
cat /proc/cpuinfo | grep "processor" | wc -l
一般情况下,cpu物理个数 * 核数 是等于 逻辑cpu的个数,如果不相等说明cpu支持超线程。也就是说,如果物理cpu个数 * 核数 = 8,那么8核cpu的cpu的load最大就是8,举个例子,现在有8个卫生间,但有16个人需要用,那么同时只能有8个人能用,另外8个人需要等待,这个时候表现在机器上系统的Load显示为16,代表有8个任务在处理,8个任务在等待处理,已经超出cpu负载运行了,所以观察cpu为800%或者大于的时候,不用大惊小怪,这是正常现象。在linux里面,top命令按数字键1,是可以看到所有的cpu核的负载情况。
top命令第二行信息解释
第二行表示系统此时的进程情况:total:代表目前系统所有的进程数 running:代表目前正在运行的进程数 sleeping:代表目前sleep的进程数 stopped:代表目前中断的进程数 zombie:代表目前存在的僵尸进程数 linux系统中进程的状态图转换如下:
如果系统存在过多的中断进程或者僵尸进程,需要考虑系统是否存在调整过进程的优先级或者进程设计是否存在问题。
top命令第三行信息解释
在linux中,使用man top命令,在帮助文档里面,能够看到下面,关于cpu状态字段的描述:
第一个us代表的是用户空间进程占用cpu的时间百分比,sy代表的是系统空间进程(kernel)占用cpu时间的百分比:
linux系统抽象分为三部分,最下层是硬件层,中间是系统空间,上层为用户空间。进程在执行用户自己的代码时,则其处于用户态,此时耗费的cpu统计为us,而相反一个进程执行系统而陷入内核代码执行时,此时处于内核运行态,耗费的cpu为sy。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 运维工程师必备:请收好 Linux 网络命令集锦
- 大数据分析工程师入门(十):Linux 命令基础
- 前端工程师如何成为全栈工程师?
- 从乙方工程师转为甲方工程师的一些思考
- 软件工程师VS硬件工程师的思维对比,说中你了吗?
- 数据科学家、机器学习工程师与普通的软件工程师有什么不同
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。