top free命令真的能得到实际内存使用状况吗?

top详解--查看cpu及内存使用情况 free top 阅读详情

一.关于Virtual Memory 
参考:http://serverfault.com/questions/138427/top-what-does-virtual-memory-size-mean-linux-ubuntu 
这里写图片描述
虚拟内存往往是在线程在内存中映射了一个很大的文件,而这个文件存储在磁盘上,也需要占用一个很大的地址空间,交换区的问题撇开不谈。 
这里写图片描述
而RES内存才是线程真正占用的内存* 
这里写图片描述
最准确的,首先要排除其他线程的内存动态大幅变化的前提下,启动线程,记录free memory掉的情况,vmstat和free命令都可以 
VIRT字段的man page:

o: VIRT  --  Virtual Image (kb)
      The  total  amount  of  virtual  memory  used  by the task.  It
      includes all code, data and shared libraries  plus  pages  that
      have been swapped out.

      VIRT = SWAP + RES.​
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

所以它是一个统计数据 
参考:http://serverfault.com/questions/122810/apache-heavy-load-virt-vs-res-memory 
VIRT在实时内存的衡量上,几乎是不需要考虑的 
二.关于Used Memory 
案例: 
参考http://stackoverflow.com/questions/4802481/how-to-see-top-processes-by-actual-memory-usage

这里写图片描述
这里存在一个问题,free命令或者top标题部分显示的used统计数据,和top标题下面的部分的详细进程的RES的累加, 
差别很大,used远大于RES的累加和 
还有一个问题,就是进城的真实占用内存,top命令显示的是不是偏少? 
三.尝试 
我们将之前消耗内存很严重的协处理器程序,让他跑起来,监控86机器(87,88,89的free memory太少,数据变化很快稳定,不易观察),在运行脚本前后,通过free -m命令和top命令监控内存变化情况: 
这里写图片描述 
|| 
|| 
\/ 
这里写图片描述 
可见,脚本运行16分钟后,86机器: 
free memory: 37.4G —> 29.3G 
HRegionserver:RES 2.1G —> 2.1G VIRT 3428m —> 3455m 
关闭脚本一段时间: 
这里写图片描述 
86机器: 
free memory: 37.4g —> 29.3g —> 29.2g 
HRegionserver:RES 2.1g —> 2.1g —> 2.2g VIRT 3428m —> 3455m —> 3610m 
可见,free memory掉了8个G,但是top命令得到的HRegionserver等process的RES并没有明显增加! 
仔细观察top结果(按照m排序)中,各个process的RES都没有大的变化,其实top下面的关于process的各项指标几乎都变化不大! 
但是,我们观察到; swap部分: 
swap cached:21.7g —> 29.8g —> 29.8g 
正好cache占用增加了8个G 
然后,我们参考: 
这里写图片描述
总结来说,就是Linux系统并不是简单的将内存分配给各个process,它还进行了一层内存管理 
第一.访问文件的文件数据,系统会缓存起来,以便以后访问,就是所说的命中内存页类似的原理, 
这部分的文件缓存的处理,直接体现在swap cached统计数据里面,也体现在VIRT Memory里面,两个都是统计数据,只增不减,跟process实际占用的内存不直接相关 
我们再使用smem工具分析内存的消耗: 
这里写图片描述
=====||||||||===== 
====\\\//////==== 
这里写图片描述
SMEM工具的右边三列是USS PSS RSS 
free memory: 29.0g —> 20.2g 
而smem显示的habse 114605 process占用的USS稳定而且还下降了,VIRT内存不变,swap cache上涨了8个g 
可见我们的process做了很多文件方面的读写活动,导致系统将内存分配出去缓存这些内容,成为了“被浪费”的used memory,这部分内存需要Linux系统去回收 
四.问题的进一步解答 
top命令显示的线程实际内存占用是RES这一指标,但是所有线程的RES数之和与used memeory差别很大(至少是两倍多)? 
参考:http://serverfault.com/questions/377617/how-to-interpret-output-from-linux-top-command 
这里写图片描述 
这里写图片描述
这里写图片描述
总结就是 : 
(一):used这个统计量,并不是用户线程占用内存之和,而是Linux系统总共消耗的内存,用户线程是“寄生”于Linux OS之上的; 
(二):对于free统计量,是“干净的”可以直接分配的内存,但是cached和buffered这两种状态的内存,主要是映射到磁盘的缓冲,也能够被继续分配 
(三):真正被使用的内存real free memory = used - buffers - cached;真正可用的内存real free memory = total - real free memory




文章转自:http://blog.youkuaiyun.com/cmdssd1/article/details/51841255

中小公司无线组网实战:用一台H3C AC和普通三层交换,实现办公网AP统一管理 本文详细介绍了中小型企业如何利用H3C AC控制器与普通三层交换机实现无线AP统一管理的实战方案。通过VLAN规划、DHCP配置和AC控制器设置,构建经济高效的办公网络,解决信号覆盖和连接稳定性问题,特别适合50-200人规模的企业部署。 阅读详情

相关推荐

Python RPA 流程自动化快速上手

Python RPA 流程自动化快速上手

看花容易绣花难 1万+

linux top命令看到的实存(RES)与虚存(VIRT)分析

近期在公司中解决程序使用的内存高问题,将一部分之前无法回收的内存进行了回收,实现降内存效果(降实存)。 在统计效果时, QA问是统计RES(实存)还是VIRT(虚存)。 在网上学习看了一些博客,这里自己总结一下RES和VIRT的区别。 1. 概念 VIRT: 1 2 3 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等; 2、假如进程新申请10MB的内存,但实际只使用了1MB,那

小猪打呼噜 9574

智能车赛道识别:八邻域算法的实战解析与优化

本文深入解析了智能车赛道识别中八邻域算法的核心原理与实战优化。作为兼顾性能与稳定性的经典方案,该算法通过模拟探险家环顾八方的策略,能精准追踪弯道与直道边界。文章详细拆解了代码逻辑,并提供了边界平滑、异常处理及应对十字路口、环岛等复杂场景的关键优化策略,助力开发者提升智能车视觉系统的鲁棒性与实时性。

weixin_29228781的博客 261

真正看懂TOP的进程内存(VIRT、RES、SHR)

私有内存与共享内存实验,看懂TOP的进程内存结果

InternalsOf 1万+

UCOS-III 系统移植

UCOSIII系统移植到GD32F303详细过程 工程代码:https://github.com/jslaobing/techIot_ucosiii_porting

TechIoT - 探索物联网与嵌入式系统 2086

Hyper-V显卡直通实战:手把手解决Windows 11虚拟机错误码43(附完整参数配置)

本文详细解析了在Windows 11 Hyper-V虚拟机中配置显卡直通时遭遇错误码43的根源,并提供了从环境检查、核心PowerShell命令(如Set-VMGpuPartitionAdapter)配置到虚拟机内驱动替换的完整实战解决方案,帮助用户彻底解决显卡驱动无法加载的问题。

weixin_29238147的博客 895

linux 查看内存不准确,为什么linux下用top统计出来的进程内存不准确

Understanding memory usage on LinuxThis entry is for those people who have ever wondered, "Why the hell is a simple KDE text editor taking up 25 megabytes of memory?" Many people are led to believe th...

weixin_34954140的博客 804

【飞控】MATLAB中UAV Toolbox Support Package for PX4 Autopilots和Pixhawk Pilot Support Package (PSP) 的关系?

区分UAV Toolbox Support Package for PX4 Autopilots和Pixhawk Pilot Support Package (PSP)

m0_58373406的博客 738

top命令VIRT,RES,SHR,DATA

linux top命令VIRT,RES,SHR,DATA的含义VIRT:virtual memory usage 虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量3、VIRT = SWAP + RESRES:resident memory usage 常驻内存1、进程当前使用的内存大...

赵英超的博客 3292

【PCIe DL_Feature详解】

   Data Link Control and Management State Machine在PCIe Gen4引入了DL_Feature这个状态,该状态主要用来协商PCIe link 两端是否支持新的DL Feature,目前为止DL Feature只引入了Scaled Flow Control 来提高Gen4及以上的效率。   DL_Feature 这个状态是可选的,当 Data Link Feature Extended Capability中Data Link Feature Exchang

sinat_38294441的博客 3233

【Python爬虫系列】_005.浏览器开发者工具(详解)

Elements(元素)分析当前页面节点,用来辅助书写BS或者XPath这里面的数据与源代码有区别,不一定准确(避坑)Console(控制台)这个除了查看错误信息、打印调试信息(console.log())、写一些测试脚本以外,还可以当作Javascript API查看用例如我想查看console都有哪些方法和属性,我可以直接在Console中输入"console"并执行后续学js逆向的时候需要用到Sources(源代码)与在网页页面,鼠标右键——查看网页源代码 内容一致。

weixin_50296259的博客 422

Linux实际内存使用计算

Linux实际内存使用情况计算 通常我们看到Linux用top命令查看系统运行状况,普遍看到Used Memory占到了将近总内存的90%,然后很多人以为系统内存已经不足。其实,这只是Linux的为了提高文件读取的性能的内存使用机制罢了。不同于Windows,windows程序执行完后,会马上释放掉内存,把Memory降下来。而对于Linux,如果你的服务器内存还有足够多的空间的话,...

"其实我是一演员"的专栏 1万+

java零基础从入门到精通(全)

目录前言1. 入门知识1.1 java体系1.2 JDK/JRE/JVM区别1.3 编译与运行理解1.4 类体函数细节2. 标识符 前言 java优势 健壮性(JVM(C++语言写的一个虚拟的计算机)、GC(垃圾回收机制)) 多线程并发 可移植性/跨平台 1. 入门知识 1.1 java体系 JavaSE:标准版 JavaEE:企业版 JavaME:微型版 1.2 JDK/JRE/JVM区别 JVM是不能独立安装的。 JRE和JDK都是可以独立安装的 层层嵌套,jvm包括jdk,jdk包括jre

码农研究僧的博客 6万+

top与free命令详解

在运维面试中top命令被问到的频率相较于其他命令是比较高的,因为top对运维人员来说太重要了,不仅可以用来查看进程信息、CPU、内存、系统状态等等。运维人员可以据此来进行对系统的维护。

此后如竟没有炬火,我便是唯一的光。 6550

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

会用top与free命令查看linux服务器内存使用情况

会用top与free命令查看linux服务器内存使用情况;top、free命令使用。

sinat_33918956的博客 3861

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

linux常用操作指令—— 查看磁盘、内存使用情况(df、du、free、top)

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。当文件系统也确定删除了该文件后,这时候du与df就一致了。实例4:显示目前磁盘空间和使用情况 (最常用)top:“实时查看” ,按。退出 (实时动态显示)

qq_43842093的博客 2万+

Linux下free和top命令详解

Linux top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 第一行,任务队列信息,同 uptime 命令的执行结果 系统时间:07:27:05 运行时间:up 1:57 min, 当前登录用户: 3 user 负载均衡(uptime) load average: 0.00, 0.00, 0.00 average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。 load avera...

hhj13978064496的博客 3548

linux常用操作指令2—— 查看磁盘、内存使用情况(df、du、free、top)

查看磁盘、内存使用情况查看磁盘、内存使用情况1、df 显示磁盘分区上可以使用的磁盘空间2、du 显示每个文件和目录的磁盘使用空间2.1、Linux du命令和df命令区别3、free 显示内存使用情况4、使用top命令监控系统进程参考 查看磁盘、内存使用情况 1、df 显示磁盘分区上可以使用的磁盘空间 显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以

JMW1407的博客 2万+

top命令+free命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。退出 top 的命令为 q (在 top 运行中敲 q 键一次) 可以选择按进程查看或者按用户查看,如想查看pso用户的进程内存使用情况: [pso@10.120.64.173 A22-15-10.120.64.173]: /app/tomcat-callcenter2.0 0> top -u pso

娜娜的专栏 4366

Linux查看CPU和内存使用情况(top mpstat pmap free ps命令使用)

在linux系统中,一般使用系统自带的top和mpstat命令查看CPU的性能和使用情况,使用free和pmap命令查看系统的内存使用情况。这里就这几个命令的使用做详细的介绍。 top命令 在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU ............

Biao 1万+

linux之top、ps、free命令详解

运行top命令后,CPU使用状态会以全屏的方式显示,并且会处在对话的模式,退出top的命令为q,即在top运行中敲q健。ps命令用于报告当前系统的进程状态,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。在linux系统中,经常会需要查看系统资源的使用情况进行分析,下面对top、ps、free命令的使用进行详解。free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

ldcaws的专栏 3068

kubectl top输出与Linux free命令不一致原因?

命令的视角和数据来源不同:前者是从 Kubernetes 资源的视角聚焦于容器和 Pod 的资源使用,后者则从操作系统的视角展示整个节点的内存使用情况。Kubernetes 计算的内存使用量通常是指容器使用的 RSS(Resident Set Size),即容器实际占用的物理内存部分,不包括 Swap。它反映的是操作系统的视角下整个节点的内存使用情况,包括所有进程、缓存、缓冲区等。不会显示与系统缓存和缓冲区相关的内存使用,因为这些属于操作系统管理的资源,而不是单个容器的资源。只显示分配给容器的内存。

运维老生常谈 1305

Linux系统命令Top/free的使用及参数详解

1.作用   top命令用来显示执行中的程序进程,使用权限是所有用户。   2.格式   top [-] [d delay] [q] [c] [S] [s] [i] [n]   3.主要参数   d:指定更新的间隔,以秒计算。   q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。   c:显示进程完整的路径与

zjl410091917的专栏 1008

Linux常用命令之系统性能 top、free、df、sar、kill、ps

1、top命名 top命令经常用来监控Linux的系统状况,比如cpu、内存的使用。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;...

weixin_40584261的博客 2460

linux查看内存使用情况top详解

1. top命令: 输入命令: top 输出内容展示: 内容分析: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NI:进程Nice值,代表这个进程的优先值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态 %CPU:进程占用CPU的使用 %MEM:进程使用的物理内存和总内存的百分 TIME+:该

qq_36365520的博客 1万+

Linux top free命令学习笔记

直接查看man top 或者man free即可查看其更详细的使用,这里简单介绍一下基本功能及输出。free 用来显示所有可用及已经使用的系统内存数,包括物理内存总数及使用量、交换区、buffer、共享内存等,其参数及含义如下:使用格式: free [-b | -k | -m | -g] [-o] [-s delay ] [-t] [-V]-b -k -m -g这四个是输出单位参数,分别表示输出数值的单位为BYTE、KB、MB及GB-t显示汇总行total-o不显示+/-buffers行-V显示版本号-s刷

zhangren07的专栏 1972
上一篇: Qt读取中文文本,兼容GBK&&UTF-8
下一篇: ubuntu install bycompard
鱼公子哟西
博客等级 码龄14年 17粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值