top命令和系统负载

news2024/12/12 5:10:59

1 top中的字段说明

top是一个实时系统监视工具,可以动态展现出 CPU 使用率、内存使用情况、进程状态等信息,注意这些显示的文本不能直接使用 > 追加到文件中。

[root@vv~]# top -bn 1 | head
top - 20:08:28 up 138 days, 10:29,  4 users,  load average: 0.07, 0.05, 0.05
Tasks: 110 total,   1 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  0.0 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1798504 total,    97356 free,   500408 used,  1200740 buff/cache
KiB Swap:  1049596 total,  1049596 free,        0 used.  1117880 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0  199480   3436   1844 S   0.0  0.2  30:34.35 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.13 kthreadd
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H

在这里插入图片描述

%Cpu(s):  3.2 us,  0.0 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us:用户空间占用的CPU时间百分比,表示运行用户进程的时间。

  • sy:内核空间占用的CPU时间百分比,表示运行内核进程的时间。

  • ni:优先级已调整(nice)进程占用的CPU时间百分比。

  • id:空闲CPU时间百分比,表示CPU没有忙于处理任何任务的时间。

  • wa:等待I/O操作的CPU时间百分比,表示CPU等待输入/输出完成的时间。

  • hi:硬中断占用的CPU时间百分比,表示处理硬件中断的时间。

    中断:允许硬件设备或软件程序在处理器的当前任务中打断执行,以便立即处理某些紧急事件或请求

  • 硬中断是由硬件设备(如网卡、硬盘等)发起的中断信号,通常用于处理设备的紧急请求,优先级较高

  • si:软中断占用的CPU时间百分比,表示处理软件中断的时间。

    • 软中断则是由软件或操作系统发起的中断,用于处理非紧急的任务,如网络协议处理或定时器事件,优先级相对较低
  • st:被其他虚拟机窃取的CPU时间百分比,表示虚拟化环境下被分配给其他虚拟机的CPU时间。

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                             
   4050 root      20   0 7393848 946260   7016 S  11.6  47.9   2:02.83 java 
  • PID:进程的 ID,例如 1234 和 5678。

  • USER:进程的所有者,例如 rootuser1

  • PR:进程的优先级,通常是 20。PR 值的范围通常是从 -20+19。优先级的数值越小,表示进程的优先级越高,越容易被调度器分配给 CPU

    • 静态优先级:静态优先级是 Linux 内核用于普通进程调度的优先级,由进程在启动时设定的 nice 值(以及其他因素)决定,且在进程生命周期内通常保持不变。低静态优先级的进程 会在 CPU 时间分配中被 延迟执行,可能会因为其他高优先级进程的执行而受到影响

      • 静态优先级的范围通常是从 100 到 139,并由进程的 nice 值 影响。

      • nice 值为 0 的进程有一个标准的优先级,通常为 120

      • nice 值较小(如 -20) 会给进程提供较高的静态优先级(即更高的数字优先级)。

      • nice 值较大(如 +19) 会导致较低的静态优先级。

    • 实时优先级:是操作系统分配的 最高优先级,不受 nice 值的影响

  • NI:进程的 nice 值。可以用于影响进程的 PR 优先级

    • nice 值与调度优先级的关系:
      • nice 值越小,进程优先级越高,系统调度时更倾向于分配更多的 CPU 时间给该进程
      • nice 值越大,进程优先级越低,调度器会让其他进程更优先执行该进程会被“让步”
    • nice 值与 PR(优先级)的关系: nice 值直接影响 PR(进程的调度优先级),但 PR 还会受到进程的其他因素(如静态优先级、实时优先级等)的影响
  • VIRT:进程的虚拟内存大小。单位默认是KB

  • RES:进程使用的物理内存大小。

  • SHR:进程共享的内存大小。

    进程使用的共享内存的大小。共享内存是多个进程之间共享的内存区域,允许多个进程访问相同的内存地址空间,以实现高效的数据共享。这种方法比其他IPC机制(如管道、消息队列等)要高效得多,因为避免了数据复制的开销

  • S:进程状态,S 表示正在休眠。R 表示进程正在运行

    • 常见状态解释
      R运行中(正在运行或就绪等待运行)
      S可中断睡眠(等待某个事件)
      D不可中断睡眠(通常与 I/O 操作相关)
      T停止(由于信号,通常是暂停)
      Z僵尸(已经终止,但父进程尚未收集状态)
      I空闲(内核空闲进程)
      W分页等待(进程在等待交换或内存分页)
      X死亡(进程已经消失)
      +前台进程(终端控制)
  • %CPU:进程占用的 CPU 百分比。

  • %MEM:进程占用的物理内存的百分比。

  • TIME+:该进程的累计 CPU 时间。

  • COMMAND:进程名称。

1.top命令可以看到CPU使用率超过100%

top 命令中,CPU 使用率可以超过 100%,在多核或多线程系统中。每个 CPU 核心的使用率可以单独计算,因此总使用率是所有核心的使用率之和。例如,若有 4 个核心,理论上最大值可以达到 400%。如果某个进程充分利用了多个核心,CPU 使用率就可能显示为超过 100%

2 top命令用法

top是交互式查看,可以再输入其他字母进行交互。

top选项说明
-b非交互模式
-n只输出1次结果
-H查看线程信息
-p指定进程PID,如 top -p 1234
top交互按键说明
f自定义显示的列
k终止一个进程(需要输入 PID 和信号)
r重新设置一个进程的优先级(需要输入 PID 再输入 优先级)
P按CPU占用排序
M按内存占用排序
z进入颜色模式
shift + < >左右选择
x标记当前列
q退出 top
u显示特定用户的进程
  • 高亮查看,如下图

在这里插入图片描述

3 top+awk查看僵尸进程数量

思路:截取第二行的倒数第二列

注意:awk只能处理非交互式的文本信息

  1. [root@centos7 ~]# top 
    top - 13:30:24 up 10 min,  3 users,  load average: 0.30, 0.12, 0.07
    Tasks: 220 total,   1 running, 219 sleeping,   0 stopped,   0 zombie
    
  2. 方法1:
    [root@centos7 ~]# top -bn1 | awk 'NR==2' | awk '{print $(NF-1)}'
    0
    方法2:
    [root@centos7 ~]# top -bn1 | awk 'NR==2' | awk '{print $(NF-1),$(NF)}'
    0 zombie
    方法3:
    [root@centos7 ~]# top -bn1 | awk 'NR==2{print $(NF-1),$(NF)}'
    0 zombie
    

4 htop 图形化操作

htop需要手动安装,yum -y install htop,这时可以通过鼠标点击终端来切换需要查看的指标

在这里插入图片描述

5 系统负载高了如何排查

  1. 排查原因
  2. CPU高?
    • uptime 查看负载情况
    • top,查看用户/系统CPU高
  3. IO高?
    • top命令的第三行wa表示IO状态
    • iotop查看
  4. 最后结束对应进程
IO命令说明
-bn通top
-o只查看正在读写的进程

5.1 vmstat 命令介绍

系统监视工具,查看swap统计信息以及系统的整体状态。vmstat 还可以关于进程、内存、分页、块 I/O、陷阱和 CPU 活动的详细信息

vmstat 5 3显示虚拟内存统计信息,每 5 秒报告一次,共报告 3 次
vmstat -d查看磁盘信息
vmstat -p /dev/sda打印sda磁盘信息
vmstat -s显示各种事件的总计
vmstat -t在输出中包含时间戳
vmstat输出列说明
r运行队列中等待 CPU 的进程数量
b等待 I/O 的进程数量
swpd已使用的虚拟内存(swap)的大小,单位是 KB
free空闲内存的大小,单位是 KB
buff用作缓冲区的内存量,单位是 KB
cache用作缓存的内存量,单位是 KB
si从磁盘交换到内存的交换数据量,单位是 KB/s,如果 si 值较高,说明系统可能存在内存压力,频繁进行磁盘交换
so从内存交换到磁盘的交换数据量,单位是 KB/s,如果 so 值较高,可能表示内存不足
bi每秒从块设备(磁盘)读取的数据量,单位是 KB/s
bo每秒写入到块设备(磁盘)的数据量,单位是 KB/s
in每秒中断的次数;通常与硬件(如磁盘或网络接口)或其他外部事件有关
cs每秒上下文切换的次数;如果此值很高,可能表明系统负载较重
us用户空间(用户进程)占用的 CPU 时间百分比;表示应用程序的计算负载
sy内核空间(系统进程)占用的 CPU 时间百分比;表示内核或系统进程的负载
idCPU 空闲时间百分比
waCPU 等待 I/O 完成的时间百分比
st被虚拟化环境占用的 CPU 时间百分比(如被 hypervisor 占用)

每2秒刷新一次查看

[root@qwe~]# vmstat  2
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 159096 159024 940948    0    0     4     8    1    1  1  1 99  0  0
 0  0      0 160564 159024 940892    0    0     0     0 1051 1633  1  1 99  0  0
 0  0      0 156708 159024 941220    0    0     0     0 2927 2673  1  2 97  0  0
  • tps(每秒 I/O 操作次数)
  • kB_read/s(每秒读取的 KB 数)
  • kB_wrtn/s(每秒写入的 KB 数)
  • kB_readkB_wrtn(总读取和写入的 KB 数)

5.2 iostat命令介绍

[root@qwe~]# iostat 
Linux 3.10.0-1160.108.1.el7.x86_64 (qwe)        11/12/2024      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.59    0.00    0.63    0.04    0.00   98.74

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               2.59         7.54        14.87  120804422  238351765

5.3 情况1:CPU高、Load高

  • 通过top命令查找占用CPU最高的进程PID;
  • 通过top -Hp PID查找占用CPU最高的线程TID;
  • 对于java程序,使用jstack打印线程堆栈信息(可联系业务进行排查定位);
  • 通过printf %x tid打印出最消耗CPU线程的十六进制;
  • 在堆栈信息中查看该线程的堆栈信息;

5.4 情况2:CPU低、Load高

7.54        14.87  120804422  238351765



## 5.3 情况1:CPU高、Load高

- 通过top命令查找占用CPU最高的进程PID;
- 通过top -Hp PID查找占用CPU最高的线程TID;
- 对于java程序,使用jstack打印线程堆栈信息(可联系业务进行排查定位);
- 通过printf %x tid打印出最消耗CPU线程的十六进制;
- 在堆栈信息中查看该线程的堆栈信息;

## 5.4 情况2:CPU低、Load高

- 通过top命令查看CPU等待IO时间,即%wa

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang实现简单的redis服务4(实现过期时间功能)

为什么要做过期时间?redis失效时间是如何做的redis有那些过期策略,优缺点,实现原理?redis使用的什么方案 redis 有那些内存淘汰策略?常用的是什么,为什么?noeviction: 不处理lru: 未使用时间最久的keylfu: 使用次数最少的keyrandom: 随机keyvolatile与allkeys的区别 仓库地…

VMware:如何在CentOS7上开启22端口

打开虚拟机&#xff1a;【编辑】【虚拟机网络设置】 其中填入的虚拟机IP地址是虚拟机中centos的IP地址&#xff0c;虚拟机端口为需要映射的centos端口 配置好之后保存&#xff0c;打开宿主机 win cmd telnet 192.168.1.26 22 如果出现上述窗口&#xff0c;则说明已经成功开放…

项目中使用AntV L7地图(五)添加飞线

项目中使用AntV L7地图&#xff0c;添加 飞线 文档地址&#xff1a;https://l7.antv.antgroup.com/zh/examples/line/animate/#trip_animate 一、初始化地图 使用的地图文件为四川地图JSON&#xff0c;下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector#&…

基于FPGA的智能电子密码指纹锁(开源全免)

基于FPGA的智能电子密码指纹锁 一、功能描述硬件资源需求 二、整体框架知识准备AS608指纹模块4*4数字键盘模块 三、Verilog代码实现以及仿真验证1.AS608_data模块2.check_hand模块3.four_four_key模块4.check_mima模块5.change_mima模块6.seg_ctrl模块7.uart_top模块8.key_debo…

【Vue2+Element-ui】el-dialog宽度适配

1、不适配问题 分辨率100%-页面 分辨率150%-页面 在项目中&#xff0c;我开发分辨率一直是100%&#xff0c;但是客户使用的分辨率不相同&#xff0c;所以宽度要适配 2、解决-封装mixins.js 1)、封装的mixins 我将宽度设置成动态的&#xff0c;因为我的项目中需求不同。 expor…

css矩形样式,两边圆形

废话不多说&#xff0c;代码如下&#xff0c;直接拷贝即可使用&#xff1a; index.vue文件 <template><view class"wrap"><view class"tabs"><view class"tab active"><view class"name">标签</view…

【OpenCV】图像阈值

简单阈值法 此方法是直截了当的。如果像素值大于阈值&#xff0c;则会被赋为一个值&#xff08;可能为白色&#xff09;&#xff0c;否则会赋为另一个值&#xff08;可能为黑色&#xff09;。使用的函数是 cv.threshold。第一个参数是源图像&#xff0c;它应该是灰度图像。第二…

使用微信小程序调用飞桨PaddleX平台自行训练的模型——微信小程序用训练的牡丹花模型Demo测试

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大二学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

Wordpress设置固定链接形式后出现404错误

比如固定连接设置为 /archives/%post_id%.html 这种形式&#xff0c;看起来比较舒服。对搜索引擎也友好。 出现404需要设置伪静态

JavaWeb学习--cookie和session,实现登录的记住我和验证码功能

目录 &#xff08;一&#xff09;Cookie概述 1.什么叫Cookie 2.Cookie规范 3.Cookie的覆盖 4.cookie的最大存活时间 ​​​​​​&#xff08;Cookie的生命&#xff09; &#xff08;二&#xff09; Cookie的API 1.创建Cookie&#xff1a;new 构造方法 2.保存到客户端浏…

Linux网络测试指令

Ping Ping命令是一个网络工具&#xff0c;用于测试主机之间的可达性。它通过发送ICMP&#xff08;Internet Control Message Protocol&#xff09;回声请求消息到目标主机&#xff0c;并等待接收ICMP回声应答消息来判断目标是否可达以及测量往返时间。Ping命令对于诊断网络连接…

【伪代码】数据结构-期末复习 线性表

目录 例1 矩阵相乘 线性表 2.1 线性表的类型定义 例2-1 求并集 LALA∪LB 例2-2 有序表归并 2. 2 线性表的顺序表示和实现 1&#xff0e;构造空表 2&#xff0e;插入 3&#xff0e;删除 4&#xff0e;定位 顺序表的优点&#xff1a; 顺序表的缺点&#xff1a; 例…

<C++11> 智能指针

目录 前言 C11和boost中智能指针的关系 一、智能指针的使用及原理 1. 智能指针介绍 2. 智能指针的使用 3. 智能指针的原理 二、C中的智能指针 1. auto_ptr 2. unique_ptr 3. shared_ptr std::shared_ptr的基本设计 shared_ptr的线程安全问题 定制删除器 4. weak_ptr shared_pt…

书生实战营第四期-进阶岛第六关-MindSearch 快速部署

一、开发环境配置 1、打开codespace主页&#xff0c;选择Blank模板进行创建 Codespaces 2、创建conda环境隔离并安装依赖 conda create -n mindsearch python3.10 -y conda init 因为是新建的codespace&#xff0c;在第一次创建conda环境时&#xff0c;需要conda init 然后再…

ViT学习笔记(二) Patch+Position Embedding阶段的详细推演与理解

我认为讲得最好的一个文章&#xff1a;Vision Transformer详解-CSDN博客 有很多文章&#xff0c;自己并没有完全正确理解。 我的笔记&#xff0c;以ViT的标准应用为例&#xff1a; • 输入图像&#xff1a;输入图像的尺寸是224x224&#xff0c;且是RGB图像&#xff0c;因此输…

JS听到了强运的回响

正则表达式 介绍 正则表达式是用于匹配字符串中字符组合的模式&#xff0c;在JS中&#xff0c;正则表达式也是对象 通常用来查找&#xff0c;替换那些符合正则表达式的文本 就是筛选出符合条件的一类人 比如说 有人喜欢玩艾斯爱慕&#xff0c;那他喜欢的就是这一类人&…

工业4.0下的IT网络与OT网络

https://zhuanlan.zhihu.com/p/498984722 随着“中国制造2025”的深入推进&#xff0c;制药行业以手工为主的传统生产方式正在被以“工业4.0 ”为核心的自动化生产方式逐步替代。 为了实现生产自动化&#xff0c;很多制药企业都引入了由PLC&#xff08;可编程逻辑控制器 &am…

C# MVVM 牛牛的实现依赖注入和MVVM绑定(DependencyInjection+CommunityToolkit)

这段时间在网上发现搜索MVVM数据绑定时&#xff0c;发现很多都是最基本的数据绑定&#xff0c;完全没有考虑依赖注入的问题&#xff0c;这里实现一下我们的方法&#xff0c;让我们的数据绑定和依赖注入都变得简单起来。 安装资源包 首先我们要下载一下资源包DependencyInject…

gitee常见命令

目录 1.本地分支重命名 2.更新远程仓库分支 3.为当前分支设置远程跟踪分支 4.撤销已经push远程的代码 5.idea->gitee的‘还原提交’ 需要和本地当前的代码解决冲突 解决冲突 本地工作区的差异代码显示 本地commit和push远程 6.idea->gitee的‘将当前分支重置到此…

【JAVA高级篇教学】第二篇:使用 Redisson 实现高效限流机制

在高并发系统中&#xff0c;限流是一项非常重要的技术手段&#xff0c;用于保护后端服务&#xff0c;防止因流量过大导致系统崩溃。本文将详细介绍如何使用 Redisson 提供的 RRateLimiter 实现分布式限流&#xff0c;以及其原理、使用场景和完整代码示例。 目录 一、什么是限流…