Linux 中的内存使用率计算方式
背景介绍
在工作中处理问题的时候,遇到一个问题,自己根据 top 命令时查看到的 used 和 total 计算出来的内存使用率已经达到 90% 以上了,但是系统自带的监控软件计算出来的使用率往往没有这么高。在网上查询了一些文章,说应该使用 free 命令,top 命令显示的结果不太准确,因此决定将自己的学习过程记录一下。
小知识
Linux 的显示命令中有 free 和 available 两种表示空闲的内存,它们之间的区别如下:free 表示这部分内存没有被用来做任何事情,available 表示这边部分内存可以被应用程序申请使用。
freee 命令
free 命令的显示结果实际上是从文件 /proc/meminfo 中读取的,默认的显示结果如下图所示:
Linux 中为了加快系统的运行速度,往往会使用缓存的机制。这里的buffers 和 cached 就是操作系统为了加快运行速度使用到的内存,这部分内存不是某个进程申请的。当需要新启动一个程序时,而程序申请的内存又比较大时,这两部分的内存时可以释放出来给当前这个程序使用的。因此实际系统当前空闲,可供新的程序申请使用的应该是第二行显示的空闲内存。
top 命令
有了上面free命令的显示结果介绍,也就明白了为什么根据 top 命令显示的 used 和 total 计算出来的内存使用率不准确,因为这里的 used 并没有除去 buffers 和 cached 使用的这部分内存,而这部分内存实际上是可以释放出来给程序使用的。
参考
[1] : free(1) - Linux manual page (man7.org)
[2] : linux - Meaning of the buffers/cache line in the output of free - Server Fault
[3] : top(1) - Linux manual page (man7.org)
[4] : Free vs. Available Memory in Linux
Linux 中的内存使用率计算方式的更多相关文章
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- [转]Linux中进程内存与cgroup内存的统计
From: http://hustcat.github.io/about/ Linux中进程内存与cgroup内存的统计 在Linux内核,对于进程的内存使用与Cgroup的内存使用统计有一些相同和不 ...
- linux中tomcat内存溢出解决办法
用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...
- linux中tomcat内存溢出
刚开始测试服务器与线上后台都不能上传10分钟以上的视频,后来只要是视频就不能上传,进入服务器查日志得到如下错误: Caused by: java.lang.OutOfMemoryError: Java ...
- 查看linux中swap内存的相关参数
内容主要来源于:linux的内存回收和交换 各项命令查看的linux环境是:Linux SUSE-33 2.6.32.12-0.7-defaul zone? 内存管理的相关逻辑都是以zone为单位的, ...
- 转:Linux中的内存管理
前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...
- Linux中检查内存使用情况的命令
Linux操作系统包含大量工具,所有这些工具都可以帮助您管理系统.从简单的文件和目录工具到非常复杂的安全命令,在Linux上没有太多不能做的事情.而且,虽然普通桌面用户可能不需要在命令行熟悉这些工具, ...
- mysql中TPS, QPS 的计算方式
今天突然有个同事问题一个问题, mysqlTPS和QPS的计算公式是什么? 以前确实也没有关注过这个计算公式,所以查了下学习了下: 下面是参考内容. 在做db基准测试的时候,qps,tps 是衡量数 ...
- Linux中Cache内存占用过高解决办法
在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显 ...
- linux内存使用计算方式
Linux开机后,使用top命令查看,4G物理内存发现已使用的多大3.2G,占用率高达80%以上: Mem: 3889836k total, 3341868k used, 547968k free, ...
随机推荐
- uniapp电子签名盖章实现详解
项目开发中用到了电子签名.签好名的图片需要手动实现横竖屏旋转.并将绘制的签名图片放到pdf转换后的base64的图片上,可以手动拖动签名到合适的位置,最后合成签名和合同图片并导出.和以往一样,先发一下 ...
- 一图为你揭秘云数据库GaussDB管理平台亮点
云数据库GaussDB管理平台(TPOPS)是一款即开即用.稳定可靠.管理便捷的数据库运维管理平台.通过该平台,用户可以快速部署安装GauSSDB,实现智能化运维,大幅度提升运维和管理效率.一图带你揭 ...
- 云原生周刊:K8s 1.26 到 1.29 版本的更新 | 2024.1.29
开源项目推荐 Skaffold Skaffold 是一个命令行工具,有助于 Kubernetes 应用程序的持续开发.您可以在本地迭代应用程序源代码,然后部署到本地或远程 Kubernetes 集群. ...
- Kubernetes 新型容器逃逸漏洞预警
作者:米开朗基杨,KubeSphere 布道师,云原生重度感染者 2022 年 1 月 18 日,Linux 维护人员和供应商在 Linux 内核(5.1-rc1+)文件系统上下文功能的 legacy ...
- Eclipse中缓存清理
(1)点击tomcat服务器,右键"clean-": (2)删除servers的tomcat服务器下的项目: 控制台显示"Servers窗口":菜单栏--Win ...
- Solution of CF1842C
Brief description of the title 若 \(a_i=a_j\) 且 \(1\le i < j\le |a|\).则删除 \(a_{i}\) 到 \(a_j\) 所有数. ...
- Iterator和Iterable
Java遍历List有三种方式 public static void main(String[] args) { List<String> list = new ArrayList< ...
- ToDesk云电脑手机也能玩?安卓系统已上线!
近日,ToDesk云电脑首次发布移动端!这次云电脑将安卓和iOS双系统都安排上了,基本照顾到所有移动端的用户.并且性能也保持了电脑版的高配置,价格还是那么优惠. 我用了一次都有点不想退出了,用来打游戏 ...
- My SQL 列转行操作
原表结构如下,我们可以发现,"日运输量"和"车次"是在同一张表中相互独立的两个字段,即独立的两列数据,下面,我将系统中的测试数据以及代码全部放出来,以解释列转行 ...
- GitHub创建新仓库
第一步.右上角点击[+],选择[New repository] 第二步.设置一下仓库的基本信息 在如下图的红框位置,输入仓库的名称.描述以及是否公开. 第三步.滑到最下面,点击[Create repo ...