Linux常用命令:top

常用

  • top 进程模式
  • top –H 线程模式

输出

第一行

** top - 23:57:58 up 9 days, 2:12, 4 users, load average: 0.38, 0.47, 0.43 **

  • 第一行描述的是系统负载的整体情况
    • load average(系统负载),用Linux内核的任务队列的平均长度表示。0.38, 0.47, 0.43这三个数值分别是系统1分钟前,5分钟前、15分钟前到现在的平均值。当load average的数值/CPU逻辑核心数==1.0时,表示系统满载运行。超过1.0时,表示系统已经超载运行,不堪重负。
    • 下面一段话引用自man page:

System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk.

第二行

** Tasks: 205 total, 2 running, 203 sleeping, 0 stopped, 0 zombie **

  • 第二行描述了系统进程/线程的基本情况。当使用top是,task表示进程;当使用top –H时,task表示线程。
  • running – 状态为TASK_RUNNING的task数量。
  • sleeping – 状态为TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE的task数量。
  • stopped – 状态为__TASK_STOPPED的task数量,正常的系统这种进程状态应该很少。在收到一些“致命”的signal时,task会进入这种状态。
  • zombie – 状态为EXIT_ZOMBIE的task。在Linux中,一个task退出后,会进入EXIST_ZOMBIE,需要由父task调用wait系列的函数对其进行回收。如果系统出现大量zombie的task,则很有可能是父task没有对子task调用wait进行回收或者产生太多task,父task还来不及回收。(如果父task在子task之前退出了,则由init task回收zombie task)。

第三行

** %Cpu(s): 4.3 us, 1.2 sy, 0.0 ni, 94.4 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st **

  • %Cpu(s)描述了多核CPU使用情况。在top命令的交互界面输入左上角的1可以看到不同CPU核的使用情况。
  • us, user: time running un-niced user processes
  • sy, system: time running kernel processes
  • ni, nice: time running niced user processes
  • id, idle: time spent in the kernel idel handler
  • wa, IO-wait: time waiting for I/O completion
  • hi: time spent servicing hardware interrupts
  • si: time spent servicing software interrupts
  • st: time stolen from this vm by the hypervisor

第四行

** KiB Mem: 3856200 total, 3201784 used, 654416 free, 221532 buffers **

  • 第四行Mem是从OS的角度描述物理内存的使用情况。具体见Linux命令:free

第五行

** KiB Swap: 3999740 total, 485604 used, 3514136 free. 1374532 cached Mem **

  • 第五行Swap显示了虚拟内存的使用情况。
  • Cached Mem – 缓冲的交换区总量。内存中的内容被交换到Swap,而后又被换入到内存。内存中和Swap中的内容都未被修改,则相应的内存再次被换出时可不必再对Swap写入。

第六行

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

  • 这一行是下面描述各个进程/线程的情况的标题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程心路

SSH框架之旅-hibernate(2)

下面展示了两种方式来删除一条记录,但建议使用第一种,先查询后删除的方式,应该避免第二种直接设置主键对应属性值的方式。

1203
来自专栏coolblog.xyz技术专栏

MyBatis 源码分析 - 插件机制

一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展...

1093
来自专栏向治洪

JSBridge深度剖析

概述 做过混合开发的人都知道Ionic和PhoneGap之类的框架,这些框架在web基础上包装一层Native,然后通过Bridge技术的js调用本地的库。 在...

2725
来自专栏祝威廉

Kafka Zero-Copy 使用分析

Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个

1542
来自专栏Java帮帮-微信公众号-技术文章全总结

Web-第三十天 Activiti工作流【悟空教程】

工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的...

6813
来自专栏Danny的专栏

机房收费系统(VB.NET)——存储过程实战

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

1415
来自专栏Java 源码分析

MyBatis笔记一:GettingStart

![image](https://user-images.githubusercontent.com/22151420/40716284-07d07a7e-64...

1437
来自专栏分布式系统进阶

Influxdb 数据写入流程

因此对写入请求的处理就在函数 func (h *Handler) serveWrite(w http.ResponseWriter, r *http.Reque...

1663
来自专栏java学习

Mybatis学习笔记1

本章目录 Mybatis学习笔记1 1、mybatis的介绍 2、使用jdbc操作数据库存在的问题 3、 Mybatis的架构 4、Mybatis的入门程序 ...

3966
来自专栏代码世界

AJAX

先了解JSON 什么是JSON? JSON 指的是JavaScript对象表示法(JavaScript Object Notation) JSON 是轻量级的文...

3957

扫码关注云+社区