TOP命令详解

简介:
让我们研究top信息的意义,以top的如下输出为例:
top - 15:17:24 up 32 days,    1:13,    7 users,    load average: 0.00, 0.00, 0.00
Tasks: 180 total,     1 running, 175 sleeping,     4 stopped,     0 zombie
Cpu(s):    0.1%us,    0.1%sy,    0.0%ni, 99.8%id,    0.0%wa,    0.0%hi,    0.0%si,    0.0%st
Mem:    16432184k total, 12142192k used,    4289992k free,     179888k buffers
Swap:    2096440k total,            388k used,    2096052k free,    9772516k cached

    PID USER            PR    NI    VIRT    RES    SHR S %CPU %MEM        TIME+    COMMAND                                                                                                                                                                                                                         
2472 stanley     25     0 2577m 506m    13m S    0.0    3.2     0:31.67 java                                                                                                                                                                                                                                
4730 stanley     22     0 2482m 389m    10m S    0.0    2.4     0:14.33 java                                                                                                                                                                                                                                
4166 stanley     22     0 2483m 378m    10m S    0.0    2.4     0:14.04 java                                                                                                                                                                                                                                
6012 stanley     22     0 2537m 338m    10m S    0.0    2.1     0:14.01 java                                                                                                                                                                                                                                
4609 root            15     0    210m    63m 4088 S    0.0    0.4     0:02.81 snmpd                                                                                                                                                                                                                             
3359 stanley     17     0 4418m    42m 8892 S    0.0    0.3    57:46.11 jstatd                                                                                                                                                                                                                            
6186 root            18     0    225m    22m 5988 S    0.0    0.1     3:41.76 dsm_om_connsvc3                                                               
top输出的第一行显示负载平均值信息:
top - 15:20:00 up 32 days,    1:15,    7 users,    load average: 0.00, 0.00, 0.00
这个输出与uptime的输出类似。从中可看到Linux已经运行时间、当前时间和用户数量,以及1分钟、5分钟和15分钟负载平均值。接下来显示进程概要:
Tasks: 180 total,     1 running, 175 sleeping,     4 stopped,     0 zombie
我们看到总共有180个进程,其中175个进程正在休眠,一个进程正在运行,没有僵化进程或者,4个停止的进程。当一个进程退出并且它的父进程没有通过wait(2)或者waitpid(2)函数等待它时,它就会成为僵化进程。这通常是由于父进程在它的子进程之前退出造成的。不同于进程表中的项,僵化进程不使用资源。停止的进程是已经向它发送STOP信号的进程。更多信息,请参见signal(7)手册页。
接下来是CPU信息:
Cpu(s):    0.0%us,    0.0%sy,    0.0%ni, 99.9%id,    0.0%wa,    0.0%hi,    0.0%si,    0.0%st
CPU行描述CPU如何使用它们的CPU周期。top命令报告CPU在用户或者内核模式、运行良好进程以及处在空闲状态时所花费时间的百分比。iowait列显示没有进程在CPU上运行时,处理器等待I/O完成的时间的百分比。irq和softirq列表示处理硬件和软件中断所花费的时间。早于2.6版本的Linux内核不报告irq、softirq和iowait。
接下来是内存信息:
Mem:    16432184k total, 12142484k used,    4289700k free,     180804k buffers
前三个指标提供内存使用的概要,列出了总的可用内存、已使用内存和自由内存,它们都是确定对于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。
接下来是交换区信息:
Swap:    2096440k total,            388k used,    2096052k free,    9772512k cached
 
av字段是可用的交换区总量,之后是已用数量和自由数量,最后是内核用于缓存的内存数量。
top显示的其余部分是进程信息:
PID USER            PR    NI    VIRT    RES    SHR S %CPU %MEM        TIME+    COMMAND                                                                                                                                                                                                                         
2472 stanley     25     0 2577m 506m    13m S    0.0    3.2     0:31.72 java                                                                                                                                                                                                                                
4730 stanley     22     0 2482m 389m    10m S    0.0    2.4     0:14.34 java 
 
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
正在执行的命令
 
 

交互命令指南,更多参考:http://os.51cto.com/art/201005/200652.htm, http://www.huanxiangwu.com/363/linux-top

 

1.全局命令

回车、空格 : 刷新显示信息

?、h : 帮助

= : 移除所有任务显示的限制

A : 交替显示模式切换

B : 粗体显示切换

d、s : 更改界面刷新时间间隔

G : 选择其它窗口/栏位组

I : Irix或Solaris模式切换

u、U : 监控指定用户相关进程

k : 结束进程

q : 退出top

r : 重新设定进程的nice值

W : 存储当前设定

Z : 改变颜色模板

2.摘要区命令

l : 平均负载及系统运行时间显示开关

m : 内存及交换空间使用率显示开关

t : 当前任务及CPU状态显示开关

1 : 汇总显示CPU状态或分开显示每个CPU状态    

3.任务区命令

外观样式

b : 黑体/反色显示高亮的行/列。控制x和y交互命令的顯示樣式。

x : 高亮显示排序的列

y : 高亮显示正在运行的任务

z : 彩色/黑白显示。

显示内容

c : 任务执行的命令行或进程名称

f、o : 增加和移除进程信息栏位及调整进程信息栏位显示顺序

H : 显示线程

S : 时间累计模式

u : 监控指定用户相关进程

任务显示的数量

i : 显示空闲的进程

n或# : 设置任务显示最大数量

任务排序

M : 按内存使用率排序

N : 按PID排序

P : 按CPU使用率排序

T : 按Time+排序

< : 按当前排序栏位左边相邻栏位排序

> : 按当前排序栏位右边相邻栏位排序

F 或 O : 选择排序栏位

R : 反向排序

 

问题1:ps和top命令的%CPU含义

http://blog.thematice.com/html/y2009/09/27/748/ps%E5%92%8Ctop%E5%91%BD%E4%BB%A4%E7%9A%84cpu%E5%90%AB%E4%B9%89.html

一直以为ps命令中的”%CPU”也是指实时的CPU使用率,所以一直都用它来做cacti监控process的cpu使用率。但是上周发现有点不对,ps的”%CPU”与top或者vmstat 的”%CPU”不一样。

ps命令的man里面的解释:

CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is unlikely to add up to exactly 100%.

top命令的man的解释:

k: %CPU -- CPU usage
The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU
time. In a true SMP environment, if 'Irix mode' is Off, top will operate in number of CPUs. You toggle
'Irix/Solaris' modes with the 'I' interactive command.

我的理解是,top中的进程cpu使用率,是实时的CPU使用率,也就是

单位时间内进程使用的CPU时间/单位时间
而ps命令中的cpu使用率,反映的是该进程启动以来使用系统资源的情况:

进程启动以来使用的CPU时间/进程启动以来的实际时间
两者有很大的区别。
(上述所说的ps和top命令所在的操作系统是debian)。

 

 本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/365611,如需转载请自行联系原作者

相关文章
|
应用服务中间件 nginx
Nginx安装nginx-rtmp-module模块
【2月更文挑战第4天】 nginx中的模块虽然就是类似插件的概念,但是它无法像VsCode那样轻松的安装扩展。 nginx要安装其它模块必须同时拿到nginx源代码和模块源代码,然后手动编译,将模块打到nginx中,最终生成一个名为nginx的可执行文件。
883 6
|
消息中间件 NoSQL Java
Redis监听Key的过期事件
在redis.conf配置文件中有个配置项:notify-keyspace-events " " ,默认是没有key的过期监听的,我们需要将其开启
2162 0
|
8月前
|
机器学习/深度学习 人工智能 算法
深度学习用于求解车间调度问题,性能如何呢?
基于深度学习来求解车间调度问题,不仅求解速度快,求解的质量也越来越好
314 24
|
12月前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
580 5
|
机器学习/深度学习 TensorFlow 调度
优化TensorFlow模型:超参数调整与训练技巧
【4月更文挑战第17天】本文探讨了如何优化TensorFlow模型的性能,重点介绍了超参数调整和训练技巧。超参数如学习率、批量大小和层数对模型性能至关重要。文章提到了三种超参数调整策略:网格搜索、随机搜索和贝叶斯优化。此外,还分享了训练技巧,包括学习率调度、早停、数据增强和正则化,这些都有助于防止过拟合并提高模型泛化能力。结合这些方法,可构建更高效、健壮的深度学习模型。
|
前端开发 Java 应用服务中间件
IDEA中如何将一个JavaWeb项目打包成war包
1.Java的打包方式jar、war、ear包的作用、区别: jar:通常是开发时要引用通用(JAVA)类,打成包便于存放管理; war:是做好一个(web)应用后,通常是网站,打成包部署到容器中; ear: 企业级应用,实际上EAR包中包含WAR包和几个企业级项目的配置文件而已,一般服务器选择WebSphere等,都会使用EAR包。通常是EJB打成ear包。
949 0
IDEA中如何将一个JavaWeb项目打包成war包
|
开发框架 前端开发 .NET
分享63个投票调查PHP源码,总有一款适合你
分享63个投票调查PHP源码,总有一款适合你
375 3
|
Windows
origin
origin使用
880 2
|
存储 数据挖掘 Linux
服务器数据恢复—CentOS7操作系统服务器数据恢复案例
服务器数据恢复环境: 某品牌PowerEdge R730服务器+PowerVault MD3200存储,划分若干lun,操作系统版本是centos7,EXT4文件系统。 服务器故障&分析: 服务器在运行过程中自动关机且无法启动,服务器管理员对服务器进行修复后成功启动服务器,但服务器上原来的某个分区无法挂载。管理员将无法挂载的分区进行fsck修复&挂载,查看这个分区的数据发现部分文件丢失。
|
存储 JavaScript 测试技术
LangChain 开发LLM的框架
LangChain 开发LLM的框架