top命令是Linux下经常使用的性能分析工具,可以实时显示系统中各个进程的资源占用情况。linux
top 命令运行图:服务器
load average 表示系统负载均值,使用 top 或 uptime 能够查看到负载均值的信息,三个数值分表表示 1分钟内 、5分钟内 、 15分钟内的系统负载均值,要理解这三个数值的含义,首先要了解系统的“核数” 工具
系统的核数 = CPU1 x CPU1的核数 + CPU2 x CPU2的核数 + CPUn x CPUn的核数 + ……
性能
更清楚的讲,在Linux系统中输入命令grep -c 'model name' /proc/cpuinfo
,便可获得核数。 ui
回到负载均值,负载均值的饱和值等于系统的核数
, 因此,根据load average观察系统负载首先要看系统中共有多少"核",单处理器单核的饱和值为 1,单处理器双核的饱和值为2,双处理器单核的饱和值也为2.
理解负载均值的最经典的例子是把一个CPU的核当作一座单行单向桥,多核即为多行路单向桥.如图: spa
假定,目前系统是单核系统,根据上面的描述,它的负载饱和值为1.这种条件下,各类数值的含义以下:操作系统
0.00 表示桥上没有任何车流,很是畅通命令行
0.50 表示桥上有最高承载量一半的车流,也比较流畅.code
1.00 表示桥上已经达到了最大承载量,若是再有车来,可能就要稍等才能上桥了,这种状况下,车速都会很慢,每每都会形成负载均值继续上升.blog
1.70 表示桥已经达到最大负载,且还有相对于桥最大负载70%的车辆等待上桥,这个时候的系统,已经要不堪重负了.
在实际应用中,重点关注5分钟,15分钟的负载均值,当达到0.7时,就须要调查缘由了。
僵尸进程:表示已经终止,但仍然保留一些信息的进程。其等待父进程调用wait(),就能够从内存中彻底移除。 将是进程没法使用
kill
清理。若是要手动清理僵尸进程,须要找到其父进程,kill掉父进程后,LInux的init
进程将接管该僵尸进程(linux中全部的子进程都须要有父进程,当父进程被kill后,其全部子进程将过继给init进程),init进程隔一段时间去调用wait(),来清除僵尸进程。
buffers 和 cache 都是内存中存放的数据,不一样的是,buffers 存放的是准备写入磁盘的数据,而 cache 存放的是从磁盘中读取的数据
在Linux系统中,有一个守护进程(daemon)会按期把buffers中的数据写入的磁盘,也可使用 sync 命令手动把buffers中的数据写入磁盘。使用buffers能够把分散的 I/O 操做集中起来,减小了磁盘寻道的时间和磁盘碎片。
cache是Linux把读取频率高的数据,放到内存中,减小I/O。Linux中cache没有固定大小,根据使用状况自动增长或删除。
# 手动把buffers写入硬盘并清空cache sync && echo 3 > /proc/sys/vm/drop_caches
是硬盘上的一块空间。在内存不足的状况下,操做系统把内存中不用的数据存到硬盘的交换区,腾出内存来让别的程序运行。所以,开启swap会必定程度的引发 I/O 性能降低(阿里服务器默认不开)。
-b
:以批处理模式操做 这种方式能够把top输出的内容以可读的形式写入文件top -b >> top.txt
-c
:显示完整的命令行(COMMAND),想查看进程执行的具体位置时,很是有用 -d
:屏幕刷新间隔时间 top -d 1
:表示每隔一秒刷新一次 -s
:使用保密模式 -S
:指定累积模式 -i
:不显示任何闲置或者僵死进程 -u<用户名
>:指定用户名 -p<进程号
>:指定进程 -n<次数>
:指定循环显示的次数,到了次数本身退出。
top命令显示系统实时状态,支持交互操做。执行top命令,显示系统状态界面(同时也是交互界面),输入交互命令:
1
:查看CPU每一个核的使用状况 h
:显示帮助画面,给出一些简短的命令总结说明 k
:终止一个进程 i
:忽略闲置和僵死进程,这是一个开关式命令 q
:退出程序 r
:从新安排一个进程的优先级别 S
:切换到累计模式 s
:改变两次刷新之间的延迟时间(单位为s),若是有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s l
:切换显示平均负载和启动时间信息 m
:切换显示内存信息 t
:切换显示进程和CPU状态信息 c
:切换显示命令名称和完整命令行 M
:根据驻留内存大小进行排序 P
:根据CPU使用百分比大小进行排序 T
:根据时间/累计时间进行排序 w
:将当前设置写入~/.toprc文件中。