linux命令---top
来源:互联网 发布:mac matte chili 编辑:程序博客网 时间:2024/06/05 04:01
这是我第一次写linux命令篇,提醒一点请学会查看系统自带的手册—有问题找”男人(man)”,一句玩笑莫当真~~
所有命令截图是基于centos7
概述
top命令是Linux下常用的性能分析工具,能够显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用、内存使用、执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令设定。
统计信息区
前五行是系统整体的统计信息。
第1行:任务队列信息
同 uptime 命令的执行结果。
第2行:进程信息
当有多个CPU时,这些内容可能会超过两行(通过按数字1展开所有cpu):
第3行:CPU信息
第4行:内存信息
第5行:交换区信息
swap使用大小:内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
使用内存总量(used):现在系统内核控制的内存数
空闲内存总量(free):是内核还未纳入其管控范围的数量。
* 注意 * 纳入内核管理的内存不一定都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
多说一句:因为linux有一种思想---不用白不用,因此它尽可能的cache和buffers一些数据看以方便下次使用,但实际上这些内存是可以直接拿来使用的,准确的可使用内存 【可使用内存=free+buffers+cached】linux为提高效率,会提前申请内存,即使这些内存没有被具体使用,linux也会提前申请这些内存,然后用这些内存做缓存用,即将刚打开的文件系统缓存入cache,这样对用的服务器free值也会越来越少,buffers和cached会越来越大,其实linux服务器内存不足时,会自动清理cached区域释放内存,然后继续增加cached,free继续减少。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了(当然也可以用vmstat统计si和so这个命令后续会专门介绍)。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义(通过快捷键f调出,已排序)。
默认显示: PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。
修改显示:通过 f 键可以选择显示的内容。
1)按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
2)按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
3)F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。
4)R 键可以将当前的排序倒转。
VIRT:virtual memory usage
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
DATA
1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。
命令使用
命令格式
top -hvV | -bcHisSMm -d delay -n iterations [-u user | -U user] -p pid [, pid …]
选项说明
交互命令
使用交互命令最好就不要用s参数,若使用s参数会屏蔽掉一部分交互命令。
可排查什么问题
1、查看服务器启动时间,观察是否被动重启过:up
2、查看服务器负载:Load average
3、查看服务器进程情况:tasks,是否存在僵尸等
4、查看CPU使用是否正常:
1)总体cpu使用是否正常
2)user和sy使用占比是否正常
3)wa占比是否正常
4)结合数字1查看单核CPU是否正常,经常会有单线程跑满某一核CPU,或者多线程的某一个线程异常导致某一核CPU使用过高,这些从总的CPU情况无法判断(替换命令mpstat -P ALL 1更详细)
5、查看内存是否足够,主要查看swap(参看统计信息最后说明)
6、可查看任务优先级
7、查看进程所消耗资源进一步排查问题:比如排查最占资源的线程信息
1、top查到pid 2、top -Hp pid 找到对应线程tid 3、将tid转换成16进制记为0xtid 4、jstack pid|grep 0xtid -A 30 5、根据打出的栈信息分析问题
8、st%:steal 值比较高的话,你需要向主机供应商申请扩容虚拟机。服务器上的另一个虚拟机可能拥有更大更多的 CPU 时间片,你可能需要申请升级以与之竞争。另外,高 steal 值可能意味着主机供应商在服务器上过量地出售虚拟机。如果升级了虚拟机, steal 值还是不降的话,你应该寻找另一家服务供应商。
低 steal 值意味着你的应用程序在目前的虚拟机上运作良好。因为你的虚拟机不会经常地为了 CPU 时间与其它虚拟机激烈竞争,你的虚拟机会更快地响应。这一点也暗示了,你的主机供应商没有过量地出售虚拟服务,绝对是一件好事情
等等……
原文连接
欢迎补充留言
- linux命令---top命令
- linux命令:top命令
- linux top命令详解
- LINUX top命令
- linux top 命令
- 关于Linux top 命令
- linux top命令温习
- linux top命令详解
- linux top命令详解
- Linux top 命令详解
- linux top命令详解
- Linux top 命令 详解
- linux top命令详解
- LINUX TOP命令详解
- linux命令-top
- linux top命令详解
- Linux top 命令详解
- Linux top 命令详解
- Redis提示(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to pe
- XML基础知识及四种解析方法
- 如何挖掘长尾词,长尾关键词挖掘方法大全
- LintCode_632_二叉树的最大结点
- 选择器 伪类伪元素
- linux命令---top
- android 系统数据业务---模式切换分析(下)
- 进程保活-双进程守护的正确姿势
- 金融衍生品介绍
- 利用指针对数组&句子进行逆序
- Apache ActiveMQ 各个版本所依赖的JDK版本
- HDU5692:Snacks(DFS序 & 线段树区间更新)
- 计算机网络 --应用层
- 通过浏览器获得百度云盘大文件真实下载地址