【Linux 性能详解】CPU性能分析工具篇

目录

uptime

mpstat

实时监控

查看特定CPU核心

pidstart

监控指定进程

组合多个监控类型

监控线程资源

按用户过滤进程

vmstart

用途

基本用法

输出字段

perf

execsnoop

dstat

通俗解释

技术层面解释

使用示例

总结


uptime

uptime 是一个在 Linux 和 Unix 类操作系统中广泛使用的命令行工具,用于提供关于系统运行时间和负载状况的简要信息。执行 uptime 命令时,它会输出一行包含以下几个关键数据的文本:

  1. 当前时间
    显示当前系统的日期和时间。这可以帮助用户快速了解命令执行的具体时刻。
  2. 系统运行时间
    表示自系统上次启动以来已运行的总时间。通常以“天+小时:分钟:秒”的格式呈现,如:“1 day, .jpg hours, 34 minutes”。
  3. 当前登录用户数
    显示当前在系统上处于活动状态(已登录并进行交互或运行进程)的用户数量。这对于评估系统实时使用情况有一定参考价值。
  4. 平均负载
    提供过去一段时间内系统的平均负载值,通常包括1分钟、5分钟和15分钟的平均负载。这些数值反映了在这三个时间段内,系统处理器(CPU)的繁忙程度。平均负载是系统在特定时间间隔内正在处理或等待处理的任务(进程)的平均数量。理想情况下,这些值应接近系统的处理器核心数(如双核系统期望的平均负载大致在1-2之间),过高可能表明系统资源紧张或存在性能问题。

例如,一个典型的 uptime 命令输出可能如下所示:

解读上述输出:

  • 当前时间为 13:53:41。
  • 系统已经运行了 57天。
  • 有 2名用户当前在线。
  • 过去1分钟、5分钟、15分钟的平均负载分别为 0.09、0.04、0.01。

通过定期检查 uptime 输出,系统管理员和用户可以快速了解系统的总体运行状态、稳定性以及是否存在潜在的资源瓶颈。如果平均负载持续高于系统可处理能力,可能需要进一步调查原因(如是否有资源密集型进程在运行、是否需要增加硬件资源等)。此外,结合其他系统监控工具和命令(如 tophtopvmstatiostat 等),可以更深入地分析系统的性能和健康状况。


mpstat

mpstat命令作为Linux系统中用于监控CPU性能的强大工具,具有多种功能特性,以下是一些可能您感兴趣或想要了解的方面:

实时监控

mpstat默认不带任何参数时,会显示系统启动以来CPU的统计信息。若要观察实时变化,可以指定采样间隔和采样次数,如:

mpstat 5 10

这将每5秒采样一次CPU状态,并连续采样10次。

查看特定CPU核心

使用-P选项指定要监控的CPU编号。例如,查看CPU编号为0的核心状态:

若要同时监控所有CPU核心,使用-P ALL

mpstat -P ALL

  • 显示的统计指标
    mpstat输出包括但不限于以下各项:
    • %usr: 用户态CPU时间百分比,即执行用户进程所花费的时间。
    • %nice: 低优先级(nice)用户进程所占CPU时间百分比。
    • %sys: 系统态CPU时间百分比,即执行内核进程所花费的时间。
    • %iowait: 等待I/O操作完成时CPU空闲时间百分比。
    • %irq: 处理硬件中断所占CPU时间百分比。
    • %soft: 处理软件中断(包括内核调度等)所占CPU时间百分比。
    • %steal: 在虚拟化环境中,被其他虚拟机“偷走”的CPU时间百分比。
    • %guest: 执行虚拟机所占CPU时间百分比(如果支持)。
    • %idle: CPU空闲时间百分比。
  • 其他选项
    • -u: 显示更为详细的CPU利用率统计,包括平均负载(load average)、进程上下文切换等信息。
    • -A: 显示所有活动和非活动CPU核心的统计信息,这对于识别未完全利用的CPU核心很有帮助。
    • -V: 显示mpstat版本信息。

pidstart

以下是该命令的一些说明:

监控指定进程

使用-p选项后跟进程ID(PID),可以监控特定进程的资源使用情况。例如,监控PID为1234的进程:

pidstat -p 1821

组合多个监控类型

pidstat允许同时指定多个选项来监控不同类型的资源使用。例如,同时查看CPU使用率和内存使用情况:

pidstat -urd 5 10

 上述命令每5秒采样一次,连续采样10次,显示指定进程的CPU使用(-u)、内存使用(-r)以及磁盘I/O(-d)情况。

监控线程资源

使用-t选项可以显示线程级别的资源使用情况。这在多线程应用程序中非常有用,可以深入分析线程间的资源分配和消耗:

pidstat -ut 5

此命令每5秒显示一次每个线程的CPU使用情况。

按用户过滤进程

使用-U选项可以指定用户名,仅显示该用户所拥有的进程资源使用情况:

pidstat -U john 5

此命令每5秒显示一次用户“john”所拥有的所有进程资源使用情况。

  • 统计信息输出
    • -h:以人类可读的格式显示数值(如K、M、G等单位)。
    • -V:显示pidstat命令的版本信息。
  • 高级选项和统计字段
    pidstat提供了更多详细的统计字段和选项,如:
    • -T:显示进程的线程总数。
    • -L:显示进程的页缓存(page cache)使用情况。
    • -W:显示进程的交换(swapped)内存使用情况。

vmstart

用途

vmstat命令主要用来报告关于系统虚拟内存、进程、CPU活动、磁盘I/O、系统中断等关键系统统计信息。通过这些统计数据,管理员可以快速了解系统的整体性能和健康状况,帮助诊断诸如内存压力、CPU瓶颈、磁盘I/O问题等系统性能问题。

基本用法

vmstat的基本用法如下:

vmstat [options] [interval [count]]
  • 选项 (options):可选,用于指定输出内容的详细程度或指定特定统计项。例如:
    • -a--active:显示活跃和非活跃内存信息。
    • -d--disk:显示磁盘统计信息。
    • -m--slabs:显示SLAB信息(内核对象缓存)。
    • -s--stats:仅在开始时打印一次概要统计信息。
    • 其他选项可能因不同Linux版本而异,可通过man vmstat获取完整的选项列表。
  • 间隔 (interval):可选,以秒为单位的时间间隔,表示每隔多少时间采集并输出一次系统状态。如果提供了此参数,vmstat将进入循环模式,持续更新输出。
  • 计数 (count):可选,指定循环输出的次数。如果不指定或设为0,则会一直循环输出,直到手动停止(通常通过按Ctrl+C中断)。

输出字段

vmstat的输出通常包含多列数据,每列代表不同的统计指标。一些常见的列包括:

  • procs
    • r:运行队列中的进程数,即正在运行或等待CPU时间片的进程数。如果该值持续较高,可能表明CPU过载。
    • b:阻塞在等待I/O完成的进程数。
  • memory
    • swpd:虚拟内存中使用的交换空间大小。
    • free:可用物理内存大小。
    • buff:用于文件系统缓存的缓冲区大小。
    • cache:用于文件系统缓存的高速缓存大小。
    • 在某些系统上,buffcache可能合并为一列buf/cach或类似表示。
  • swap
    • si:从磁盘交换到内存的大小(KB/s)。
    • so:从内存交换到磁盘的大小(KB/s)。高值可能表示内存压力较大。
  • io
    • bi:块设备接收的块数(块/秒)。
    • bo:块设备发送的块数(块/秒)。这两个值可用于评估磁盘I/O活动。
  • system
    • in:系统中断次数(每秒)。
    • cs:上下文切换次数(每秒)。高值可能表示进程调度过于频繁。
  • cpu
    • us:用户态CPU时间占比。
    • sy:内核态CPU时间占比。
    • id:空闲CPU时间占比。
    • wa:等待I/O完成的CPU时间占比。
    • st:被虚拟化系统偷取(如果适用)的CPU时间占比。

使用vmstat时,可以根据需要调整参数来监控特定时间段内的系统行为,或者在排查系统性能问题时持续观察系统状态的变化。结合其他系统监控工具(如topiostatfree等),可以更全面地分析系统的运行状况。


perf

  • 内核 tracepoints 和动态探针:除了硬件事件,perf 还可以利用内核 tracepoints(预定义的内核跟踪点)和动态插入的 kprobes/usdt 探针来捕获特定的软件事件,如系统调用、函数调用、锁争用等。
  • 性能数据采集perf 可以记录采样数据(如 CPU 性能计数器的值)、堆栈跟踪信息,以及基于事件的跟踪数据,并将这些数据保存到文件中以供后续分析。
  • 分析与可视化:收集到的性能数据可以使用 perf 自带的分析工具或与其他第三方工具(如 FlameGraph)结合,生成各种报告和图形化视图(如火焰图),便于直观地识别热点函数、查找性能瓶颈和资源争用情况。

常用子命令与功能:

  • perf list:列出当前系统支持的所有性能事件,包括硬件计数器事件、软件事件(tracepoints)、以及由 perf_events 驱动提供的其他事件。这对于选择合适的事件进行性能分析非常有用。
  • perf stat:用于快速获取指定命令或进程的整体性能统计数据。它会在命令执行前后采样,并报告诸如 CPU 时间、缓存命中率、指令数、上下文切换等各项指标。
  • perf record:记录指定进程在运行期间的性能数据,生成一个 .perf.data 文件。此文件可以使用 perf reportperf annotate 等命令进行详细分析。
  • perf report:读取先前使用 perf record 生成的数据文件,展示采样数据的分析结果,通常包括按样本数排序的函数列表、调用关系树(caller/callee)、以及每个函数的源码行级别细节。
  • perf top:提供类似 top 命令的实时视图,显示当前系统或指定进程中占用资源最多的函数(按照 CPU 使用率、指令数等)。这对于实时监控系统或进程的性能热点非常有用。
  • perf annotate:针对特定函数,展示其源代码并标注每一行代码被采样的次数,有助于识别函数内部的具体热点。
  • perf script:处理 perf record 收集的事件数据,可以配合 -g 参数生成适合于 FlameGraph 工具的折叠堆栈格式,用于生成火焰图。

这些只是 perf 命令的一部分功能。实际使用中,根据具体的性能分析需求,可以组合使用不同的子命令和选项。


execsnoop

execsnoop 是一个在 Linux 系统中用于监控进程执行情况的实用工具。它通常被用作一种动态追踪技术,能够实时监测并报告系统上正在运行的所有进程(或特定条件下的进程)所执行的外部命令(即通过 execve() 系统调用启动的新程序)。execsnoop 主要利用 eBPF (Extended Berkeley Packet Filter) 或者早期版本中可能使用的内核跟踪点(tracepoints)来实现这一功能。

以下是 execsnoop 命令的一些关键特性与用途:

  1. 实时监控execsnoop 可以实时捕获和显示任何时刻系统上新执行的命令及其相关信息,这对于诊断系统行为、识别异常活动、安全审计、性能分析等场景非常有用。
  2. 命令行参数捕获:除了记录被执行的命令本身,execsnoop 还可能显示命令执行时携带的参数,这对于理解具体操作的上下文至关重要。
  3. 过滤与筛选:用户可以指定过滤规则来关注特定类型的进程执行事件,比如仅监控特定用户、特定命令、特定目录下的命令执行,或者基于命令行参数内容进行匹配。
  4. 性能影响小:由于利用了高效的 eBPF 技术,execsnoop 在提供详细监控能力的同时,对系统性能的影响相对较小,使其适用于生产环境中非侵入式的监控需求。
  5. 输出格式execsnoop 的输出通常包括进程 ID(PID)、父进程 ID(PPID)、执行命令的完整路径、命令行参数以及执行时间戳等信息。
  6. 工具来源execsnoop 往往是作为 BCC(Berkeley Packet Filter Compiler Collection)工具集的一部分提供的。BCC 是一套用于创建高效内核 tracing 和分析工具的框架,包含了大量基于 eBPF 的实用程序,包括 execsnoop

如果您想在您的 Linux 系统上使用 execsnoop,您需要确保已经安装了 BCC 工具集。在许多现代 Linux 发行版中,可以通过包管理器(如 aptyumdnf)来安装 BCC。安装后,您就可以在终端中直接运行 execsnoop 命令来开始监控进程执行情况。具体的使用语法和选项可能会因 BCC 版本不同而有所差异,但通常会包括一些基本的过滤选项,允许您根据需要定制监控范围。


dstat

dstat 是一款强大的 Linux 系统监控工具,它设计用于实时展示系统的各项关键性能指标,被誉为“全能型”监控利器。以下是对 dstat 命令的通俗且详细的介绍:

通俗解释

想象你正在经营一家工厂,需要随时掌握生产线上各个环节的工作状态,以便及时调整策略、优化流程,确保整体运营高效顺畅。为此,你可能会在各个关键位置安装各种仪表和传感器,如电流表监测电力消耗,温度计监控设备温度,计数器记录产品产出,等等。这些设备会实时反馈数据,让你一目了然地看到当前生产线的整体运行状况。

在 Linux 系统的世界里,dstat 就扮演了这样一个综合监控仪表板的角色。当运行 dstat 命令时,它会在终端上实时滚动显示一系列系统性能统计数据,这些数据就像是工厂中的各类仪表读数,涵盖了 CPU 使用率、内存使用情况、磁盘 I/O 活动、网络流量等关键性能指标。通过观察 dstat 的输出,系统管理员或开发者可以迅速了解系统的健康状况、资源分配是否合理、是否存在性能瓶颈等问题,就像工厂经理通过监控面板判断生产线是否正常运转一样。

技术层面解释

dstat 的主要特点和优势包括:

  1. 全面性:它整合了多个传统监控工具的功能,如 vmstat(虚拟内存统计)、iostat(磁盘 I/O 统计)、ifstat(网络接口统计)、netstat(网络连接统计)等,省去了用户需要运行多个命令才能获取完整系统视图的麻烦。
  2. 灵活性dstat 允许用户根据需要定制要监控的项目,可以选择显示哪些性能指标,也可以通过参数动态添加或移除监控项。这意味着你可以聚焦于特定的关注点,避免无关信息干扰。
  3. 实时性dstat 以秒级乃至更短的时间间隔持续刷新显示数据,确保用户能够及时捕捉到系统状态的变化。这对于快速响应性能波动或故障排查尤其重要。
  4. 易用性:其简洁的命令行界面使得即使非专业用户也能快速上手。通过简单的命令选项,可以轻松调整输出格式、采样频率、显示列数等。

使用示例

运行最基本的 dstat 命令,会得到一组默认的核心系统统计信息:

dstat

如果你想查看特定的监控项,可以使用参数指定,比如仅关注 CPU 和磁盘 I/O:

dstat -cd

若需以较长时间间隔(如每5秒)监控网络流量和系统负载,可以这样操作:

dstat -tn --interval 5

dstat 还支持输出到文件供后续分析,或与其他工具结合使用进行自动化监控。

总之,dstat 是 Linux 系统管理员和开发者手中的得力助手,凭借其全面、灵活、实时的特性,使得对系统性能的监控变得直观、便捷,有助于快速识别和解决问题,优化系统资源利用效率。

总结

有了以上性能工具,在实际遇到问题时我们并不可能全部性能工具跑一遍,这样效率也太低了,所以这里可以先运行常用的工具 top分析系统大概的运行情况然后在具体定位原因。 

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

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

相关文章

上班不想用脑子写代码了怎么办?那就试试Baidu Comate啊宝贝

本文目录 前言1、视频编程实战1.1、熟悉代码库中的代码1.2、参考现有代码编写新代码 2、下载使用教程3、使用体验3.1、AutoWork 产品测评3.2、解决有关ajax请求后重定向问题3.3、询问编程相关知识3.3.1、cookie和session的区别与联系3.3.2、数据库中主键外键的相关知识 4、问题…

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理,可以通过按键调整二值化的阈值,key1为阈值加1,key4为阈值减1,key2为阈值加10,key5为阈值…

【bug记录】清除僵尸进程,释放GPU显存

目录 1. 为什么会出现这种情况?2. 解决方案方法一:使用 fuser 命令方法二: 3. 小贴士 在进行深度学习或其他需要GPU支持的任务时,我们有时会发现虽然没有可见的进程在执行,但GPU资源却意外地被占用。这种情况往往会阻碍…

AI换脸原理(4)——人脸对齐(关键点检测)参考文献2DFAN:代码解析

注意,本文属于人脸关键点检测步骤的论文,虽然也在人脸对齐的范畴下。 1、介绍 在本文中,重点介绍了以下几项创新性的成果,旨在为人脸关键点检测领域带来新的突破。 首先,成功构建了一个卓越的2D人脸关键点检测基线模型。这一模型不仅集成了目前最优的关键点检测网络结构,…

sqlite3命令行工具无法退出问题处理

一、背景: 软件使用的后台数据库为sqlite,linux主机系统层面使用sqlite3命令行工具登录数据库后,无法执行sql脚本,无法退出sqlite3。无法执行ctrlc,执行ctrlz后sqlite3前台进程被中断,但是该进程没有退出。…

Spring-依赖查找

依赖查找 根据名称进行查找 实时查找 BeanFactory beanFactory new ClassPathXmlApplicationContext("beans.xml"); Object bean beanFactory.getBean("personHolder"); System.out.println(bean);xml如下: <bean id"person" class&qu…

运维自动化工具:Ansible 概念与模块详解

目录 前言 一、运维自动化工具有哪些 二、Ansible 概述 1、Ansible 概念 2、Ansible 特点 3、Ansible 工作流程 4、Ansible 架构 4.1 Ansible 组成 4.2 Ansible 命令执行来源 5、Ansible 的优缺点 三、Ansible 安装部署 1、环境部署 2、管理节点安装 Ansible 3、…

Golang | Leetcode Golang题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; func sortColors(nums []int) {p0, p2 : 0, len(nums)-1for i : 0; i < p2; i {for ; i < p2 && nums[i] 2; p2-- {nums[i], nums[p2] nums[p2], nums[i]}if nums[i] 0 {nums[i], nums[p0] nums[p0], nums[i]p0}} }

模型全参数训练和LoRA微调所需显存的分析

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

java--io流(一)

1. 前置知识 字符集是什么&#xff1f; 字符集&#xff08;Character Set&#xff09;是一组字符的集合&#xff0c;它定义了可以在计算机系统中使用的所有字符。字符集可以包括字母、数字、标点符号、控制字符、图形符号等。字符集使得计算机能够存储、处理和显示各种语言和…

嵌入式Linux学习第四天启动方式学习

嵌入式Linux学习第四天 今天学习I.MX6U 启动方式详解。I.MX6U有多种启动方式&#xff0c;可以从 SD/EMMC、NAND Flash、QSPI Flash等启动。 启动方式选择 BOOT 的处理过程是发生在 I.MX6U 芯片上电以后&#xff0c;芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。BOOT_M…

Linux——基础IO2

引入 之前在Linux——基础IO(1)中我们讲的都是(进程打开的文件)被打开的文件 那些未被打开的文件呢&#xff1f; 大部分的文件都是没有被打开的文件&#xff0c;这些文件在哪保存&#xff1f;磁盘(SSD) OS要不要管理磁盘上的文件&#xff1f;(如何让OS快速定位一个文件) 要…

数据仓库与数据挖掘实验练习3-4(实验二2024.5.8)

练习3 1.简单文件操作练习 import pandas as pd # 读取文件 pd.read_csv(pokemon.csv) # 读取 CSV 文件的函数调用&#xff0c;它将文件中的数据加载到 DataFrame 中&#xff0c;并指定了 Pokemon 列作为索引列。 pd.read_csv(pokemon.csv,index_colPokemon)#查看类型 type(p…

React:Router-2. createBrowserRouter函数式

参考文档&#xff1a;ReactRouter官网 前边的文章 BrowserRouter组件式路由 提供了组件式路由的方式&#xff0c;在react-router6.4.0及以上版本&#xff0c;提供了 createBrowserRouter 函数式路由创建方式。 一、创建路由 1. 新建router.js文件&#xff0c;使用createBrow…

十二届蓝桥杯Python组1月中/高级试题 第五题

** 十二届蓝桥杯Python组1月中/高级试题 第五题 ** 第五题&#xff08;难度系数 5&#xff0c;35 个计分点&#xff09; 提示信息&#xff1a; 平均数&#xff1a;是指在一组数据中所有数据之和再除以这组数据的个数。 如&#xff1a;“1&#xff0c;2&#xff0c;3&#xf…

命令行方式将mysql数据库迁移到达梦数据库(全步骤)

因项目需求&#xff0c;需要将mysql数据库转换为国产达梦数据库&#xff0c;但由于安全问题&#xff0c;正式环境只能用命令行方式连接&#xff0c;下列是操作全步骤 目录 一、操作逻辑二、操作步骤1、本地安装达梦相关工具2、将服务器mysql导出到本地a) 服务器命令行导出mysql…

如何添加、编辑、调整WordPress菜单

我们最近在使用WordPress建站建设公司网站。我们是使用的hostease的主机产品建设的WordPress网站。在建设网站使用遇到了一些WordPress菜单使用方面的问题。好在hostease提供了不少帮助。 下面把WordPress菜单使用心得分享一下。 本文将详细介绍WordPress菜单的各种功能&#x…

音频录制软件有哪些?这2种推荐给你

音频在当今数字化世界中扮演着至关重要的角色。无论是音乐创作、语音记录、会议记录还是其他任何需要捕捉声音的场景&#xff0c;音频录制软件都是能为我们提供强大功能的工具。 那么到底哪一种软件才最适合您呢&#xff1f;下面小编将为您介绍2款音频录制软件。 方法一&#…

Ansys Mechanical|绳索仿真技术

绳索&#xff0c;俗称绳子&#xff0c;是通过扭或编等方式加强后&#xff0c;连成一定长度的纤维。其拉伸强度很好但没有压缩强度&#xff0c;可用来做连接、牵引的工具。绳索的用途数不胜数&#xff1a;从建筑中的材料固定、到岩土工程中的柔性锚索、汽车门窗的升降拉索、电缆…