Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位

这篇具有很好参考价值的文章主要介绍了Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:性能分析手段的应用场景

用于优化:

在程序编码完成后,我们通常要对自己编写的工具进行功能测试与性能分析。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

用于监控:

在观察某个系统的运行情况时,需要观察系统内多个中间件及组件的资源占用情况。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

用于测试:

在开启某个服务时,我们需要拥有对于该服务运行时资源占用的量化手段。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

在这些场景下,我我们需要一些调试手段帮我们量化进程对于系统资源的占用情况。

对于以上三种场景,有如下常用基本调试命令:

常用调试命令汇总

借助汇总角度的系统资源统计工具,我们可以快速清晰地定位进程的性能瓶颈是因为cpu太过密集还是io太慢,是因为内存不足或者是因为网络拥塞。

一般情况下,CPU大部分的时间片都是消耗在用户态和内核态上。

sys和user间的比例是相互影响的,%sys比例高意味着被测服务频繁的进行用户态和系统态之间的切换,会带来一定的CPU开销,这样分配处理业务的时间片就会较少,造成系统性能的下降。

对于IO密集型系统,无论是网络IO还是磁盘IO,一般都会产生大量的中断,从而导致%sys相对升高,其中磁盘IO密集型系统,对磁盘的读写需要占用大量的CPU,会导致%iowait的值一定比例的升高,所以当出现%iowait较高时,需排查是否存在大量的不合理的日志操作,或者频繁的数据载入等情况;

dstat

dstat是一个命令行工具,用于监控系统资源使用情况。它可以展示CPU、内存、磁盘I/O、网络流量等数据,帮助用户了解系统的整体运行情况。

下面是dstat命令默认情况下展示的内容:

CPU信息:包括CPU使用率、上下文切换次数、中断次数、软中断次数等。
内存信息:包括物理内存使用情况、交换空间使用情况等。
磁盘I/O信息:包括每秒读写速度、IOPS(每秒I/O操作数)等。
网络信息:包括发送/接收数据包数量、发送/接收速度等。
系统信息:包括每秒钟的进程创建数量、系统时间等。

此外,dstat还支持许多插件,可以展示更加详细的信息,例如TCP连接数量、磁盘空间使用情况、进程状态等。用户可以通过指定插件名称或缩写来启用相应的插件。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

上图显示了cpu使用情况,磁盘io情况,网络发包情况和换页情况,输出是彩色的,可读性较强,相对于vmstat和iostat的输入更加详细且较为直观。

相关视频推荐

c/c++程序员进个大厂很难吗?来看看这套腾讯T9认证的C++后端开发技术(数据结构、网络编程、网络原理、中间件、开源框架、云原生、分布式)https://www.bilibili.com/video/BV1cP4y1k7xt/

Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)

需要C/C++ Linux服务器架构师学习资料加qun812855908获取(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

pidstat

pidstat展示了各个进程或使用-e 指定进程的系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

列名

功能

列名 功能
PID:进程ID号。

%usr

进程在用户态下所占用CPU的时间百分比。即进程在执行用户程序时,所占用的CPU时间百分比。

%system

进程在内核态下所占用CPU的时间百分比。即进程在执行内核中的系统调用、等待I/O操作时所占用的CPU时间百分比。

%guest

虚拟机(VM)上运行的客户机操作系统所消耗的CPU时间百分比。通俗来说,就是虚拟机中运行的程序所占用的CPU时间百分比。

%CPU

进程占用的CPU总时间百分比(包括用户态和内核态),这个值可能会超过100%,因为它是根据CPU核心数量计算的。

CPU

处理器编号,如果系统只有一个CPU,则该值始终为0。

Command

进程名字。

注意:以上数据中的“%”表示占用率百分比。

top

top 命令的汇总区域显示了五个方面的系统性能信息:负载、进程状态、cpu使用率、内存使用、交换分区。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

top是大家常用的系统信息查看命令,号称linux的任务管理器。他展示的内容有

1.任务计数:包括任务总数,运行中任务计数,休眠任务计数,终止任务计数,僵尸任务计数等。

2.%Cpu(s):CPU使用情况统计,包括:

用户态进程占用CPU的时间百分比(us)

内核态进程占用CPU的时间百分比(sy)

优先级调整占用CPU的时间百分比(ni)

空闲状态占用CPU的时间百分比(id)

等待I/O操作占用CPU的时间百分比(wa)

硬件中断占用CPU的时间百分比(hi)

软件中断占用CPU的时间百分比(si)

以及虚拟化占用CPU的时间百分比(st)

3.KiB Mem:内存使用情况统计,包括总内存大小、空闲内存大小、已使用内存大小和缓存大小等信息。

4.KiB Swap:交换分区使用情况统计,包括总交换分区大小、空闲交换分区大小和已使用交换分区大小等信息。

列名

功能

PID

进程号。

USER

进程所有者的用户名。

PR

进程优先级。

NI

进程优先级数值(nice值),负值表示高优先级,正值表示低优先级。

VIRT

进程使用的虚拟内存大小。

RES

进程正在使用或保留的物理内存大小。

SHR

进程正在使用的共享内存大小。

S

进程的状态。其中,D表示不可中断的休眠状态,R表示可中断的休眠状态,S表示睡眠状态,T表示停止状态,Z表示僵尸状态。

%CPU

进程占用CPU时间百分比。

%MEM

进程使用的物理内存百分比。

TIME+

进程使用CPU时间的累积值。

COMMAND

进程命令名称或命令行参数。

top运行过程中可以使用数字键1(非小键盘),查看cpu占用信息

同时推荐一款iotop LINUX进程实时监控工具,界面风格类似top命令

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

以及htop:

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

ps

ps命令是Linux操作系统中的一个常用命令,用于显示当前运行进程的状态和信息。在Linux中,每个进程都有一个唯一的进程ID(PID),并且可以根据进程的状态来进行分类。

直接执行显示当前进程的状态:

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

下面是一些ps命令的常用选项和参数,可以配合grep进行具体进程信息查看:

  1. ps -ef:列出系统上所有运行的进程的详细信息。

  2. ps aux:与“ps -ef”相似,但使用Unix风格的选项语法。

  3. ps -auxf:以树状结构显示进程之间的关系。

  4. ps -u username:只列出特定用户运行的进程。

  5. ps -aux | grep keyword:搜索包含关键字的进程。

strace

跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

ltrace

A library call tracer 跟踪进程调用库函数的情况

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

lsof

lsof是"list open files"的缩写,用于列出当前系统打开的文件(包括网络连接、设备、管道等)。 常用选项:

-i:列出所有网络连接
-c:根据进程名筛选
-p:根据进程ID筛选
-u:根据用户ID筛选

有以下几个比较好用的选项

列出某个端口的网络连接:lsof -i:PORT
列出某个应用程序使用的文件:lsof -c APPNAME
列出某个目录下所有打开的文件:lsof +D  DIRECTORY

perf

perf 是Linux kernel自带的系统性能优化工具。优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature,用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。

最主要的功能是用来查看某个cpu在执行某函数消耗的性能百分比,结合线程cpu绑核可以清晰地量化某个线程的性能损耗;

sar

sar命令是一个性能分析工具,可以通过收集系统的各种统计数据,如CPU利用率、内存使用情况、磁盘活动等来监测系统的运行状态。sar命令可用于实时监控和历史记录,还可以生成报告以便更深入地分析数据。

-u:显示CPU的使用情况
-r:显示内存的使用情况
-d:显示磁盘的活动情况
-n:显示网络的使用情况
-p:显示进程的活动情况

如每隔1秒钟收集一次网络中tcp使用情况并显示在屏幕上。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

如果想使用更专业的性能测试工具,可以使用sysbench,sysbench是一个模块化、跨平台、多线程基准测试工具,可用于以下性能测试:

CPU性能
磁盘IO性能
调度程序性能
内存分配及传输速度
POSIX线程性能
数据库性能(OLTP基准测试)

Linux CPU使用率主要是从以下几个维度进行统计:

%usr:普通进程在用户模下下执行的时间;
%sys:进程在内核模式下的执行时间;
%nice:被提高优先级的进程在用户模式下的执行时间;
%idle:空闲时间。
%iowait:等待I/O完成的时间。
%irp:处理硬中断请求花费的时间。
%soft:处理软中断请求花费的时间。
%steal:是衡量虚拟机CPU的指标,是指分配给本虚拟机的时间片被同一宿主机别的虚拟机占用,一般%steal值较高时,说明宿主机的资源使用已达到瓶颈;

以下是针对性更强的命令,也许展示的信息不是那么全面,但是当我们通过上述命令定位到问题,只关心某一方面系统参数时,以下命令更为合适。

CPU

uptime

uptime 能够打印系统总共运行了多长时间和系统的平均负载,uptime命令最后输出的三个数字的含义分别是1分钟,5分钟,15分钟内系统的平均负荷;

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

内存

free:

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

列名

内容 ,单位为KB

total

内存容量总大小

used

已使用的内存总量

free

空闲内存的大小

shared

多个进程共享的内存总量

buff/cache

缓冲区占用的内存量,通常被看作是空闲内存,因为它们都是在内存中缓存数据,以便更快地访问它们。

available

可用的内存

交换/swap

交换区的占用情况,如果swap中存在used,并且持续增长或变动,说明内存空间不足,操作系统需要频繁地从硬盘中做内存映射,维护内存空间的上下文换入换出,这会很大程度上影响系统性能

vmstat

vmstat是一个虚拟内存统计工具,用于监测系统的虚拟内存状态和进程活动情况。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

vmstat:VirtualMeomoryStatistics,虚拟内存统计。显示的信息包括:

列名

内容

procs

包括运行队列的进程数(r)和处于中断状态的进程数(b)

memory

包括物理内存(swpd)、空闲内存(free)、缓存(buffs)和被占用的缓存(cache)

swap

包括交换空间使用量(si(swap in) 和 so(swap out)),si和so分别表示从磁盘读入和写出到磁盘的数据大小

io

包括硬盘IO(bi 和 bo),bi和bo表示每秒钟读取和写入块的数量

system

包括CPU使用率(%sys 和 %user)和上下文切换次数(ctxt)。

cpu

包括CPU使用率(idle、system、user、iowait和irq),us、sy、id、wa和irq分别表示用户进程、系统进程、空闲CPU时间、等待IO操作和处理硬件中断的CPU时间百分比。

磁盘

iostat

iostat -x 用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

CPU部分

介绍

user

用户级别进程使用CPU的百分比

nice

低优先级进程使用CPU的百分比

system

内核级别进程使用CPU的百分比

iowait

等待I/O操作完成时CPU处于空闲状态的百分比

steal

如果主机是虚拟化的并且其他虚拟机需要更多资源,那么此字段表示互相抢夺CPU的百分比

idle

CPU处于空闲状态的百分比

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

网络

ping

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

ping命令为用户提供基于icmp的网络探测服务,可用来快速查看某ip或域名是否可达。

netstat

netstat:用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于和grep配合检验本机各端口的网络连接情况。

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优

tcpdump

tcpdump是一个网络数据包分析工具,可以捕获和解析从网络中传输的数据包,也是网工从业者的好帮手。 基本语法:

tcpdump [options] [expression]

参数说明:

-i:指定要监听的网络接口,如eth0。
-n:不进行DNS反向查询,直接显示IP地址。
-A:以ASCII文本形式显示数据包内容。
-X:以16进制和ASCII文本混合形式显示数据包内容。
-q:快速模式,只显示关键信息,不输出详细信息。
-c:指定要捕获的数据包数量。
-s:指定要捕获的数据包长度。
-v:详细模式,显示更为详细的信息。
-vv:非常详细模式,显示更为详细的信息。
-w:将捕获到的数据包保存到文件中。
-r:读取保存在文件中的数据包。

表达式说明:

tcpdump支持使用表达式来过滤数据包。表达式可以根据协议类型、数据包来源和目标、端口号等条件来进行过滤。常见表达式如下:

host:指定数据包的来源或目标主机。
net:指定数据包的来源或目标网络。
port:指定数据包的源或目标端口。
tcp、udp、icmp:指定数据包的协议类型。
and、or、not:逻辑运算符,用于组合表达式。
dst、src:指定数据包的目标或来源地址。

比如从ens33网卡捕获80端口,ip为本机的包,限制12帧并落地为dump.pcap文件,也可以从某个pcap包读取帧;

Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位,linux,网络,linux开发,操作系统,性能调优文章来源地址https://www.toymoban.com/news/detail-800114.html

到了这里,关于Linux系统资源分析手段:CPU,内存,磁盘与网络IO的瓶颈定位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】查看系统各种信息的常用命令 (CPU、内存、进程、网口、磁盘、硬件、等等)

    Linux是一种开源的类Unix操作系统,它有很多不同的发行版,如Ubuntu、CentOS、Debian等。Linux系统提供了很多命令行工具,可以让用户方便地查看和管理系统的各种信息,如硬件配置、内存使用、进程状态、网络连接等。本文将介绍一些常用的命令,以及它们的用法和示例。 使用

    2024年02月15日
    浏览(50)
  • Jmeter性能指标监控:CPU、内存、磁盘、网络

    jmeter版本:jmeter5.1.1 插件资源(可自己官网下载或从以下网盘中获取): 链接:https://pan.baidu.com/s/1vBr85BLuhhENrnWrFTDGhg 提取码:ywr4 获取插件的最简单方法是安装Plugins Manager,然后只需在Jmeter中单击复选框即可安装任何其他插件。 1)下载 jmeter-plugins-manager-1.3.jar文件 下载地址:

    2024年02月08日
    浏览(42)
  • Linux性能基础:CPU、内存、磁盘等概述

    目录 1. CPU 1.1. CPU常见品牌 1.2. CPU性能概述 ① CPU主频 ② CPU位数 ③ CPU缓存指令集 ④ CPU核心数 ⑤ IPC 1.3. 上下文切换 1.4. 进程与线程 ① 进程 ② 线程 2. 内存 2.1. 内存主频 2.2. 内存带宽 2.3. 内存分类 2.4. 内存的分配 2.5. 内存的回收 2.6. 内存泄漏 3. 磁盘 3.1. 磁盘的构成 3.2. 磁盘

    2023年04月11日
    浏览(43)
  • CentOS查看CPU、内存、网络流量和磁盘 I/O

    安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s: 每秒读扇区数。即 delta(rsect)/s wsec/s: 每秒写

    2024年02月10日
    浏览(35)
  • 【云计算与虚拟化】第五章 实验一 vCenter Server的高级功能—vMotion、虚拟内存、虚拟CPU、磁盘分配及资源池

    实验一    vCenter Server的高级功能—vMotion、虚拟内存、虚拟CPU、磁盘分配及资源池 1.通过vSphere client 客户端登陆vCenter服务器 (1)再次新建一个共享存储,iSCSI类型的,大小60G,名称为iSCSI-2。 (2)将运行在ESXi01主机上的虚拟机,在关机的状态下,数据存储位置不动,运行的

    2024年02月04日
    浏览(51)
  • Linux命令_stress & 快速模拟CPU、内存、磁盘消耗

    ping的安装命令:apt-get install -y inetutils-ping 会遇到Unable to locate package inetutils-ping问题 正确的操作是: ** 这时候需要敲:apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。** ** 等更新完毕以后再敲命

    2024年02月04日
    浏览(48)
  • (mac)Prometheus监控之Node_exporter(CPU、内存、磁盘、网络等)

    1.启动 Prometheus 普罗米修斯  浏览器访问  http://localhost:9090/targets  2.启动Node_exporter  访问: http://localhost:9100    3.启动grafana 访问 http://localhost: 3000  4.添加数据源 5.查看Dashboard   普罗米修斯是后端数据监控平台,通过Node_exporter收集数据,Grafana将数据用图形的方式展示出来

    2024年04月26日
    浏览(47)
  • Linux 查看占用资源cpu、内存最大的进程命令

    1、详细查询命令: 查看cpu最大进程,或者内存最大进程。 命令解析:该命令组合实际上是下面两句命令组合。 其中: 以上组合获得cpu或者内存最大的进程。 2、简单查询命令: 根据以上,也可以简化命令为 命令: 按下交互命令快捷键M(按内存排序),P(按cpu占用排序)

    2024年02月11日
    浏览(64)
  • Java 使用 oshi 获取当前服务硬件信息(操作系统、CPU、内存、磁盘)

    这里需要引入两个依赖包: HardWareUtil: CpuInfo: JvmInfo: MemoryInfo: SysFile: SystemDetails: SizeEnum: 控制台输出: CpuInfo(cpuNum=16, total=16501.0, sys=329.0, used=657.0, wait=0.0, free=15419.0) JvmInfo(total=2.64241152E8, max=4.211081216E9, free=2.5297664E8, version=11.0.18, home=C:Program FilesJavajdk-11) SystemDetails(

    2024年02月05日
    浏览(58)
  • prometheus使用node_exporter监控Linux主机CPU、内存、磁盘、服务运行状况

    目录 1.node_exporter简介 2.部署node_exporter 2.1.安装node_exporter 2.2.编写system启动脚本 3.prometheus监控Linux主机 3.1.修改配置文件增加主机节点 3.2.主机添加成功 4.监控Linux主机CPU、内存、磁盘使用率 4.1.监控CPU使用率 4.1.1.获取空闲CPU监控数据 4.1.2.获取5分钟内的监控数据 4.1.3.获取5分钟

    2024年04月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包