Linux工具 top命令/htop命令 性能分析工具

1 top命令 显示内容信息解读

top命令 不加参数 直接运行起来后,效果如下所示:

top - 19:57:08 up 5 days, 43 min,  2 users,  load average: 0.78, 0.64, 0.48
任务: 311 total,   1 running, 310 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.6 us,  1.5 sy,  0.0 ni, 95.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  31989.1 total,    766.9 free,   8866.6 used,  22355.7 buff/cache
MiB Swap:   2048.0 total,   1754.0 free,    294.0 used.  21853.9 avail Mem 

 进程号 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND                                                                                                                             
   6662 wangdao+  20   0 4749216 309056 112932 S   6.0   0.9  23:57.96 gnome-shell                                                                                                                         
 184637 wangdao+  20   0 2933448 286212 132560 S   5.3   0.9  12:23.41 Isolated Web Co                                                                                                                     
   7087 wangdao+  20   0 1009132  89104  60472 S   4.6   0.3 279:56.05 teams                                                                                                                               
   6522 wangdao+  20   0  548988  93944  43048 S   4.3   0.3  45:11.66 Xorg                                                                                                                                
   6461 wangdao+   9 -11 4035812  19616  14896 S   4.0   0.1  36:41.56 pulseaudio                                                                                                                          
   7170 wangdao+  20   0   13.6g 371032  65068 S   3.3   1.1 254:56.73 teams                                                                                                                               
 184404 wangdao+  20   0 6141184 873280 429656 S   3.3   2.7  35:40.81 firefox                                                                                                                             
   7259 wangdao+  20   0 5633868 220744  67344 S   2.3   0.7 123:48.56 teams                                                                                                                               
 180769 wangdao+  20   0 1066012  77552  50184 S   1.3   0.2   1:02.89 gnome-terminal-                                                                                                                     
 181035 wangdao+  20   0   20.5g 160116 108520 S   0.7   0.5   3:13.07 code                                                                                                                                
 201723 wangdao+  20   0   15248   4088   3144 R   0.7   0.0   0:00.08 top                                                                                                                                 
     45 root      20   0       0      0      0 S   0.3   0.0   3:29.69 ksoftirqd/5                                                                                                                         
    910 root      20   0 1799724  21112   3672 S   0.3   0.1   5:19.43 containerd                                                                                                                          
   6875 wangdao+  20   0 7757664 188192  76444 S   0.3   0.6   9:28.62 teams                                                                                                                               
 181100 wangdao+  20   0   38.4g 420048 115620 S   0.3   1.3  13:45.32 code                                                                                                                                
 181125 wangdao+  20   0   20.3g 170548  58852 S   0.3   0.5   0:40.41 code                                                                                                                                
 184633 wangdao+  20   0 2644516 174204 108536 S   0.3   0.5   0:53.07 Isolated Web Co                                                                                                                     
 192986 wangdao+  20   0   32.6g 249212 168968 S   0.3   0.8   0:48.38 chrome                                                                                                                              
 193029 wangdao+  20   0   32.6g 161020  98400 S   0.3   0.5   0:45.98 chrome                                                                                                                              
 199770 wangdao+  20   0 1124.6g 175952 110160 S   0.3   0.5   0:22.13 chrome                                                                                                                              
 201531 wangdao+  20   0 5245032 126420  98452 S   0.3   0.4   0:00.22 cpptools-srv                                                                                                                        
      1 root      20   0  168984  12864   8144 S   0.0   0.0   0:15.48 systemd                                                                                                                             
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.12 kthreadd                                                                                                                            
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                                                              
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                                                                                          
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns                                                                                                                               
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri                                                                                                         
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                                                                                                                        

1.1 系统整体统计信息

接下来我们详细分析系统统计信息:

top - 19:57:08 up 5 days, 43 min,  2 users,  load average: 0.78, 0.64, 0.48
任务: 311 total,   1 running, 310 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.6 us,  1.5 sy,  0.0 ni, 95.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  31989.1 total,    766.9 free,   8866.6 used,  22355.7 buff/cache
MiB Swap:   2048.0 total,   1754.0 free,    294.0 used.  21853.9 avail Mem 

@1 总体统计信息

我们以第1行总信息为例:

top - 19:57:08 up 5 days, 43 min,  2 users,  load average: 0.78, 0.64, 0.48

load average: 0.00, 0.01, 0.01 表示系统负载,而有3个值是因为分别表示 CPU 1分钟,5分钟,15分钟平均负载。

第2行信息 如下:

任务: 311 total,   1 running, 310 sleeping,   0 stopped,   0 zombie

表示 系统现在共有311个进程,其中处于运行中的有1个,310个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

@2 CPU信息详细解读

我们以第3行CPU信息为例:

%Cpu(s):  2.6 us,  1.5 sy,  0.0 ni, 95.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

这里详细解读下 us sy ni 。。。等等这些含义解读如下:

  • us:用户态进程占用cpu时间%
  • sy:内核态进程占用cpu时间%
  • ni:代表优先被调度的进程占cpu时间%
  • id:cpu idle(空闲)状态%
  • wa:cpu wait(等待io)状态%
  • hi:hardware interrupt 硬中断,处理硬件中断占CPU的时间
  • si:software interrupt 软中断,处理软件中断占CPU的时间
  • st:浪费掉的cpu,被强制等待虚拟CPU的时间

@3 MEM & swap 信息详细解读

第4、5行信息相对解读容易

MiB Mem :  31989.1 total,    766.9 free,   8866.6 used,  22355.7 buff/cache
MiB Swap:   2048.0 total,   1754.0 free,    294.0 used.  21853.9 avail Mem 
  • 第4行的 total表示所有物理内存,free表示空闲物理内存总量,used表示使用总量,buff/cache表示缓存的内存量。
  • 第5行的 total表示交换区总量物理内存总量,free表示空闲交换区物理内存总量,used表示交换区使用总量,bavail Mem 表示 虚拟内存总量。

1.2 top显示信息字段

我们首先对top命令中统计信息之后的行 ,他们的字段进行下解读:

  • USER:表示进程所有者的用户名
  • PR:表示优先级。
  • NI:nice值,表优先级。注意:负值表高优先级,正值表低优先级,数值越小优先级越高。
  • VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  • RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHR:共享内存大小,单位kb
  • %CPU:CPU资源占用百分比
  • %MEM:进程使用的物理内存百分比
  • TIME+:进程使用的CPU时间总计,单位为0.01秒
  • COMMAND:命令名/命令行

1.3 基本显示信息可编辑

这里不止可以显示如上信息,还可以通过 “f” 操作,进入另一个视图,对显示字段进行编辑,点击“f”后编辑视图如下所示:

Fields Management for window 1:Def, whose current sort field is TTY
   Navigate with Up/Dn, Right selects for move then  or Left commits,
   'd' or  toggles display, 's' sets sort.  Use 'q' or  to end!

* USER    = Effective User Name    nsNET   = NET namespace Inode 
* PR      = 优先级                 nsPID   = PID namespace Inode 
* NI      = Nice Value             nsUSER  = USER namespace Inode
* VIRT    = Virtual Image (KiB)    nsUTS   = UTS namespace Inode 
* RES     = Resident Size (KiB)    LXC     = LXC container name  
* SHR     = Shared Memory (KiB)    RSan    = RES Anonymous (KiB) 
* 日      = 进程状态               RSfd    = RES File-based (KiB)
* %CPU    = CPU 使用情况           RSlk    = RES Locked (KiB)    
* %MEM    = Memory Usage (RES)     RSsh    = RES Shared (KiB)    
* TIME+   = CPU Time, hundredths   CGNAME  = Control Group name  
* COMMAND = Command Name/Line      NU      = Last Used NUMA node 
  PPID    = Parent Process pid  
  UID     = Effective User Id   
  RUID    = Real User Id        
  RUSER   = 真实用户名          
  SUID    = Saved User Id       
  SUSER   = Saved User Name     
  GID     = Group Id            
  GROUP   = Group Name          
  PGRP    = Process Group Id    
* TTY     = Controlling Tty     
  TPGID   = Tty Process Grp Id  
  SID     = Session Id          
  nTH     = Number of Threads   
  P       = Last Used Cpu (SMP) 
  时间    = CPU Time            
  SWAP    = Swapped Size (KiB)  
  CODE    = Code Size (KiB)     
  DATA    = Data+Stack (KiB)    
  nMaj    = Major Page Faults   
  nMin    = Minor Page Faults   
  nDRT    = Dirty Pages Count   
  WCHAN   = Sleeping in Function
  标志    = Task Flags 
  CGROUPS = Control Groups      
  SUPGIDS = Supp Groups IDs     
  SUPGRPS = Supp Groups Names   
  TGID    = Thread Group Id     
  OOMa    = OOMEM Adjustment    
  OOMs    = OOMEM Score current 
  ENVIRON = Environment vars    
  vMj     = Major Faults delta  
  vMn     = Minor Faults delta  
  USED    = Res+Swap Size (KiB) 
  nsIPC   = IPC namespace Inode 
  nsMNT   = MNT namespace Inode 
* 进程号  = 进程编号            

在这里可以通过“空格”按键 来选择或者删除对应显示的字段,比较方便。同时对这里其余的一些常用字段进行解读,如下所示:

@1 进程id相关:

  • PID:表示进程id
  • PPID:表示父进程id
  • UID:表示进程所有者的用户id
  • GROUP:表示进程所有者的组名

@2 CPU相关:

  • TIME:进程使用的CPU时间总计,单位为秒
  • P: 最后使用的CPU,多CPU环境下有意义,单CPU无意义。
  • nTH:线程数量

@3 内存相关:

  • SWAP:进程使用的虚拟内存中,被换出的大小,单位kb。
  • CODE:可执行代码占用的物理内存大小,单位kb
  • DATA:可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
  • nFLT:页面错误次数
  • nMaj :已请求的内存页还没有被加载,这是主要的应用申请内存产生的请求
  • nMin :内存页已加载但是没有被MMU管理
  • nDRT:最后一次写入到现在,被修改过的页面数。

@4 进程线程相关:

  • TTY:表示启动进程的终端名。而不是从终端启动的进程则显示为 ?
  • nT:线程数量
  • S:进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
  • WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名
  • Flags:任务标志,sched.h定义

1.4 实时控制top命令显示内容

此时可以通过 top 的内部命令对进程的显示方式进行控制,实时显示。内部命令和其功能如下:

#1 变更显示内容:
s # 改变画面更新频率
l # 关闭或开启 上数 第1行 top 信息的表示
t # 关闭或开启 上数 第2行 Tasks 和第3行 Cpus 信息的表示
m # 关闭或开启 上数 第4行 Mem 和 第5行 Swap 信息的表示
f # 进入另一个视图,进入后可以编辑基本视图中的显示字段,可以查看更多信息

#2 排列显示信息
N # 以 PID 大小 顺序排列表示进程列表
P # 以 CPU 占用率大小 顺序排列进程列表
M # 以内存占用率大小 顺序排列进程列表

#3 
h # 显示帮助信息(如何在top命令显示的界面中进行的按键操作)
n # 设置 进程列表所显示的进程数量
q # 退出命令

2 Top命令操作

top命令的常见操作整理如下:

#设置更新次数,更新三次后终止更新显示
$top -n 3
#批次档模式,配合"-n"参数,可以用来将 top 的结果输出到文件
$top -b -n 2 > top.txt

#设置更新周期 3秒一次
$top -d 3

#只跟踪指定进程pid=1152
$top -p 1152
#跟踪进程1152 和该进程的线程
$top -p -H 1152

#默认为显示部COMMAND缩写信息,-c表示显示完整信息,不再缩写
$top -c

#查看指定的root用户组相关进程的信息
$top -u root

3 htop命令

top命令虽然功能强大,但与Linux传统的 top命令相比,htop 更人性化,支持带有颜色的显示形式,相比top命令可以支持鼠标操作。从功能上讲 top命令 和 htop命令 基本是一致的,无非是后者交互上更方便,htop运行起来是这样的:

可以看到 信息分布上相对于top命令有调整,系统统计信息内容相差不大,都是基本信息,CPU使用情况、MEM、swap使用情况,但信息统计学分布位置和显示效果发生了变化,如下所示:

关于进程信息的展示,一般用鼠标和 F1-F10来进行操作:

这里解读下不同于top的操作方式,htop是通过F1-F10来进行对应操作,非常方便:

  • F1:help
  • F2:设置颜色方案、列等展示信息
  • F3:搜索command列中的信息
  • F4:过滤command列中匹配的进程
  • F5:按照进程树样式展示
  • F6:根据选择的列排序,这个用鼠标操作更方便
  • F7:减小进程优先级
  • F8:增加进程优先级
  • F9:杀死进程,先选中进程,然后选择需要发送的信号
  • F10:exit

总结下,htop无非是top命令的界面版,操作方式上会有不同,但本质上的功能几乎一致。

你可能感兴趣的:(Linux,系统,linux,运维,服务器)