top

top命令是最流行的性能工具之一。大多数系统管理员运行top查看Linux和UNIX系统的运行情况。top实用工具提供一种监视进程和Linux整体性能的理想方法。将Linux进程称作任务更准确,但是在本章中我们还是将它们称作进程,因为这个工具也这样称呼它们。1普通用户和root用户都可以运行top。图3-1显示一个空闲系统的典型top输出。

图3-1  top输出

top显示有两个部分。大约前三分之一显示关于Linux的整体信息,其余行为各个进程信息。如果扩展窗口则显示更多进程而填充整个屏幕。

更全面的Linux信息可以通过使用top之外的几个命令来得到。不过,通过一个命令在一个屏幕上显示所有信息比较理想。第一行显示最近1分钟、5分钟和15分钟的负载平均值。负载平均值表示在CPU上运行或者等待运行多少进程。uptime命令也可以用来显示负载平均值。接下来是进程信息,之后是CPU、内存和交换区。内存和交换区信息与free命令输出类似。在我们确定内存和CPU使用之后的下一个问题是哪些进程正在使用它。

大部分进程信息也可以通过ps命令得到,但是top提供一种更易于阅读的格式。最有用的是用于提供帮助的h,它列出top的其他交互式命令。

3.1.1  添加和移除字段

字段可以从显示中添加或移除。进程输出可以按照CPU、内存或者其他指标排序。这是一个查看什么进程抢夺内存的理想方法。各个Linux发布版本的top语法和交互式选项不同,帮助命令可以快速列出什么命令可用。有许多交互式选项可用,用户应该花费一些时间来试验它们。

图3-2显示Red Hat Enterprise Linux ES release 3的帮助屏幕。

图3-2  top的帮助屏幕

f命令用来从top输出中添加或者移除字段。图3-3是一个Red Hat Enterprise Linux ES release 3的帮助屏幕,显示什么字段可以添加。

图3-3  top添加/移除字段的屏幕

图3-4显示一个SUSE Linux 9.0 top的帮助屏幕,可见它们提供的命令差别非常大。

图3-4  SUSE top的帮助屏幕

3.1.2  解释输出

让我们研究top信息的意义,以top的如下输出为例:

top输出的第一行显示负载平均值信息:

这个输出与uptime的输出类似。从中可看到Linux已经运行时间、当前时间和用户数量,以及1分钟、5分钟和15分钟负载平均值。接下来显示进程概要:

我们看到总共有73个进程,其中72个进程正在休眠,一个进程正在运行,没有僵化进程或者被停止的进程。当一个进程退出并且它的父进程没有通过wait(2)或者waitpid(2)函数等待它时,它就会成为僵化进程。这通常是由于父进程在它的子进程之前退出造成的。不同于进程表中的项,僵化进程不使用资源。停止的进程是已经向它发送STOP信号的进程。更多信息,请参见signal(7)手册页。

接下来是CPU信息:

CPU行描述CPU如何使用它们的CPU周期。top命令报告CPU在用户或者内核模式、运行良好进程以及处在空闲状态时所花费时间的百分比。iowait列显示没有进程在CPU上运行时,处理器等待I/O完成的时间的百分比。irq和softirq列表示处理硬件和软件中断所花费的时间。早于2.6版本的Linux内核不报告irq、softirq和iowait。

接下来是内存信息:

前三个指标提供内存使用的概要,列出了总的可用内存、已使用内存和自由内存,它们都是确定对于Linux内存是否足够所需信息。

接下来五个指标标识已使用的内存如何分配。shrd字段显示共享的内存使用,buff是缓冲使用的内存。分配给内核或者用户进程的内存可以处在三种不同状态:活动(active)、不活动脏(inactive dirty)和不活动干净(inactive clean)。活动在top中用aotv表示,表示该内存最近被使用。不活动脏在top中用in_d表示,表示该内存最近没有使用,可以回收。要回收内存,必须将它的内容写到磁盘,这个进程命名为“清洗”,也可称作内存的第四种临时状态。一旦被清洗,不活动脏内存成为不活动干净内存,在top中用in_c表示。由Norm Murray和Neil Horman合著的Understanding Virtual Memory in Red Hat Enterprise Linux 3是一本优秀的参考书,网址为http:people.redhat.com/nhorman/papers/ rhel3_vm.pdf。

接下来是交换区信息:

av字段是可用的交换区总量,之后是已用数量和自由数量,最后是内核用于缓存的内存数量。

top显示的其余部分是进程信息:

top显示尽可能多的能适合屏幕的进程。top(1)手册页中提供了字段说明的描述。表3-1提供了这些字段的概要。

表3-1                                                      top进程字段

字    段

说    明

PID

进程id编号

USER

进程所有者的用户名

PRI

进程的优先级

SIZE

进程大小,包括它的代码、栈和数据区域,以千字节为单位

RSS

进程使用的内存总量,以千字节为单位

SHARE

进程使用的共享内存数量

STAT

进程的状态,通常R表示运行,S表示休眠

%CPU

自从最近的屏幕更新以来,这个进程使用的CPU百分比

%MEM

这个进程使用的内存百分比

TIME

自从进程启动以来,这个进程使用的CPU时间量

CPU

最近执行进程的CPU

COMMAND

正在执行的命令

3.1.3  保存自定义

一个非常好的top功能是保存当前配置。可以使用交互式命令s任意更改显示,然后按w保存该视图。

top在用户的主目录中写入一个.toprc文件,用来保存配置,以便下一次这个用户启动top时使用相同的显示选项。

top也寻找默认配置文件/etc/toprc。这是一个全局配置文件,当任何用户运行实用工具时,top将读取该文件。这个文件可以使top以安全模式运行,也可以设置刷新延迟。安全模式阻止非root用户注销或者更改进程的正常值,也阻止非root用户更改top的刷新值。Red Hat Enterprise Linux ES release 3的一个/etc/toprc示例文件如下所示:

s表示安全模式,3定义三秒钟刷新间隔。其他发布版本可能有不同的/etc/toprc格式。注销进程是一个非常实用的功能。如果用户有一个失控的进程,通过top命令可以轻易找到并注销它,具体步骤为:运行top,通过u命令显示用户的所有进程,然后使用k注销它。top不只是一个优秀的性能监视工具,它也可以用来通过注销那些产生问题的进程从而改进性能。

3.1.4  批处理模式

top也可以以批处理模式运行。尝试运行以下命令:

-n 1告诉top只显示一次迭代,-b选项表示以适合写入文件的文本形式输出或者定向到另一个程序(例如less)。类似以下两行脚本的命令可以顺利完成cron工作:

可以将它添加到crontab,并每隔15分钟收集一次输出。

通过批处理可以轻松完成所有任务,无需用户的干涉。所有进程都被列出,输出并不是每5秒钟刷新一次。如果用户的主目录中存在一个.toprc配置文件,那么它用来格式化显示。以下是在一个多CPU Linux服务器上运行top批处理模式的输出。注意,其中没有显示top输出的所有258个进程。

现在读者可能明白了为什么top会如此流行。top的交互式本质和容易自定义输出的能力使它成为诊断问题的优秀工具。

linux性能分析 -- top相关推荐

  1. linux性能分析top iostat vmstat free,linux 性能篇 -- top用法(示例代码)

    #top 输出: c:  切换显示命令名称和完整命令行. 显示完整的命令. 这个功能很有用. M : 根据驻留内存大小进行排序. P:根据CPU使用百分比大小进行排序.[[email protecte ...

  2. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  3. Linux 性能分析的前 60 秒

    Linux 性能分析的前 60 秒 为了解决性能问题,你登入了一台 Linux 服务器,在最开始的一分钟内需要查看什么? 在 Netflix 我们有一个庞大的 EC2 Linux 集群,还有非常多的性 ...

  4. Linux性能分析和调整的基本原则

    Linux性能分析和调整的基本原则 优化linux系统需要考虑多方面的因素,因为各个因素之间相互关联,因此遇到性能问题以及性能的调节需要综合考虑,基本要素考虑与分析:   1,那些措施能确实×××能? ...

  5. linux性能分析资源推荐(重要)

    分享几个linux性能分析网站: http://linuxperformance.top/ https://blog.csdn.net/jus3ve/article/details/78315165 ...

  6. linux性能监控工具perf,Linux性能分析中常用的工具perf介绍

    今天小编要跟大家分享的文章是关于Linux性能分析中常用的工具perf介绍.系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶 ...

  7. 2022最火的Linux性能分析工具--perf

    ►►► 介绍 perf是Linux性能分析中,比较常用的一款工具.它基于时间采集原理,以性能事件为基础,支持针对CPU处理器相关性能指标与操作系统相关性能指标的性能分析.常被用来查找.定位源码级性能问 ...

  8. (转)超全整理!Linux性能分析工具汇总合集

    原文地址:https://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇 ...

  9. Linux性能分析工具详解

    Linux性能分析工具详解 一.tcpdump 常用用法: 这里用sudo因为当前帐号无权使用tcpdump,这里仅以一个tcp的例子来说明:sudo /usr/sbin/tcpdump tcp po ...

最新文章

  1. js各种图表组件网站
  2. Qt Creator5.12配置OpenCV4.3.0和opencv_contrib扩展包(亲测有效)
  3. renderthread是什么_Android 旗舰机标配的高帧屏(120Hz),对各位 App 开发者有什么影响?...
  4. 如何在 40 秒内创建一个.Net Core Web API?
  5. 3.1 RNN 循环神经网络 概述(上篇)
  6. 《程序员代码面试指南》题目与题解列表
  7. node2vec算法
  8. datax修复\N脏数据
  9. 我的世界服务器物品箱子,我的世界:使用箱子储存物品居多,难不成他们很“鸡肋”?...
  10. 影像信息提取之——多时相影像动态检测
  11. android 7.0 8.0 9.0 10.0修改默认输入法为谷歌输入法(RK MTK 展讯等平台都适用)
  12. cyclone小知识(四)——利用cyclone和PS制作点云剖面图(包括画直角坐标系)
  13. Arcmap做地形地貌图流程
  14. VBox虚拟机安装Ubuntu
  15. 超简单集成华为HMS Scankit 扫码SDK实现扫一扫二维码
  16. lol7月9日服务器维护,英雄联盟7月9日更新维护到几点结束_lol7月9日10.14版本更新维护结束时间介绍_咖绿茵手游站...
  17. 2019年最新面试题集绵
  18. 【第2篇】基础数据类型
  19. Mac更新系统后无法使用git
  20. 三种经典iPhone上网络抓包方法详解

热门文章

  1. python做股票系统_GitHub - w125784/stock: stock,股票系统。使用python进行开发。
  2. 哪一种Mac杀毒软件好用?这波安利绝对错不了
  3. Zimbra黑白名单的配置
  4. IC电源去耦原理及滤波元件选型
  5. Docker在线管理工具Shipyard
  6. 自作孽?统计显示360搜索7天损失368万用户
  7. MySQL讲义第 39 讲——select 查询之函数(2):日期时间型函数
  8. Win10下Keil5的C51和ARM共存的开发环境配置
  9. python爬虫豆瓣电影短评_豆瓣Python爬虫:500条电影短评
  10. Java 基础巩固:内部类的字节码学习和实战使用场景