楔子: 学会灵活使用各种或工具或手段来监测自己的项目运行情况无疑是一种自我能力的提高。Linux top 命令也许会有所帮助。

Linux top 命令

Linux top 命令是服务器工程师和运维最常用的工具之一,它所带出来的信息可以有效的观察和监测当前服务器的各项性能,如系统CPU、内存、运行时间、执行的进程等信息,这可以实时有效的发现服务器运载能力或缺陷出在哪里。如内存不够、CPU处理能力不够、IO读写过高等等。就像 Windows 的任务管理器。

[devuser@ping-test8264 logs]$ top
top - 14:36:45 up 12 days,  3:16,  1 user,  load average: 0.66, 0.67, 0.63
Tasks:  91 total,   1 running,  89 sleeping,   1 stopped,   0 zombie
Cpu(s): 40.3%us,  0.3%sy,  0.0%ni, 59.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2045940k total,  2027396k used,    18544k free,    87148k buffers
Swap:  1048572k total,     7472k used,  1041100k free,   110292k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
28132 ping      20   0 2927m 1.7g 6728 S 81.1 85.5 780:26.52 java
30846 root      20   0  323m  10m 3216 S  0.3  0.5  27:33.91 ops-agent                                                           1 root      20   0 19236 1252 1112 S  0.0  0.1   0:00.37 init                                                                2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                            3 root      RT   0     0    0    0 S  0.0  0.0   0:04.29 migration/0                                                         4 root      20   0     0    0    0 S  0.0  0.0   0:10.99 ksoftirqd/0                                                         5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0                                                           6 root      RT   0     0    0    0 S  0.0  0.0   0:02.32 watchdog/0                                                          7 root      RT   0     0    0    0 S  0.0  0.0   0:04.43 migration/1                                                         8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/1                                                           9 root      20   0     0    0    0 S  0.0  0.0   0:09.90 ksoftirqd/1                                                         10 root      RT   0     0    0    0 S  0.0  0.0   0:02.24 watchdog/1                                                          11 root      20   0     0    0    0 S  0.0  0.0   1:12.45 events/0                                                            12 root      20   0     0    0    0 S  0.0  0.0   1:20.05 events/1                                                            13 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/0                                                            14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events/1                                                            15 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/0                                                       16 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_long/1                                                       17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef                                                     18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 events_power_ef                                                     19 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                                                              20 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper                                                             21 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                                                               22 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr                                                           23 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                                                                  24 root      20   0     0    0    0 S  0.0  0.0   0:00.00 xenwatch                                                            25 root      20   0     0    0    0 S  0.0  0.0   0:01.69 xenbus                                                              26 root      20   0     0    0    0 S  0.0  0.0   0:05.78 sync_supers                                                         27 root      20   0     0    0    0 S  0.0  0.0   0:00.11 bdi-default                                                         28 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0                                                       29 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/1                                                       30 root      20   0     0    0    0 S  0.0  0.0   0:06.56 kblockd/0                                                           31 root      20   0     0    0    0 S  0.0  0.0   0:00.90 kblockd/1                                                           32 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_aux                                                             33 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_sff/0                                                           34 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_sff/1                                                           35 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksuspend_usbd                                                       36 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khubd                                                              

信息拆解

命令行:top 命令

[devuser@ping-test8264 logs]$ top

第一行:系统概览

top - 14:36:45 up 12 days,  3:16,  1 user,  load average: 0.66, 0.67, 0.63

分别对应显示:系统当前时间 up 系统到目前为止运行的时间,当前登录用户数,以及负载均衡情况:

14:36:45

当前时间

up 12 days,  3:16

系统运行时间,格式为时:分(系统当前已经运行了12天3小时16分钟)

1 user

当前登录用户数

load average: 0.66, 0.67, 0.63

系统负载情况,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟 前到现在的平均值

注意:load average 数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:任务统计

Tasks:  91 total,   1 running,  89 sleeping,   1 stopped,   0 zombie

分别对应显示:当前任务总数,前正在运行的任务数,当前正在休眠的任务数,当前已经停止的任务数,僵尸进程数

91 total

当前任务(进程)总数

1 running

当前正在运行的任务(进程)数

89 sleeping

当前正在休眠的任务(进程)数

1 stopped

当前已经停止的任务(进程)数

0 zombie

当前僵尸任务(进程)数

第三行:CPU状态

Cpu(s): 40.3%us,  0.3%sy,  0.0%ni, 59.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

分别对应显示:

40.3%us

用户空间占用CPU百分比

0.3%sy

内核空间占用CPU百分比

0.0%ni

用户进程空间内改变过优先级的进程占用CPU百分比

59.4%id

空闲CPU百分比

0.0%wa

等待输入输出的CPU时间百分比

0.0%hi Hardware IRQ 硬中断 占用CPU的百分比
0.0%si Software 软中断 占用CPU的百分比
0.0%st 被 hypervisor 偷去的时间(虚拟机占用时间比例)

第四行:内存状态

Mem:   2045940k total,  2027396k used,    18544k free,    87148k buffers

分别对应显示:物理内存总量 2G,使用中的内存总量 2G,空闲内存总量 18M,缓冲内存量 85M

2045940k total

物理内存总量

2027396k used

使用的物理内存总量

18544k free

空闲内存总量

87148k buffers

用作内核缓存的内存量

注:使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到 free 中去,因此在 linux 上 free 内存会越来越少,但不用为此担心。

第五行:交换分区状态

Swap:  1048572k total,     7472k used,  1041100k free,   110292k cached

分别对应显示:交换区总量 1G,使用的交换区总量 7M,空闲交换区总量 1G,缓冲的交换区总量 0.1G

1048572k total

交换区总量

7472k used

使用的交换区总量

1041100k free

空闲交换区总量

110292k cached

缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。

注:对于内存监控,在 top 里我们要时刻监控第五行 swap 交换分区的 used,如果这个数值在不断的变化,说明内核在不断进行内存和 swap 的数据交换,这是真正的内存不够用了。

第六行:空行

第七行:各进程的监控表头

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                         

对应表头信息如下:

PID 进程唯一ID标识
USER 启动此进程的用户
PR 进程优先级
NI 进程nice值(与PR相加为0,NI值越小进程优先级越高)
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的,未被换出的内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
%CPU 进程占用CPU资源比例
%MEM 进程占用内存大小比例
TIME+ 进程占用系统内核时间,单位1/100秒
COMMAND 进程名称(命令名/命令行)

脱坑技巧

1)在使用 top 命令过程中,有时希望界面停止滚动来捕捉一些特定的进程信息,这时可以使用 ctrl+s 冻结屏幕,在得到我们需要的信息后按 ctrl+q 解除屏幕冻结。

2)监控 Java 线程数(如果不加后面的 wc -l 来只显示当前 Java 线程个数,会很容易被刷屏):

ps -eLf | grep java | wc -l

3)命令 pmap,输出某个进程内存的状况,可以用来分析线程堆栈:

pmap PID

Linux书签(02)用linux top命令自行监测和分析服务器CPU、内存、进程等性能相关推荐

  1. Linux/Unix下的任务管理器-top命令

    Linux/Unix下的任务管理器-top命令 Posted on 2012-07-11 09:14 fengyv 阅读(15453) 评论(1) 编辑 收藏 Windows下的任务管理器虽然不好用( ...

  2. linux 下 任务管理器,Linux/Unix下的任务管理器-top命令

    Windows下的任务管理器虽然不好用(个人更喜欢Process Explorer些),但也算方便,可以方便的查看进程,CPU,内存...也可以很容易的结束进程 没有图形化界面下的Linux,也有命令 ...

  3. 14.Linux rpm,brew软件安装包命令,zsh和bash,内置命令和外部命令,ps命令,top命令解析,swp,为什么cpu利用率很低,负载却很高?

    解释一下rpm, opt,opt-get, brew,brewhome rpm,apt,apt-get,brew,和homebrew都是与软件包管理有关的术语.它们分别用于不同的操作系统. rpm是一 ...

  4. Linux(Ubuntu)之top命令

    top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具.它对于所有正在运行的进程和系统载荷提供不断更新的概览信息,包括系统负载.CPU利用分布情况.内存使 ...

  5. Linux基础(1)---top命令

    用 30 个实例完全解读 TOP 命令 原文:http://linoxide.com/linux-command/linux-top-command-examples-screenshots/ Lin ...

  6. Linux 史上最全top命令及参数详解

    总目录 **一.top简介** **二.top命令** 1.top -d:number代表秒数 默认5秒 刷新一次 2.top -b:以批次的方式执行top 3.top -b: '批量模式',用来将输 ...

  7. python glances来监控linux服务器CPU 内存 IO使用

    什么是 Glances? Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具. 通过 Glances,我们可以监视 ...

  8. linux内存跑分,RaspberryPi 4B 4G版本跑分测|CPU|内存|IO|网络|性能全面测试

    前言 拿到手最新的RaspberryPi 4B 4G版本,新版本的4修复了之前的硬件bug. 直接官方安装软件刷上了最新版本的Linux raspberrypi 4.19.97,MicroSD卡选用的 ...

  9. Linux运维02:top命令详解

    系列专题:Linux运维入门教程 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.         下面详细介绍它的使用方法.t ...

最新文章

  1. 区区几行Python代码,一分钟搞定一天工作量
  2. ItClust:利用迁移学习解决scRNA-seq中的细胞聚类问题
  3. 20 年前毁誉参半的网游《传奇》,背后是怎样的故事?
  4. 过年回家应对七大姑八大姨,程序猿绝了!
  5. 你连原理都还没弄明白?java的基本单位
  6. NoSQL生态系统——事务机制,行锁,LSM,缓存多次写操作,RWN
  7. python getopts_linux bash shell 中getopts 命令 和 python 中 getopt 函数的比较总结
  8. 剖析数据库中重要而又常被曲解的概念
  9. 如何解决Maven依赖本地仓库eclipse报错的问题
  10. 模块之re模块 —— 正则
  11. JPA EntityManagers,事务及其周围的一切
  12. Id vs Instancetype
  13. android 监听软键盘在页面的展开和隐藏
  14. python -- 计算 平方、乘方、平方根_python如何求平方
  15. 基于移动通信数据的城市可视分析研究
  16. 【HTML】HTML自定义网页头部小图标
  17. Java基础知识(十) 多线程
  18. 日本泡沫经济时期的普通百姓
  19. 使用opencv的viz模块显示3d点云
  20. 论文参考文献中括号+数字转上标

热门文章

  1. 攻防世界 Misc高手进阶区 2分题 打野
  2. 利用python获取QQ高清头像
  3. udacity AI产品经理
  4. LWN:用DAMON来优化memory-management!
  5. 科技大佬们的编程水平怎么样?有些还不如你哦...
  6. 美国次贷危机的前因后果(入门版)
  7. NW.js 打包并发布桌面应用 ---备忘心得
  8. mmall电商项目学习笔记之 idea,maven工程整合ssm框架
  9. 魔术的逻辑(二)——魔术怎样利用了常识来骗你?
  10. 学平面设计需要会什么软件?如何自学?