性能监控工具:top

一. 字段介绍

默认情况下top命令仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。

# top
top - 14:10:45 up 3 days, 21:54,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 109 total,   1 running, 107 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.2 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881340 total,  2384096 free,   764044 used,   733200 buff/cache
KiB Swap:  4064252 total,  4064252 free,        0 used.  2786112 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
10673 tomcat    20   0 3189912 523976  14328 S   1.3 13.5  88:07.20 java
  771 root      20   0  218504   9520   5984 S   0.3  0.2   0:24.28 rsyslogd
    1 root      20   0  125344   3760   2564 S   0.0  0.1   1:56.72 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.21 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:01.94 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.10 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   0:43.99 rcu_sched
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S   0.0  0.0   0:01.57 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   0:02.02 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0   0:00.18 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   0:02.61 ksoftirqd/1
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs
   19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns
   20 root      20   0       0      0      0 S   0.0  0.0   0:00.35 khungtaskd
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback
   22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd
   23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
   24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kblockd
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 md
   26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 edac-poller
   32 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kswapd0

第一部分

  1. 第一行:任务队列信息
# top
top - 14:10:45 up 3 days, 21:54,  1 user,  load average: 0.00, 0.01, 0.05
  • 14:10:45:当前时间
  • up 3 days, 21:54:系统已经运行的时间3天,21小时54分钟
  • 1 user:当前登陆用户数量1
  • load average: 0.00, 0.01, 0.05:最近5/10/15 分钟内的平均负载

注意:
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值:
1)单核CPU情况下:0.00表示没有任何负荷,1.00表示刚好满负荷,超过1.00则表示超负荷,理想值为0.7
2)多核CPU情况下:CPU核数 * 理想值0.7 = 理想负荷,例如:4核CPU负载不超过2.8则表示没有出现高负载
(查询CPU的核数:cat /proc/cpuinfo| grep "cpu cores"| uniq)

  1. 第二行:任务进程相关信息
Tasks: 117 total,   2 running, 115 sleeping,   0 stopped,   0 zombie
  • Tasks:任务(进程),系统现在有117个进程,其中处于运行中的有2个(running),115个在休眠(sleep),stoped状态的有0个,zombie状态的有0个
  1. 第三行:CPU信息(多个cpu时,内容可能会超过两行)
%Cpu(s):  0.3 us,  0.5 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • 0.3 us:用户空间所占cpu百分比
  • 0.5 sy:内核空间所占用cpu百分比
  • 0.0 ni:用户进程空间内改变过优先级的进程占用cpu百分比
  • 99.2 id:空闲cpu百分比
  • 0.0 wa:等待输入输出的cpu时间百分比
  • 0.0 hi:硬件CPU中断占用百分比
  • 0.0 si:软中断占用百分比
  • 0.0 st:虚拟机占用百分比
  1. 第四行和第五行:内存使用(与free命令类似)
//物理内存使用
KiB Mem :  3881340 total,  2204420 free,   801112 used,   875808 buff/cache
//虚拟内存使用
KiB Swap:  4064252 total,  4064252 free,        0 used.  2745980 avail Mem

物理内存:

  • 3881340 total:物理内存总量
  • 2204420 free:空闲内存总量
  • 801112 used:使用中的内存总量
  • 875808 buff/cache:缓存的内存总量
    swap交换分区:
  • 4064252 total:交换区总量
  • 4064252 free:空闲交换区总量
  • 0 used:使用中的交换区总量
  • 2745980 avail Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入

近似计算服务器的真正可用内存:第四行的free + 第四行的buffers + 第五行的cached
注意:
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了,或者运行有内存溢出问题

第二部分:各进程状态监控

通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。


image.png
  • PID:进程id
  • PPID:父进程id
  • RUSER:Real user name
  • UID:进程所有者的用户id
  • USER:进程所有者的用户名
  • GROUP:进程所有者的组名
  • TTY:启动进程的终端名,不是从终端启动的进程则显示?
  • PR:优先级
  • NI:nice值,负值表示高优先级,正值表示低优先级
  • P:最后使用的CPU,仅在多CPU的环境下有意义
  • %CPU:上次更新到现在的CPU的时间占用百分比
  • TIME:进程使用CPU时间总计,单位:秒
  • TIME+:进程使用的CPU时间总计,单位:0.01秒
  • %MEM:进程使用的物理内存百分比
  • VIRT:virtual memory usage 虚拟内存总量,VIRT=SWAP+RES
    1)进程“需要的”虚拟内存大小,包括进程使用的库/代码/数据等;
    2)假如进程申请100M的内存,但实际使用10M,那么它会增长100M,而不是实际使用量
  • RES:resident memory usage 常驻内存,进程使用的未被换出的物理内存大小,单位kb,RES=CODE+DATA
    1)进程当前使用的内存大小,但不包括swap out
    2)包含其他进程的共享
    3)如果申请100M的内存,实际使用10M,则仅增长10M
    4)关于库占用内存的情况,它只统计加载的库文件所占内存大小
  • SHR:shared memory 共享内存,单位kb
    1)除了自身进程的共享内存,也包括其他进程的共享内存
    2)虽然进程只使用了几个共享库的函数,但是它包含了整个共享库的大小
    3)计算某个进程所占物理内存大小公式:RES-SHR
    4)swap out后,数值会降下来
  • CODE:可执行代码占用的物理内存大小,单位kb
  • nFLT:页面错误次数
  • nDRT:最后一次写入到现在,被修改过的页面数
  • S:进程状态,D-不可中断的睡眠状态;R-运行;S-睡眠;T=跟踪/停止;Z-僵尸进程
  • COMMAND :命令名/命令行
  • WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
  • Flages:任务标志
  • DATA:数据占用的内存, 真正的该程序要求的数据空间,是真正在运行中要使用的

二. top运行过程中显示方式控制

  • s :改变画面更新频率
  • l:关闭或开启第一部分第一行 top信息的显示
  • t:关闭或开启第一部分第二行 Tasks和第三行 Cpus信息的显示
  • m :关闭或开启第一部分第四行 Mem和第五行Swap信息的显示
  • N :以PID的大小顺序排列展示进程列表
  • P:以CPU占用率的大小顺序排列进程列表
  • M :以内存占用率的大小顺序排列进程列表
  • h:显示帮助
  • n : 设置在进程列表所显示进程的数量
  • q:退出top

三. top命令参数使用

使用格式:top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:

  • d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之
  • p:通过指定监控进程ID来仅仅监控某个进程的状态
  • q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行
  • S:指定累计模式
  • s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
  • i:使top不显示任何闲置或者僵死进程。
  • c:显示整个命令行而不只是显示命令名。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行...
    暴走小能猫阅读 1,039评论 0 3
  • 简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任...
    靜默阅读 4,407评论 0 0
  • 声明:原创文章,转载请注明出处。http://www.jianshu.com/u/e02df63eaa87 1、L...
    唐影若凡阅读 3,591评论 0 11
  • 一、top(Linux命令) 执行top命令: (查看进程15477的详细情况,下文用到) 系统信息(前五行): ...
    java菜阅读 1,091评论 0 1
  • TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该...
    canyoungerz阅读 870评论 0 0