linux 性能分析之内存分析(free,vmstat,top,ps,pmap等工具使用介绍)

news2024/9/23 3:26:10

引言

学生时代经常听到老师和同学说到学习 linux 的重要性。但是当时看到这个命令行界面就头疼,也就草草地应付学了一下,哎嘛,还是游戏香!

但是当前两天自己捣鼓服务器的时候,发现自己部署的一个服务总是崩溃,最终发现是服务器的内存不够了。

现在要查询问题原因又头疼了!害,只怪之前没有好好学习实践,该头疼还是会头疼,只不过是早晚的事儿。(咳咳,也奉劝后来者,若想要在从事相关领域,基础知识还是打打牢,内功心法多学一点总没错)。

今天这篇文章简单介绍一下 linux 系统中如何对内存进行分析。

常见的内存分析工具介绍

/proc/meminfo

cat /proc/meminfo

在这里插入图片描述

单词解释
MemTotal系统总内存,通常会比硬件内存要小一些,是由于 BIOS、内核等也会占用一定的内存。
MemFree系统空闲内存, 物理内存剩余。
MemAvailable应用程序可用内存,和 MemFree 的区别在于:MemFree 就是内存条剩余的空间,是系统层面的。而 MemAvailable 则是应用程序层面的,系统中有些内存虽然被使用了,但是有一部分是可以回收的,如:BuffersCached 等,当应用程序需要使用内存时,系统会主动释放这部分内存。
Buffers缓冲区内存
Cached缓存

free

free -h

free

单词解释
Mem行(第二行)内存的使用情况
Swap行(第三行)交换空间的使用情况。可以将其想象成 windows 的虚拟内存,当内存不足时,把一部分硬盘空间虚拟成内存使用。
total总可用物理内存。
used已使用的物理内存和交换空间。
free系统尚未使用的物理内存。
shared共享内存空间。
buff/cache列显示被 buffercache 使用的物理内存大小,这部分内存是当应用程序需要使用时系统可以主动释放的,通常将系统中经常使用的文件、块设备文件进行缓存。
available应用程序可用内存。
MemTotal = used + free + buff/cache

vmstat

vmstat 2 3 第一个参数代表隔几秒执行一次,第二个参数是执行多少次退出。若不给第二个参数,则会持续输出内容,需要 Ctrl+C 来退出。

在这里插入图片描述

单词解释
rProcs(进程),等待执行的任务数,即有多少进程在等待 cpu 执行任务,可用于分析 cpu,一般这个值不会大于 cpu 的个数,如果超过了,会出现 cpu 瓶颈
b有多少进程在等待 io
swpd正在使用虚拟内存的大小,单位 k
free空闲内存的大小
buff已用的 buff 大小,对块设备的读写进行缓冲
cache已用的 cache 大小,文件系统的 cache
si每秒从交换区写入内存的大小(单位:kb/s)
so每秒从内存写到交换区的大小
biio 分析,每秒读取的块数(读磁盘)
boio 分析,每秒写入的块数(写磁盘)
in每秒中断数,包括时钟中断(越小越好)
cs每秒上下文切换数(越小越好),值太大需要考虑降低进程或线程数目
us用户进程执行消耗 cpu 时间(user time),若是长期使用超过 50%,则需要考虑优化算法或者实施其他措施
sy系统进程消耗 cpu 时间(system time),该值过高,需要检查是什么导致的内核消耗的 cpu 资源多,需要优化。通常情况 us + sy 的参考值为
id空闲时间(包括 io 等待时间),一般来说 us+sy+id=100
wa等待 io 时间,wa 过高时,说明 io 等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

top

top 可以看到进程 PID,若发现失控的进程,可以找到对应的进程进行故障排除(kill)。

命令行交互,实时刷新展示数据,q 退出。

在这里插入图片描述

基于上面所讲述的,基本上都能看懂含义,下面的几个没见过的列一下。

单词解释
VIRTvirtual memory usage 虚拟内存占用大小
RESresident memory usage 实际内存占用
SHRshared memory 共享内存占用

ps

ps aux --sort=rssrss 正序排序。

在这里插入图片描述

top 差不多,就不详细解释了。

单词解释
%MEM进程占用物理内存的百分比
VSZ使用的虚拟内存大小
RSS进程使用物理内存大小,重点关注这个值

pmap

pmap -x pid 用于查看进程的内存映像信息,看哪些地方用了多少内存。

在这里插入图片描述
在这里插入图片描述

单词解释
Address占用内存的文件的内存起始地址
Kbytes占用内存的字节数
RSS实际占用内存大小
Dirty脏页大小
Mapping占用内存的文件,[anon] 为已分配的内存,[stack] 为程序堆栈

最后的 total 为统计的总值。通常当想看这个程序的内存消耗情况,可以只看最后一行,如下:

while true; do pmap -x pid | tail -1; sleep 1; done

在这里插入图片描述

总结

上述工具都是 linux 自带的,当然也有很多更高级的工具。实际工作中,挑自己用的顺手的用就行了,基本上用顺手了都能够定位问题。我一般的使用:

  • 只查看系统的内存使用情况:free -h ,很直观。
  • 分析进程内存占用: top/ps 都不错。
  • 深入分析: pmap

当然了,也可以在服务器安装运维管理面板,目前开源的项目也很多,直接通过图形化界面来查看更加方便。

所有的工具都是为了解决问题而使用的,不要为了使用工具而使用工具,本篇记录一下常用工具,也方便之后自己进行回顾,可以先大概了解工具都能做什么,真正需要用到的时候再详细去了解使用即可。

参考

  • linux内存管理(详解)
  • 一文掌握 Linux 性能分析之内存篇
  • Linux内存占用分析的几个方法,你知道几个?
  • 超全整理!Linux 性能分析工具汇总
  • Linux内存机制 Swap机制以及如何手动释放swap和内存

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

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

相关文章

使用VisualStudio制作上位机(一)

文章目录 使用VisualStudio制作上位机(一)写在前面第一部分:创建应用程序第二部分:GUI主界面设计使用VisualStudio制作上位机(一) Author:YAL 写在前面 1.达到什么目的呢 本文主要讲怎么通过Visual Studio 制作上位机,全文会以制作过程来介绍怎么做,不会去讲解具体…

一文读懂视频号下载

工具: 移动端抓包工具(以Stream为例)电脑端浏览器电脑端析包工具(以Charles为例)【可选项】 一、手机抓包 1 开启Stream 2 抓包 手机进入视频号,通过“搜索“的方式发送get请求,达到抓包的效…

强训第36天

C D C 193--1100 0001 194--1100 0010 196--1100 0100 198--1100 0110 能包括全部的且最小的为 1100 0xxx xxx为主机号,站三位 B MAC地址是绑定网卡的,全球唯一 D A C D IP网段 17为网络号 所以是 40.15.1aaa aaa(7位主机号).0 因为要划分2个子网 所以…

jmeter接口测试详解

前言 今天笔者呢,想给大家聊聊Jmeter接口测试流程详解,废话不多说直接进入正题。 同时,我也准备了一份自动化测试视频教程,需要的可以直接在下方观看,你也直接点击文末小卡片免费领取资料文档 视频教程观看处&#…

【赠书活动|第六期《强化学习:原理与Python实战》】

文章目录 RLHF是什么?RLHF适用于哪些任务?RLHF和其他构建奖励模型的方法相比有何优劣?什么样的人类反馈才是好的反馈RLHF算法有哪些类别,各有什么优缺点?RLHF采用人类反馈会带来哪些局限?如何降低人类反馈带…

C语言编写图形界面

文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW&#xff1b; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下&#xff1a; #include <windows.h>windows.h是 Windows 操作…

多维时序 | MATLAB实现SCNGO-BiGRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SCNGO-BiGRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SCNGO-BiGRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SCNGO-BiGRU-Attention多变量时间序列预测。 模型描述…

第三届人工智能与智能制造国际研讨会(AIIM 2023)

第三届人工智能与智能制造国际研讨会&#xff08;AIIM 2023&#xff09; The 3rd International Symposium on Artificial Intelligence and Intelligent Manufacturing 第三届人工智能与智能制造国际研讨会&#xff08;AIIM 2023&#xff09;将于2023年10月27-29日在成都召开…

GEE-PIE遥感大数据处理与典型案例实践技术应用

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

item_search_img-按图搜索淘宝商品(拍立淘)

一、接口参数说明&#xff1a; item_search_img-按图搜索淘宝商品&#xff08;拍立淘&#xff09;&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_search_img 名称类型必须描…

Ohio主题 - 创意组合和代理机构WordPress主题

Ohio主题是一个精心制作的多用途、简约、华丽、多功能的组合和创意展示主题&#xff0c;具有敏锐的用户体验&#xff0c;您需要构建一个现代且实用的网站&#xff0c;并开始销售您的产品和服务。它配备了最流行的WordPress页面构建器 WPBakery Page Builder&#xff08;以前称为…

三分钟解决AE缓存预览渲染错误、暂停、卡顿问题

一、清除RAM缓存&#xff08;内存&#xff09; 你应该做的第一件事是清除你的RAM。这将清除当前存储在内存中的所有临时缓存文件。要执行此操作&#xff0c;请导航到编辑>清除>所有内存。这将从头开始重置RAM缓存 二、清空磁盘缓存 您也可以尝试清空磁盘缓存。执行此操作…

渗透测试流程(含思维导图)

思维导图&#xff08;总纲&#xff09; 范围界定 在开始技术性安全评估之间&#xff0c;务必要观察、研究目标环境的被测范围。同时还要了解&#xff0c;这个范围牵扯多少个单位&#xff0c;是单个单位还是多个单位会参与到安全评估的工作中来&#xff0c;在范围界定阶段&#…

中国省域-经济高质量发展水平2000-2021年(数据+dofile+综合指数)

以中国31个省级行政单位&#xff08;不含港澳台&#xff09;为研究对象&#xff0c;测度中国省域经济高质量发展 中国省域经济高质量发展测度结果&#xff0c; 有助于分析各地区经济高质量发展的优势和短板&#xff0c; 为改善地区经济高质量发展提供参考价值 一、数据介绍 数…

乐鑫推出 ESP ZeroCode 控制台

乐鑫科技 ESP ZeroCode 控制台是一个网页应用&#xff0c;用户只需点击鼠标&#xff0c;描述想要创建的产品类型、功能及其硬件配置&#xff0c;即可按照自身需求&#xff0c;快速生成符合 Matter 认证的固件&#xff0c;并在硬件上进行试用。试用过程中&#xff0c;如有任何不…

C++11 新特性 ---- noexcept

1. 异常 异常通常用于处理逻辑上可能发生的错误 在C98中&#xff0c;提供了一套完善的异常处理机制&#xff0c;直接在程序中将各种类型的异常抛出&#xff0c;从而强制终止程序的运行。 1.1 基本语法 当函数抛出异常时&#xff0c;程序会停止执行&#xff0c;并显示异常信息…

【已解决】记 Vue3+SpringBoot 前后端分离项目部署时的一次跨域问题

问题背景是在一次部署开发环境时&#xff0c;由于是前后端分离项目&#xff08;前端Vue3&#xff0c;后端SpringBoot&#xff09;&#xff0c;SpringBoot 使用 Docker 部署&#xff0c;前端访问服务接口时出现跨域问题。 不知道什么是跨域问题的小伙伴可以查看另一篇文章&…

基于5G边缘网关的储能在线监测方案

近年以来&#xff0c;光伏、风力、水力发电等产业发展迅速&#xff0c;新能源在电力市场的占比持续增加&#xff0c;已经成为电力系统的重要组成部分。但由于光伏、风力、水力等发电方式存在天然的波动性&#xff0c;因此也需要配套储能、蓄能系统&#xff0c;保障新能源运行和…

EasyExcel工具 Java导出Excel表数据

EasyExcel 优点坐标依赖读Excel最简单的读的对象写Excel最简单的写的对象最简单的读的监听器填充Excel简单填充(对象)复杂填充(对象和列表)官网:https://easyexcel.opensource.alibaba.com/ EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。…

129.【Spring 注解_IOC】

Spring 注解_IOC容器 (一)、组件注册1. Configuration 与 Bean 容器注册组件(1).无注解注入方式(2).注解注入方式 2. ComponentScan 自动扫描组件和自动扫描规则(1).无注解扫描方式(2).注解扫描注入方式(3).指定扫描或不扫描的包 (过滤) 3. 自定义TypeFilter指定过滤规则 Filte…