Linux top 命令解析及使用

目录

  • 前言
  • 1. top 监测结果分析
    • 1.1 第一部分:系统整体性能分析
      • 1.1.1 第一行(top...):系统状态
      • 1.1.2 第二行(Tasks...):进程状态信息
      • 1.1.3 第三行(Cpus...):CPU 的整体负载
      • 1.1.4 第四行(KiB Mem...):Mem内存信息(物理内存)
      • 1.1.5 第五行(KiB Swap...):Swap交换内存(虚拟内存)
      • 1.1.6 小结
    • 1.2 第二部分:进程信息
  • 2. top 命令行选项
  • 3. top 交互命令


前言

在 Linux 中常用 top 动态监测程序运作的状态,以分析系统的整体性能。比如,监测 CPU 使用率、内存使用、系统负载以及每个进程资源占比等情况。


1. top 监测结果分析

先看下 top 整体输出结果:
top整体图
从上图我们可以很清楚的看到,top 输出结果以光标所在处分为了上下 2 部分:

1)上半部分5行是整个系统的资源使用状态;
2)下半部分是系统中每个进程资源占用的具体信息;
3)光标所在处是用来输入操作命令的。

1.1 第一部分:系统整体性能分析

1.1.1 第一行(top…):系统状态

top - 16:41:10 up 16:54,  2 users,  load average: 0.00, 0.00, 0.00
top - 16:41:10系统当前时间
up 16:54系统开机到目前为止所经过的时间:16天54分
2 users当前已经登入系统的用户人数
load average: 0.00, 0.00, 0.00系统在 1, 5, 15 分钟的平均工作负载 (平均在 CPU 上运行或者等待运行的进程数量),越小代表系统越闲置。一般只要每个 CPU 的当前活动进程数不大于 3 表示系统的性能是良好的,如果大于 5 就表示系统性能有严重问题了。计算公式:每个 CPU 的当前任务数 = load average / CPU总数

1.1.2 第二行(Tasks…):进程状态信息

Tasks: 305 total,   1 running, 223 sleeping,   0 stopped,   0 zombie
305 total所有启动的进程数
1 running正在运行的进程数
223 sleeping挂起的进程数
0 stopped停止的进程数
0 zombie僵尸进程数

注意:如果 zombie 的值不是 0,就要好好看看到底是哪个进程变成僵尸了!!!

1.1.3 第三行(Cpus…):CPU 的整体负载

%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.4 id,  0.1 wa,  0.0 hi,  0.2 si,  0.0 st
0.2 us用户空间占用的 CPU 百分比
0.1 sy内核空间占用的 CPU 百分比
0.0 ni用户进程空间内改变过优先级的进程占用 CPU 百分比
99.4 id空闲 CPU 百分比
0.1 wa等待输入输入的 CPU 百分比(一般 CPU 处理速度很快,而磁盘 IO 操作很慢。wa 表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈
0.0 hi硬中断占用的 CPU 百分比(硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息)
0.2 si软中断 CPU 百分比(软中断是由程序发出的中断)
0.0 st虚拟 CPU 等待实际 CPU 的时间的百分比

【提示】一般我们关注比较多的是:us、sy、id、wa、hi、si 这6个数值。如果是多核心的设备,可以【按下数字键 1】来查看不同 CPU 的负载率:
CPUs

1)%id 表示 CPU 空闲率,当 id 持续过低的时候,表示系统迫切需要解决 CPU 资源问题了;
2)CPU 使用率等于:1 - %id ,或者:us + sy + si;
3)wa:使用率过高的时候,我们需要考虑 IO 的性能是否有瓶颈,可以在使用 iostat、sar 等命令做进一步分析;
4)hi: 使用率过高时,表示当前硬件中断占用很大的百分比。一般硬件中断我们可以分析文件/proc/interrupts、/proc/irq/pid/smp_affinity、irqbalance 服务是否配置,以及 CPU 的频率设置,通过这些可以帮系统打散优化系统的硬件中断;
5)si:Linux kernel 通过用一种软件的方法(可延迟函数)来模拟硬件的中断模式,通常叫做软中断。常见的软件中断一般都是和网络有关。从网卡到 IP 层的数据报文收发都是 si 处理的,长时间写日志也可能产生软件中断;
6)当软中断出现瓶颈的时候,系统有个进行叫 ksoftirqd,每个 CPU 都有自己对应的 ksoftirqd/n(n 为 CPU 的逻辑 ID),每个 ksoftirqd 的内核线程都会去运行对应的 ksoftirqd(函数)来处理自己的中断队列上的软件中断。所以,当网络出现阻塞的时候,软件中断程序 ksoftirqd肯定会出现瓶颈。此时我们可以通过 ps aux|grep ksoftirqd 查看 ksoftirqd 的瓶颈;
7) Ni:优先级(priority)为操作系统用来决定 CPU 分类的参数,Linux使用(round-robin)的算法来做 CPU 排程,优先序越高,有可能获得的 CPU 时间就越多。但是我们可以通过 nice 命令以更改过的优先序来执行程序,如果未制定程序,则会打印出目前的排程优先序,内定的adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。

1.1.4 第四行(KiB Mem…):Mem内存信息(物理内存)

KiB Mem :  3994728 total,  1374080 free,   611452 used,  2009196 buff/cache
3994728 total物理内存总量
1374080 free空闲物理内存
611452 used已经使用的物理内存
2009196 buff/cache内核缓存内存量

1.1.5 第五行(KiB Swap…):Swap交换内存(虚拟内存)

KiB Swap:  2097148 total,  2097148 free,        0 used.  3103764 avail Mem
2097148 total交换区总量
2097148 free空闲交换区总量
0 used已使用的交换区总量
3103764 avail Mem可用于启动一个新应用的内存(物理内存),和 free 不同,它计算的是可回收的 page cache 和 memory slab

1.1.6 小结

  • 第四行和第五行输出的信息,等同于使用 free -m 命令;
  • 在第四行中,已使用的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到 free 中去,因此在 linux 上 free 内存会越来越少,但不用为此担心;
  • 剩余可用内存总量 = 第四行的free + 第四行的buff/cache,按这个公式此服务器的可用内存:1374080k + 2009196k = 3.3GB左右;
  • 对于内存监控,在 top 里我们要时刻监控第五行 swap 交换分区的 used,如果这个数值在不断的变化,说明内核在不断进行内存和 swap 的数据交换,这是真正的内存不够用了。

1.2 第二部分:进程信息

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
PID进程ID
USER进程所有者
PR进程的优先级,越小优先级越高
NInice 值,负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb,VIRT = SWAP + RES
RES进程使用的、未被换出的物理内存大小,单位kb,RES = CODE + DATA
SHR进程使用的共享内存大小,单位 kb
S进程状态(D=不可中断的睡眠状态(通常出现在IO阻塞) R=正在运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 N=进程优先值为负数 I=空闲状态)
%CPU进程占用的 CPU 使用率
%MEM进程使用的物理内存百分比
TIME+进程使用的 CPU 时间总计,单位 1/100 秒
COMMAND进程名称(命令名/命令行)

上述列的是 top 命令的默认显示,还有一些参数选项可以使用 top 的交互命令选择显示,按 f 键,进入列配置页面选择需要展示的参数内容。

2. top 命令行选项

  • 命令格式:top [参数]
参数功能描述
-b批处理,一般配合 -n 指定输出几次统计信息,将输出重定向到指定文件,比如:top -b -n 5 > top.txt
-c显示进程的完整命令,默认是进程名
-i不显示任何闲置 (idle) 或无用 (zombie) 的进程
-s保密模式
-S累积模式
-d <秒数>设置刷新时间,默认是5s
-n <次数>指定刷新次数,比如 top -n 5,刷新输出5次后退出
-o <-PID/PID>指定要排序的字段,比如 top -o -PID:按照 PID 从小到大排序, top -o PID:按照 PID 从大到小排序
-p <进程号>指定显示某个进程的信息
-u <用户名>查找特定用户启动的进程

3. top 交互命令

  • 在 top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了 s 选项, 其中一些命令可能会被屏蔽。
按键功能描述
1多核心的设备,可以查看不同 CPU 的负载率
k终止一个进程
i忽略闲置和僵死进程,这是一个开关式命令
q退出程序
r重新安排一个进程的优先级别
S切换到累计模式
s改变两次刷新之间的延迟时间(单位为 s),如果有小数,就换算成 ms。输入 0 值则系统将不断刷新,默认值是 5s
f可以选择是否需要展示的项目
o改变显示项目的顺序
c显示产生进程的完整命令,等同于 -c 参数,再次按下 c 键,变为默认显示
m切换显示内存信息
t切换显示进程和 CPU 状态信息
h显示帮助画面
H查看线程信息
l切换显示平均负载和启动时间信息
M根据驻留内存大小进行排序
P根据 CPU 使用百分比大小进行排序
T根据时间/累计时间进行排序
W将当前设置写入 ~/.toprc 文件中

温馨提示:这里只列举一些常用的命令,大家如果对 top 更多细节的处理感兴趣,请查阅:man top

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/5837.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Liunx——权限

目录 shell命令以及运行原理 Linux权限的概念 Linux权限管理 01.文件访问者的分类&#xff08;人&#xff09; 02.文件类型和访问权限&#xff08;事物属性&#xff09; a) 文件类型 b)基本权限 03.文件权限值的表示方法 a)字符表示方法 b)8进制数值表示方法 04.文件…

蚂蚁面试题详细总结集锦

jdk1.7到jdk1.8 Map发生了什么变化(底层)? 1.8之后hashMap的数据结构发生了变化&#xff0c;从之前的单纯的数组链表结构变成数组链表红黑树。也就是说在JVM存 jdk1.7到jdk1.8 Map发生了什么变化(底层)? 1.8之后hashMap的数据结构发生了变化&#xff0c;从之前的单纯的数组链…

Redis分布式锁、Redisson原理

文章目录简单的分布式锁实现流程Lua脚本介绍Redisson实现分布式锁原理基本使用原理首先是lock加锁逻辑锁续命逻辑自旋重试逻辑释放锁唤醒其他阻塞线程逻辑RedLock红锁介绍与基本使用问题分布式锁性能提升简单的分布式锁实现流程 最初的版本&#xff0c;使用setnx命令加锁&…

python+appium+pytest自动化测试-参数化设置

来自APP Android端自动化测试初学者的笔记&#xff0c;写的不对的地方大家多多指教哦。&#xff08;所有内容均以微博V10.11.2版本作为例子&#xff09;在自动化测试用例执行过程中&#xff0c;经常出现执行相同的用例&#xff0c;但传入不同的参数&#xff0c;导致我们需要重复…

腾讯后端开发实习一面(24届)

毫无准备的腾讯一面&#xff0c;最近都在忙比赛去了&#xff0c;突然收到腾讯一面的邮件&#xff0c;直接没准备。。。 总结&#xff0c;除了Vue其他的都挺好&#xff0c;但是腾讯hr为啥Vue面我四个问题&#xff0c;不是面的后端开发吗&#xff0c;好难呀&#xff0c;都只能随…

java基础知识——12.小练习

这篇文章就是主要做一些算法小练习用的 1.求机票价格 题目如下&#xff1a; 需求&#xff1a;机票价格按照淡旺季&#xff0c;头等舱经济舱来收费。输入机票原价&#xff0c;淡旺季&#xff0c;头等舱或经济舱来获取机票价格 规则如下&#xff1a;旺季&#xff08;5-10&…

【 Bean 作⽤域和⽣命周期 】

文章目录引用一、认识 Bean的作用域二、作⽤域定义三、Bean 的 6 种作⽤域四、Bean 原理分析4.1 Bean 执行流程4.2 Bean ⽣命周期引用 从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean&#xff0c;因此在 Spring 中 Bean 是最核⼼的操作资源&#xff0c;所以接下来我们…

你真的会写 git commit message 吗?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~

目录 一、介绍 二、使用方法 三、其他实例 1.正则表达式 2.自动化测试脚本 3.聊聊技术 一、介绍 Cursor主要功能是根据用户的描述写代码或者进行对话&#xff0c;对话的范围仅限技术方面。优点是不用翻墙、不需要账号。Cursor基于GPT模型&#xff0c;具体什么版本不祥&#…

Powershell脚本自动化登录网站的简单实例,命令行方式实现Http(s)的GET、POST请求

自动化登录网站的流程比较简单&#xff0c;如果不懂 Python、JavaScript、C 等编程语言&#xff0c;又没有安装这些编程语言环境软件&#xff0c;我们还要新的点子&#xff1a;用Windows系统自带的 Powershell 运行自编的脚本来实现。 PowerShell 是一种功能强大的自动化工具&…

大型软件外包项目的开发流程

与中小型软件项目相比&#xff0c;大型软件项目的管理和开发难度更大&#xff0c;需要在开发过程中严格执行软件的项目管理流程&#xff0c;不能有比较明显的问题&#xff0c;有问题也要及时解决。软件项目的开发过程环环相扣&#xff0c;如果在前流程中有明显问题&#xff0c;…

【fluent UDF】保留UDM变量Reserving UDM Variables Using Reserve_User_Memory_Vars-测试分析篇

一、问题背景 因为对Reserve_User_Memory_Vars这个函数比较陌生&#xff0c;在学习官方文档过程中发现难以理解&#xff0c;于是只好亲手在fluent 2022上测试一番。 直接上结论&#xff1a; 此保留函数运行一次后&#xff08;设置GUI界面中的UDM数目第一次加载共享库成功&…

【从零开始学习 UVM】3.8、UVM TestBench架构 —— UVM Agent [uvm_agent]

文章目录 什么是 UVM Agent?所有的Agent Type是什么?如何确定UVM Agent是主动还是被动的?创建UVM代理的步骤一个UVM代理做什么?如何将UVM代理配置为主动或被动?一个UVM Agent例子推荐做法什么是 UVM Agent? 一个 Agent 将Sequencer、Driver和Monitor封装成一个单一实体,…

图像分类的划分数据,dataset和dataloader的实现

目录 1. 介绍 2. 主函数代码 2. utils 模块代码 2.1 划分数据集 2.2 可视化数据集 3. dataset 数据处理 4. collate_fn 5. other 1. 介绍 图像分类一般来说不需要自定义的dataSet&#xff0c;因为pytorch自定义好的ImageFolder可以解决大部分的需求&#xff0c;更多的…

springBoot --- mybatisPlus自动生成代码

mybatisPlus自动生成代码mybatisPlus自动生成代码pom.xmlapplication.yml自动生成代码测试主启动类生成目录结果使用插件 --- 版本要求&#xff1a;3.4.0 版本以上pom.xml更新mybatisplus插件版本mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.…

Linux系统中使任务后台挂起不停止的命令

在使用远程SSH连接工具时&#xff0c;退出工具时任务也停止&#xff0c;相当于远程连接工具在系统开启了一个Terminal终端&#xff0c;服务也会随着终端的中断而停止。Linux系统也提供了服务基于后台运行的命令&#xff0c;是独立于终端的进程。 nohup Linux nohup Linux no…

【Python】仅7行代码实现自动化天气报时

文章目录前言一、实现步骤二、请求天气接口1.引入库2.读入数据3.钉钉通知天气预报总结前言 早上出门上班前&#xff0c;我总是忘记查看天气预报&#xff0c;以至于通勤路上下雨来了个措手不及。 回想起来&#xff0c;大部分人早上出门前的行为模式是固定的&#xff0c;那么有…

一个基于stream的EPICS IOC应用程序

本文将介绍如何开发一个基于stream的EPICS IOC应用程序&#xff0c;其将作为一个简单的基于消息的设备&#xff08;用于EPICS stream练习的设备模拟程序_yuyuyuliang00的博客-CSDN博客中最后一个python程序模拟的设备)的IOC控制程序。 1&#xff09; 按如下步骤建立这个IOC程序…

vb+access大气污染模型系统

数据模型就是按专业的要求&#xff0c;用数字方式描述自然界的事物或现象以及他们的关系。 我们通过对地区的具体数值和情况的观察&#xff0c;对大气质量状况做出分析&#xff0c;建立一个符合当地情况的大气污染模型&#xff0c;用来测量大气污染浓度&#xff0c;并根据污染…

在公司兢兢业业5年,被新来的自动化测试倒挂了薪资…

去年年中朋友左思右想从工作了 5 年的企业离职&#xff0c;离职原因很简单&#xff0c;待疲了&#xff0c;薪资也没咋涨过&#xff0c;新来的自动化测试钱比 Ta 高一倍。但离职 Ta 还是很忐忑的&#xff0c;在这个公司待得久了&#xff0c;自己会的东西一直是那些&#xff0c;业…