Linux_top命令

        top命令是Linux系统下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。它是一个动态显示过程,执行该命令后,它展示的信息会将独占前台,直到用户终止该程序为止(可以用Ctrl + C终止)。

top命令结果详解

当我们输入top命令后,屏幕就会出现以下数据

 第一行显示的是服务器整体信息


top - 15:47:34 up 64 days,  1:26,  5 users,  load average: 29.83, 28.93, 24.51

含义分别为: 

  • 15:47:34 — 系统当前时间
  • up 64 days,  1:26, — 系统已经运行了64天1小时26分钟
  • 5 users, — 当前有5个用户正在登录
  • load average: 29.83, 28.93, 24.51 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

load average<0.7 * processor(CPU线程数) 表示当前系统运行良好;
1 * processor<load average<3 * processor,需要参考内存、CPU、网络和IO等指标;
load average>5 * processor 表示负载过大;
实时负载通过r+d来计算

第二行显示的是任务进程信息

Tasks: 1287 total,   1 running, 1282 sleeping,   0 stopped,   4 zombie

含义为:系统现在共有1278个进程,其中处于运行中(running)的有1个,1282个在休眠(sleep),停止状态(stope的)的有0个,zombie状态(僵尸)的有4个。

第三行显示的是CPU状态信息

%Cpu(s):  1.7 us,  1.3 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
  • 1.7%us — 用户空间占用CPU的百分比。
  • 1.3% sy — 内核空间占用CPU的百分比。系统进程CPU使用占比,内核态CPU使用率。
  • 0.0% ni — 改变过优先级的进程占用CPU的百分比
  • 96.9% id — 空闲CPU百分比
  • 0.0% wa — IO等待占用CPU的百分比
  • 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
  • 0.1% si — 软中断(Software Interrupts)占用CPU的百分比
  • 0.0%st — 虚拟机占用CPU的百分比

si 是从网卡过来的数据包多(收发包多),如果si高,则看网络收发包高的进程。一般硬件中断可以分析文件/proc/interrupts,/proc/irq/pid/smp_affinity、服务irqbalance是否配置,以及CPU的频率设置,通过这些可以帮助系统打散优化系统的硬件中断。

hi 使用率过高时,表示当前硬件中断占用很大的百分比。

wa:使用过高时,要考虑IO的性能是否有瓶颈,可以使用iostat,sar命令进一步分析
可以使用命令查看硬件中断:

cat /proc/interrupts > hil.txt
sleep 2
cat /proc/interrupts > hi2.txt  
vimdiff hil.txt  hi2.txt
或者
/proc/interrupts > hil.txt
sleep 2
cat /proc/interrupts > hi2.txt

默认情况下显示的是所有CPU的平均值,如果想看每个CPU具体值,则按下数字1即可,返回这个界面,再按一次数字1

 第四行显示的是系统的内存信息

KiB Mem : 39406275+total,  3895844 free, 10708065+used, 28308627+buff/cache
  • Mem 39406275+total:物理内存的总量
  • Mem 3895844 free:物理内存的空闲量
  • Mem 10708065+used:物理内存使用量
  • Mem 28308627+buff/cache:物理内存内核缓存使用量

第五行显示的是swap交换分区信息

KiB Swap:   0 total,   0 free,   0 used. 28355382+avail Mem
  • total:交换区总量
  • free:交换区空闲量
  • used:交换区使用量
  • avail Mem:虚拟内存总量

第六行空行

第七行

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 
  • PID — 进程ID
  • USER — 进程所有者
  • PR — 进程优先级
  • NI — nice值
  • VIRT — 进程所占虚拟内存大小???
  • RES — 进程所占物理内存大小(kb)
  • SHR — 进程所占共享内存大小(kb)
  • %CPU — CPU占用百分比
  • %MEM — 物理内存占用百分比
  • TIME+ — 上次更新到现在进程使用的CPU时间总计
  • COMMAND— 启动该进程的命令

top命令参数

  • -b 批处理
  • -c 显示完整的治命令
  • -I 忽略失效过程
  • -s 保密模式
  • -S 累积模式
  • -i<时间>设置间隔时间
  • -u<用户名>指定用户名
  • -p<进程号>指定进程
  • -n<次数>循环显示的次数

小技巧

间隔刷新
进入top后按下d,即可设置间隔刷新时间,默认是3秒。

添加进程监控字段
进入top后按下f,即可添加/减少需要监控的进程信息。

* PID     = Process Id             vMn     = Minor Faults delta
* USER    = Effective User Name    USED    = Res+Swap Size (KiB)
* PR      = Priority               nsIPC   = IPC namespace Inode
* NI      = Nice Value             nsMNT   = MNT namespace Inode
* VIRT    = Virtual Image (KiB)    nsNET   = NET namespace Inode
* RES     = Resident Size (KiB)    nsPID   = PID namespace Inode
* SHR     = Shared Memory (KiB)    nsUSER  = USER namespace Inode
* S       = Process Status         nsUTS   = UTS namespace Inode
* %CPU    = CPU Usage
* %MEM    = Memory Usage (RES)
* TIME+   = CPU Time, hundredths
* COMMAND = Command Name/Line
  PPID    = Parent Process pid
  UID     = Effective User Id
  RUID    = Real User Id
  RUSER   = Real User Name
  SUID    = Saved User Id
  SUSER   = Saved User Name
  GID     = Group Id
  GROUP   = Group Name
  PGRP    = Process Group Id


前面有*的说明已经显示了。

保存设置
对top进行设置后,默认是不保存配置的,只有按了大写的W后才会保存。

监控结果输出到文件

top -d 1 -n 3 > top.log

参考文章:服务器中使用Top命令后,参数解释_top命令的cpu占用率怎么算的_敢敢J的憨憨L的博客-CSDN博客

Linux服务器硬件情况的查看_系统运维_内存溢出 

猜你喜欢

转载自blog.csdn.net/weixin_40877388/article/details/130508324
今日推荐