`

linux/ubuntu下free查看内存占用大的解释

 
阅读更多

转:

大家看看我的内存占用情况:
$ free -m
total       used       free     shared    buffers     cached
Mem:          1908       1844         64          0         56        689
-/+ buffers/cache:       1098        810
Swap:         3904          0       3904
一开始吓了我一跳,我开了个虚拟机分了512m内存,别的没开啥大程序,怎么那个free就变成64m那么一点儿了。。。后来查了下资料,才知道是这么回事!如下:

总物理内存:1908m,已用了1844m, shard:多个进程共享的内存为0,磁盘缓存的大小为689MB

第二行(mem)的 used/free与第三行(-/ buffers/cache) used/free的区别。

这两个的区别在于使用的角度来看,第二行 是从OS的角度来看,因为对于 OS,buffers/cached 都是属于被使用,所以他的可用内存是15864KB,已用内存是465932KB,其中包括,内核(OS)使用 Application(X, oracle,etc)使用的 buffers cached.

第三行所指的是从应用程序角度来看,对于应用程序来 说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所 以从应用程序的角度来说,可用内存=系统free memory+ buffers+ cached.

Mem:表示物理内存统计
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况,这里我们不去关心。
系统的总物理内存:255268Kb(256M),但系统当前真正可用的内存b并不是第一行free 标记的 16936Kb,它仅代表未被分配的内存。
我们使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。   

============================

total1:    表示物理内存总量。
used1:     表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free1:     未被分配的内存。
shared1:   共享内存,一般系统不会用到,这里也不讨论。
buffers1:  系统分配但未被使用的buffers 数量。
cached1:   系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。

used2:     实际使用的buffers 与cache 总量,也是实际使用的内存总量
free2:     未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。  

可以整理出如下等式:
total1  = used1 + free1            
total1  = used2 + free2      
used1   = buffers1 + cached1 + used2  //os level
free2   = buffers1 + cached1 + free1  //app levle

=================

buffer 与cache 的区别
A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.  更详细的解释参考:Difference Between Buffer and Cache
对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响。如果你有兴趣, 请参考:What is Shared Memory?  cache 和 buffer的区别:
Cache: 高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周 期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提 高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢 的设备读入数据时,速度快的设备的操作进程不发生间断。  Free中的buffer和cache:(它们都是占用内存):
buffer: 作为buffer cache的内存,是块设备的读写缓冲区
cache:  作为page cache的内存, 文件系统的cache  如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi会非常小。 Buffer和Cache的区别    缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进 行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。    缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定 期清空缓冲内容(即写如磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的MP3,但U盘的 灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。修改/etc /sysctl.conf中的vm.swappiness右边的数字可以在下次开机时调节swap使用策略。该数字范围是0~100,数字越 大越倾向于使用swap。默认为60,可以改一下试试。
两者都是RAM中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
buffer是由各种进程分配的,被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字 段放在buffer中保存。
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。

因此,linux 内存 used的内存大是正常的, 不同于windows哦。

see http://zl198751.iteye.com/blog/1001640

 

分享到:
评论

相关推荐

    Linux 获取CPU和内存的大小

    在Linux操作系统中,监控CPU和内存的使用情况是系统管理员日常任务的重要部分,这有助于优化系统性能、排查问题以及合理分配资源。以下是一些获取CPU和内存大小以及使用率的方法。 **一、CPU信息** 1. **查看CPU...

    Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间

    在Linux系统中,使用Qt库开发应用程序时,可以利用各种系统接口来获取CPU使用率、内存占用、网络流量、磁盘I/O速度以及磁盘剩余空间等关键信息。以下将详细讲解如何通过Qt来实现这些功能。 1. CPU使用率: 在Linux...

    Ubuntu查看文件夹大小

    本文将详细介绍如何使用两个常用的Linux命令——df和du,来查看文件夹大小,并探讨它们的不同选项和参数,使用户能够灵活地运用这些工具来获得所需的信息。 首先,我们来看df命令。df命令用于报告文件系统的磁盘...

    远程检测Linux服务器中内存占用情况的方法.docx

    远程检测Linux服务器中内存占用情况是系统管理员日常维护工作的重要环节,这有助于及时发现和解决潜在的性能问题。本文档详细介绍了如何通过Nagios(一种流行的企业级网络监控系统)及其扩展NRPE(Nagios Remote ...

    Ubuntu设置swap交换内存.docx

    ### Ubuntu设置swap交换内存知识点详解 #### 一、概述 在Linux系统中,Swap空间(交换空间)是一种用于辅助内存管理的重要机制。当物理内存不足时,系统会将部分不常用的内存页面移动到Swap空间中,以此来释放物理...

    Ubuntu/Linux 命令行基础教程

    10. **系统信息**:通过`uname`查看系统信息,`df`和`du`检查磁盘空间,`free`查看内存使用情况,以及`date`操作日期和时间。 11. **脚本编程**:了解Bash shell的基础,编写简单的Shell脚本,使用`for`、`if`、`...

    ubuntu一句话技巧--Linux入门(给新手)

    监控系统资源,`free -l`查看内存使用情况,`ps -A`列出所有进程,`kill <进程号>`或`killall <进程名>`结束进程,`kill -9 <进程号>`或`killall -9 <进程名>`强制结束。`top`提供实时进程状态。`lsof -p <进程号>`...

    UBUNTU一句话技巧--Linux入门.txt

    - `free -l`:查看系统内存状态。 #### 三、进程管理与监控 - **查看和管理进程:** - `ps -A`:查看所有运行的进程。 - `kill PID` 或 `killall 进程名`:杀死进程。 - `top`:实时查看系统资源使用情况。 -...

    查看内存CPU资源

    "free"命令是一个非常实用的工具,用于查看系统中的内存使用情况,包括物理内存、交换内存等。接下来,我们将深入探讨"free"命令的输出,并解析每一部分的含义。 1. **总览(Total)** - `total`列显示了系统总的...

    查看linux主机系统的基本信息整理

    - **内存信息**:`free`命令可以查看系统的内存使用情况: ```bash free -h ``` - **磁盘信息**:`df`命令显示磁盘空间使用情况,`du`命令则可查看目录或文件占用的磁盘空间: ```bash df -h du -sh /path/...

    ubuntu命令(全)

    - `free -m`:查看内存使用情况。 - `ps -A`:列出所有进程。 - `kill process_id`或`killall process_name`:终止进程。 - `kill -9 process_id`或`killall -9 process_name`:强制终止进程。 - `xkill`:图形...

    Linux查看系统信息的一些命令及查看已安装软件包的命令

    `free` 用于查看系统的内存使用情况,包括总内存、已用内存、空闲内存等。 6. **`df` 和 `du` 命令**: `df` 用来查看磁盘空间的使用情况,而`du` 用于查看文件或目录占用的磁盘空间。 7. **`ps` 命令**: `ps`...

    ubuntu中top命令详解

    在Linux系统中,`top`命令是一个非常强大的实时系统监控工具,尤其在Ubuntu等基于Linux的发行版中广泛使用。`top`命令提供了系统运行状态的动态视图,包括CPU使用情况、内存使用情况、任务(进程)状态以及系统负载...

    linux_查看硬件信息的命令

    本文将详细介绍一系列用于查看Linux系统硬件信息的命令,帮助用户掌握如何获取诸如CPU、内存、硬盘、USB设备等关键硬件组件的信息。 #### 常用命令介绍 ##### 1. 查看CPU信息 - **命令**: `cat /proc/cpuinfo` - *...

    linux shell 编程中经常用的linux系统信息 命令

    13. **Linux内存信息**: 可通过`cat /proc/meminfo`、`free -m`或`free -g`获取内存和交换空间的使用情况。 14. **用户Shell名称**: `ps -p $$ | tail -1 | awk '{ print $4 }'` - 获取当前进程的Shell名称。 15. ...

    ubuntun linux command line

    - `free`:查看内存使用情况。 - `df`:查看磁盘空间使用情况。 - `du`:查看目录或文件的大小。 ### 四、命令行实用工具 #### 4.1 编辑器 - `nano`:简单易用的文本编辑器。 - `vim`、`vi`:功能强大的文本编辑器...

Global site tag (gtag.js) - Google Analytics