linux实际内存使用情况,Linux 内存使用情况

Linux系统如何查看使用内存情况

[root@R2 ~]# free

total used free shared buffers cached

Mem: 215608 142680 72928 0 19736 86956

-/+

buffers/cache: 35988 179620

Swap: 1052248 0 1052248

我们研究一下上面的free命令输出参数值及含义

Mem: 表示物理内存统计

-/+ buffers/cached : 表示物理内存的缓存统计

Swap: 表示硬盘上交换分区的使用情况,这个我们不去关心。

系统的总物理内存:215608KB,但系统当前真正可用的内存并不是第一行free标记的72928KB,它仅代表未被分配的内存。

我们使用total1、used1、free1、userd2、free2等名称来代表上面统计数据的各值,1、2分别代表第一行和第二行的数据。

total1: 总计物理内存的大小

used1: 已使用多大内存(包含buffers 与cache),但其中可能部分缓存并未实际使用

free1: 可用内存多少

shared1: 多个进程共享的内存总额

buffers1/cached1: 磁盘缓存的大小,这些是系统分配但未被使用的buffers 和 cache

used2: 实际使用的buffers 与cache的总量,也是实际使用的内存总量。

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

这里主要区别在于:

第二行( Mem )的 used/free 与第三行( -/+ buffers/cache )的

used/free的区别,这两个区别在于从使用的角度来看,第一行是从OS角度来看,因为对于OS,buffers/cached都是属于被使用,所以它的可用内存是72928KB,已使用内存是142680KB,其中包括内核OS使用+Application(X,

oracle, etc)使用的 + buffers + cached。

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为 buffer/cached

是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快的被回收。

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

179620 = 72928 + 19736 + 86956

我们可以整理出如下等式:

total1 = used1 + free1

total1 = used2 + free2

used1 = buffers1 + cached1 +used2

free2 = buffers1 + cached1 + free1

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会非常小。

接下来我们解释什么时候内存会被交换,以及按什么方式交换。当可用内存少于额定值的时候,就会开始进行交换。

如何看额定值:

[root@R2 ~]# cat /proc/meminfo

MemTotal: 215608 kB

MemFree: 72388 kB

Buffers: 20312 kB

Cached: 86984 kB

SwapCached: 0 kB

Active: 65140 kB

Inactive: 54940 kB

HighTotal: 0 kB

HighFree: 0 kB

LowTotal: 215608 kB

LowFree: 72388 kB

SwapTotal: 1052248 kB

SwapFree: 1052248 kB

Dirty: 8 kB

Writeback: 0 kB

AnonPages: 12796 kB

Mapped: 10964 kB

Slab: 7728 kB

PageTables: 1224 kB

NFS_Unstable: 0 kB

Bounce: 0 kB

CommitLimit: 1160052 kB

Committed_AS: 137364 kB

VmallocTotal: 630776 kB

VmallocUsed: 4864 kB

VmallocChunk: 625772 kB

用free -m 查看的结果:

[root@R2 ~]# free -m

total used free shared buffers cached

Mem: 210 139 70 0 19 84

-/+

buffers/cache: 35 175

Swap: 1027 0 1027

查看/proc/kcore文件的大小(内存镜像):

[root@R2 ~]# ll -h /proc/kcore

-r-------- 1 root root 219M Apr 9 22:44

/proc/kcore

备注:

占用内存的测量

测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法, /proc

目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。

/proc/meminfo 机器的内存使用情况

/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址

/proc/pid/statm 进程所占用的内存

我们通过free命令查看机器空闲内存时,有时候会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

所以 空闲内存=free+buffers+chached=total-used

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值