首页 > 其他分享 >如何通过top发现性能问题

如何通过top发现性能问题

时间:2023-01-25 16:12:09浏览次数:40  
标签:top CPU 如何 内存 进程 性能 占用 swap

在性能测试时,Linux操作系统中可以通过top命令来发现和定位服务器性能消耗的问题。
执行top命令后获取到的数据如下图所示

  • 第1行显示的是系统运行信息:系统当前时间为 15:51:06、系统运行了163天22小时58分钟、当前登录的用户有1个、系统的平均负载压力情况为:0.19(最近1分钟内的平均负载压力),0.30(最近5分钟内的平均负载压力)和0.38(最近15分钟内的平均负载压力)。这个平均负载压力(load average )的数值是每隔5 秒钟检查一次活跃的进程数,然后按特定算法计算出来的。一般当这个数值除以 CPU 的核数得到的值大于 3~5时,就表明系统的负载压力已经超高了,最好不要超过1。
  • 第2行显示的是任务信息:总共 168个进程、1个进程正在占用CPU 处于运行状态、166个进程正在休眠中、0个进程停止、1个进程假死。一般在这行信息中我们首要关注的是系统当中有没有僵尸进程。
  • 第3行显示的是 CPU 的运行信息:5.6 us 表示用户模式下CPU占用比为 5.6%, 3.5 sy 表示系统模式下CPU占用比为 3.5%,0.0 ni 表示改变过优先级的进程的CPU占用比为 0.0%,90.6 id 表示空闲状态的CPU占用比为 90.6%,0.2 wa 表示因为I/O等待造成的CPU占用比为 0.2%,0.0 hi 表示硬中断的CPU占用比,0.0 si 表示软中断的CPU的占用比。0.0st表示CPU等待虚拟机调度的时间占比,这个指标一般在虚拟机中才会有,在物理机中该值一般维持为 0,即被虚拟机占用的CPU时间比例。

当us很高时,证明CPU时间主要消耗在用户代码,需要优化用户代码。sy很高时,说明CPU时间都消耗在内核,要么是频繁的系统调用,要么是频繁的CPU切换(进程切换/线程切换)。wa很高时,说明有进程在频繁的IO操作,有可能是磁盘IO,也有可能是网络IO。si很高时,说明CPU时间消耗在处理软中断,网络收发包会触发系统软中断,所以大量的网络小包会导致软中断的频繁触发,典型的SYN Floor(SYN洪泛攻击)会导致si很高。

  • 第4行显示的是物理内存的使用信息:2046816 total 表示物理内存的总量,92232 free表示物理内存的空闲大小,1112060 used 表示已使用的物理内存的大小,842524 buff/cache 表示用于缓存的物理内存的大小,1479036 avail Mem 表示可供使用的内存大小。avail mem 是创建新进程时,在不使用swap分区的情况下,能够分配的内存大小。这个大小可能比当前的free还大,这是因为buff/cache中的内存在创建进程时,若需要,也是可以抢占过来的。
  • 第5行显示的是虛拟内存(swap)的使用信息:0 total 表示虚拟内存空间的大小,0 free 表示空闲的虚拟内存空间的大小,0 used 表示已使用的虛拟内存空间的大小,这三个值都为0表示系统关闭了swap功能。交换区其实是硬盘,并非内存,swap原理就是把一块磁盘空间当成内存来使用。当交换区存在数据时说明物理内存不够了。对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
  • 第7行显示的是每个进程的资源消耗信息,详情如下表所示
    列名 说明
    PID 进程ID编号
    USER 进程的持有用户
    PR 进程运行的优先级,值越小优先级就越高,会越早获得 CPU 的执行权
    NI 进程的 nice 值,表示进程可被执行的优先级的修正数值
    VIRT 进程使用的虚拟内存总大小,单位为KB
    RES 进程使用的并且未被虚拟内存换出的物理内存大小,一般也称为常驻内存,单位为 KB
    SHR 进程使用的共享内存大小,单位为 KB
    S 进程当前的运行状态。D:不可中断的睡眠状态,R:运行中,S:休眠中,T:跟踪/停止
    %CPU 进程运行时 CPU 的占用比
    %МЕМ 进程使用的内存占用比
    TIME+ 进程占用的 CPU 的总时长
    COMMAND 正在运行的命令

top 命令支持的其他常用参数如下:

  • top -p 查看指定进程ID的top信息,例如执行top -p 2081 可以查看进程编号为2081的top信息。
  • top -H -p 查看指定进程ID的所有线程的top信息,此时列表中的PID显示的是线程的ID编号。例如执行top -H -p 2081 可以查看进程编号为2081的所有线程的top信息。

标签:top,CPU,如何,内存,进程,性能,占用,swap
From: https://www.cnblogs.com/shigzh/p/17067013.html

相关文章

  • 使用 iftop对网络流量进行监控
    概述iftop是一个免费的网卡实时流量监控工具,类似于Linux下的top命令。iftop可以监控指定网卡的实时流量、端口连接信息、反向解析IP等,还可以精确显示本机网络流量情况及......
  • 非计算机专业如何转行做程序员?
    随着互联网的飞速发展,云计算、大数据由“热点”到落地,也带动着市场对软件开发者的需求,而目前国内软件开发从业者本已供不应求。互联网的火热不仅给软件开发者带来更为广阔的......
  • Tableau完整系列课程4:Tableau desktop图表制作系列专题
    Tableau系列视频课程(适用tableau各版本,视频中提供全部源文件):1.大数据可视化之敏捷BITableauDesktop入门培训视频课程:​​https://edu.51cto.com/course/4025.html​​2.......
  • 如何在 pyqt 中使用动画实现平滑滚动的 QScrollArea
    前言在之前的博客《如何在pyqt中实现平滑滚动的QScrollArea》中,我们使用定时器和队列实现了平滑滚动。但是实现代码还是有一点复杂,所以这篇博客将使用Qt的动画框架Q......
  • GitOps持续交付
    1.GitOps应用持续交付模型GitOps是一种应用持续交付模型,它的核心思想是将应用程序的声明式编排甚至基础架构编排都存放在Git源仓库中。实际上,将任何能够被描述的内容都存......
  • 如何从入门开始学习OpenCV?
    一、OpenCV简介OpenCV是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库,支持与计算机视觉和机器学习相关的众多算法,并且正在日益扩展。1.1OpenC......
  • 如何简单快速的提升绩效
    新年初始,摆在很多管理层面前的很头疼的问题之一就是:2023公司/团队的绩效该怎么做?怎样才能把员工的绩效提升一些呢?给大家推荐一种很简单的一种方式——推行OKR。首先我们......
  • 第五十五章 使用 ^mgstat 监控性能 - Seizes、ASeizes 和 NSeizes
    第五十五章使用^mgstat监控性能-Seizes、ASeizes和NSeizesColumnDescriptionNotesGlorefs全局引用(数据库访问)。指示代表当前工作负载正在发生的工作量;......
  • colab在更换python包版本时,如何正确重启
    当我在使用Node2Vec这个包的时候,遇到了gem和numpy的版本冲突问题。最后在pc上测试,发现只要升级numpy就能解决问题。但是在colab中更新numpy版本依旧报错。后面才发现,就算在......
  • 【转】传统的SpringMvc项目如何使用ajax发送PUT或DELETE请求?
    原文:https://www.cnblogs.com/lveyHang/p/11790488.html 一、方式一:将POST请求转化为相应的PUT和DELETE 请求1.在Web.xml中添加如下配置:用于将POST请求转......