Linux mem/swap/buffers/cached 区别

Free

  free 命令相对于top 提供了更简洁的查看系统内存使用情况:

  $ free

   total used free shared buffers cached

Mem: 255268 238332 16936 0 85540 126384

-/+ buffers/cache: 26408 228860Swap: 265000 0 265000

  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 + free1total1 = used2 + free2used1 = buffers1 + cached1 + used2free2 = buffers1 + cached1 + free1

buffer cache,又称bcache,其中文名称为缓冲器高速缓冲存储器,简称缓冲器高缓。另外,buffer cache按照其工作原理,又被称为块高缓。

在linux读写文件时,它用于缓存物理磁盘上的磁盘块,从而加快对磁盘上数据的访问。

buffer cache的内容对应磁盘上一个块(block),块通常为1K,都是连续的。

在linux下,为了更有效的使用物理内存,操作系统自动使用所有空闲内存作为Buffer Cache使用。当程序需要更多内存时,操作系统会自动减小Cache的大小

  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.

  

  对于共享内存(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 必会非常小。

时间: 2024-10-24 22:16:39

Linux mem/swap/buffers/cached 区别的相关文章

【linux】free命令中cached和buffers的区别

一.命令 [[email protected] ~]# free -m total used free shared buffers cached Mem: 7869 7651 218 1 191 5081 -/+ buffers/cache: 2378 5490 Swap: 478 139 339 二.计算 这里使用1.2 分别代表第一行和第二行的数据 total1:表示物理 内存总量 used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使

Linux MemFree与MemAvailable的区别

最近在做Prometheus的监控,结合Grafana做前端展示,其中涉及到内存的时候,有不少人对Memory Free和Memory Avaliable这两个参数比较疑惑,这里我结合linux下常用的查看内存使用情况的free命令,做下解答整理. Linux查看内存使用情况,可以查看/proc/meminfo和使用free命令. [email protected]:~# cat /proc/meminfo && free MemTotal:       16433020 kB MemFr

linux buffer 与 cache 的区别

linux 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.两者都是RAM中的数据.简单来说,buffer(缓冲)是即将要被写入磁盘的,而cache(缓存)是被从磁盘中读出来的 缓冲(buffers)

揭开Linux操作系统的Swap交换区之谜

Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用. Swap的原理是一个较复杂的问题,需要大量的篇幅来说明.在这里只作简单的介绍,在以后的文章中将和大家详细讨论Swap实现的细节. 众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安

Linux 之 swap分区创建与管理

swap分区创建与管理 1.查看swap分区 [[email protected] ~]# free -h total used free shared buffers cached Mem: 2.0G 1.0G 944M 1.5M 265M 341M -/+ buffers/cache: 454M 1.5G Swap: 4.0G 0B 4.0G #swap分区大小 [[email protected] ~]# fdisk -l Disk /dev/sda: 53.7 GB, 536870912

LINUX增加SWAP分区---install_oracle

我们都知道在安装Linux系统时在分区时可以分配swap分区,而系统安装后(在运行中)如何建立或调整swap分区呢?在装完Linux系统之后,建立Swap分区有两种方法.1.新建磁盘分区作为swap分区2.用文件作为swap分区 (操作更简单,我更常用)下面介绍这两种方法:(都必须用root权限,操作过程应该小心谨慎.) 一.新建磁盘分区作为swap分区1.以root身份进入控制台(登录系统),输入# swapoff -a #停止所有的swap分区 2. 用fdisk命令(例:# fdisk /

Linux 添加swap分区, 设定swap阈值

swap阈值设定 1, 查看当前系统swap阈值 [email protected]~$  cat /proc/sys/vm/swappiness 60 内存在使用到100-60=40%的时候,就开始出现有交换分区的使用 swappiness=0表示最大限度使用物理内存,然后才使用swap空间, swappiness=100表示积极使用swap分区,并且把内存上的数据及时的搬运到swap空间里面 2, 永久设定 [email protected]~$ sudo -s [[email protec

【转】揭开Linux的Swap之谜

为什么选择Linux?因为Linux能让你掌握你所做的一切!   为什么痛恨Windows?因为Windows让你不知道自己在做什么!   这就是我喜欢Linux的原因.只要我愿意,我可以将底层的系统运行机制看得清清楚楚,可以掌握一切.而Windows尽管界面漂亮,却让你总也猜不透她心里想什么.我不喜欢若即若离的感觉. 如果你一看到这个标题就觉得头疼,或者对Linux的内部技术根本不关心,那么,我劝你一句:别用Linux了.你只是在追赶潮流,并不是真心喜欢它. Linux的确没有Windows好

Linux 修改swap虚拟内存大小

      swap是内存的交换区:换句话说,如果内存不够用了,那么系统会在硬盘上存储一些内存中不常用的数据,之后将这部分数据在存储中析构掉:这样内存就又有剩余空间可以运行东东啦,这个过程也就是所谓的交换,存储数据的硬盘部分就是swap分区. 装系统的时候可能会将swap大小设置的不合适 但是swap的大小不正确,很影响服务器的性能.下面说说怎么修改swap分区的大小. 1.查看系统Swap空间使用 [[email protected] mapper]# free -m total used f