文档章节

Linux如何查询内存真实利用率

Amamatthew
 Amamatthew
发布于 2014/08/27 17:18
字数 777
阅读 9
收藏 0

使用top工具查看到Suse Linux的内存占用率很大,可能97%以上,我知道这是Linux的内存使用机制,先将内存整个管理起来,需要的时候在分配给单个进程。但是如果我需要查看系统真实的内存占用率应该怎么做

如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看.

$ free -m
                 total      used      free    shared   buffers    cached
Mem:        1002       769       232         0        62       421
-/+ buffers/cache:   286       715
Swap:        1153         0      1153

---------------------------

真实内存占用 = used-buffers-cached = 286

-----------------

 
第一部分Mem行:
total 内存总数: 1002M
used 已经使用的内存数: 769M
free 空闲的内存数: 232M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 62M
cached Page 缓存内存数:421M

关系:total(1002M) = used(769M) + free(232M)

第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free内存数: 715M (指的第一部分Mem行中的free + buffers + cached)

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换分区, 我想不讲大家都明白.

我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关used和free为什么这么奇怪.
其实我们可以从二个方面来解释.
对操作系统来讲是Mem的参数.buffers/cached 都是属于被使用,所以它认为free只有232.
对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序需要使用内存时,buffer/cached会很快被使用。

所以,以应用来看看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了。

另外告诉大家一些常识.Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.

所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦.


本文转载自:http://blog.sina.com.cn/s/blog_64bb25ef0100oaiv.html

上一篇: TAMPER DATA 使用
下一篇: Ajax 简介
Amamatthew
粉丝 67
博文 1050
码字总数 76443
作品 0
厦门
后端工程师
私信 提问
How Linux Works(三) : Memory

经典内存异常:Out of Memory (OOM) Killer 我的内存利用率为什么特别高? Linux 内存的分类 Linux 内存的计算 Linux 进程的内存 Linux 应用内存分配 内存是计算机中与CPU进行沟通的桥梁,用...

RiboseYim
2017/12/13
0
0
ltpstress.sh-场景设置

我们常用用LTP的ltpstress.sh脚本测试Linux的稳定性,以下将探讨一下如何好的进行Linux压力测试。 一.如何对内核进行压力测试? 在进行压力测试之前,我们先思考一下压力测试要达到那些要求,...

Scemoon
2013/10/21
0
0
报名:《Linux的进程、线程以及调度》4节系列微课(5.22-25)

《Linux任督二脉-进程和内存》的第一脉——《Linux的进程、线程以及调度》,试图解决进程的生命周期、调度算法、多核负载均衡、Linux实时性等一系列的问题。之前已有400多位童鞋学习过《进程...

jus3ve
2018/05/12
0
0
How Linux Works(三):内存管理

内存是计算机中与CPU进行沟通的桥梁,用于暂时存放CPU中的运算数据。Linux 内核的内存管理机制设计得非常精妙,对于 Linux 内核的性能有很大影响。在早期的 Unix 系统中,fork 启动新进程时,...

RiboseYim
2017/12/15
0
1
如何查看linux系统CPU利用率

当linux系统被某一个进程占用时,它无法处理其它进程的请求。余下等待处理的请求必须等到CPU空闲。这个时候,系统会变得很慢。以下命令将能够帮助你识别CPU的利用率,从而解决与CPU相关的问题...

phacks
2015/02/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击!

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击! 如果你是华为的老板,看到一条传遍网络的“美国封锁华为”、“华为禁令”的消息,你会怎么办? 昨天上午,华为创始...

forespider
35分钟前
1
0
Java HTTP 组件库选型看这篇就够了

最近项目需要使用 Java 重度调用 HTTP API 接口,于是想着封装一个团队公用的 HTTP client lib. 这个库需要支持以下特性: 连接池管理,包括连接创建和超时、空闲连接数控制、每个 host 的连...

Java面经
36分钟前
2
0
nginx 重启

在 nginx.config 配置目录下 输入命令: nginx -s reload 在 nginx 中,如果我修改了一个配置文件,或者新增了一个配置文件。按照群里网友的描述,我需要关闭 nginx,或者重启 nginx,比较麻...

MrBoyce
37分钟前
0
0
Cesium中级5 - Terrain 地形

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ CesiumJS支持对与水流相关的海洋、湖泊和河流以及全球高分辨率地形进行流式处理和可视化。查看山峰、山谷...

Cesium中文网
50分钟前
0
0
搭建jupyter+nginx服务

Tips:该文章面向Mac和centos用户,如果是Windows用户,请先安装虚拟机。 概述 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter ...

阿dai学长
51分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部