`
zhangxiong0301
  • 浏览: 359694 次
社区版块
存档分类
最新评论

Linux 内存 buffer 和 cache 的区别(转载)

 
阅读更多

内存使用说明

 

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

 

[root@rac1 ~]# free 

             total       used       free     shared    buffers     cached

Mem:       1035108   1008984      26124      0     124212     413000

-/+ buffers/cache:        471772      563336

Swap:       2096472   842320     1254152

 

这里显示的单位是KB

 

       linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。有关Linux内存机制参考:

       Linux 内存机制

       http://blog.csdn.net/tianlesoftware/archive/2010/04/08/5463790.aspx

 

Mem:表示物理内存统计。
-/+ buffers/cached
:表示物理内存的缓存统计 
Swap
:表示硬盘上交换分区的使用情况。只有mem被当前进程实际占用完,即没有了bufferscache时,才会使用到swap

 

Mem 行(第一行)数据说明:

       Total1035108KB。表示物理内存总大小。

       Used1008984KB。表示总计分配给缓存(包含buffers cache )使用的数量,但其中可能部分缓存并未实际使用。

       Free26124KB。表示未被分配的内存。

       Shared0kb。共享内存,一般系统不会用到。

       Buffers124212KB。系统分配但未被使用的buffers 数量。

       Cached413000KB。系统分配但未被使用的cache 数量。

 

-/+ buffers/cache 行(第二行)数据说明:

       Used471772kb,实际使用的buffers cache 总量,也是实际使用的内存总量。

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

 

根据以上分析,可以得出一下结论:

1.  实际可用内存大小:

       Free-/+ buffers/cache行)= Free(Mem)+buffers(Mem)+Cached(Mem);

                                   563336 = 26124 + 124212+ 413000

 

2.  已经分配的内存大小:

       Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

              1008984kb = 471772 + 124212 +413000

 

3.  物理内存总大小

       totalMem = used(-/+ buffers/cache) + free(-/+ buffers/cache)

                     1035108 = 471772 + 563336

 

 

.  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.

 

2.1 Cache

       Cache:高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。

       由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。

       Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache)L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB512KB L2 Cache

2.2 Buffer

       Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

 

Free命令中显示的buffercache,它们都是占用内存:

       buffer : 作为buffer cache的内存,是块设备的读写缓冲区,更靠近存储设备,或者直接就是disk的缓冲区。

       cache: 作为page cache的内存文件系统的cache,是memory的缓冲区

 

       如果 cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小。

 

 

 

整理自:

http://www.linuxdiyf.com/blog/?90293/action_viewspace_itemid_3004.html

分享到:
评论

相关推荐

    Linux内存buffer和cache的区别

    ### Linux内存管理中的Buffer与Cache区别详解 #### 一、引言 在现代操作系统中,内存管理是一项极其重要的任务,特别是在Linux这样的多用户多任务环境中。Linux系统在内存管理方面采取了许多高效的策略来提高系统...

    Linux操作系统中内存buffer和cache的区别.docx

    Linux 操作系统中内存 buffer 和 cache 的区别 在 Linux 操作系统中,内存 buffer 和 cache 是两个重要的概念,它们都是占用内存的,但是它们的作用和特点却不同。本文将详细介绍内存 buffer 和 cache 的概念、区别...

    linux内存中buffer与cache的区别

    ### Linux内存中Buffer与Cache的区别 #### 概述 Linux操作系统在管理内存资源时采用了高效且灵活的方法。当我们使用`free`命令查看系统的内存使用情况时,可能会注意到一个现象:即使系统似乎没有运行太多的应用...

    Linux操作系统中内存buffer和cache的区别.pdf

    ### Linux操作系统中内存buffer和cache的区别 #### 一、引言 在Linux操作系统中,内存管理是一项关键的技术,它直接影响到系统的性能和稳定性。本文将详细介绍Linux系统中内存buffer和cache的区别及其工作原理,...

    Oracle Buffer和Cache的区别

    在Linux系统中,Buffer和Cache的概念也被用于描述文件系统的状态。Buffer是指待写入磁盘的数据,它们通常与文件系统的写操作相关,比如在文件被修改后,系统会先将其内容暂存于Buffer中,然后在合适的时机(例如通过...

    Linux内存中Swap和Buffer Cache机制

    Linux内存管理是操作系统的核心组成部分,尤其在服务器环境中,理解Swap和Buffer Cache机制至关重要。Swap空间是Linux实现虚拟内存的关键,它允许系统将物理内存中暂时不用的数据存储到硬盘上,以此扩展内存容量。当...

    oracle_buffer_cache深入分析

    Buffer Cache 的内存结构主要包括 Hash Bucket 和 Buffer Header。 - **Hash Bucket**: 使用 Hash 算法将数据块映射到不同的 Hash Bucket 中。每个 Hash Bucket 是一组 Buffer Header 的集合。 - **Buffer Header**...

    解决 linux 下 buffcache 占用过高的问题.docx

    Buffer(缓冲区)主要存储的是磁盘I/O操作的数据,目的是减少磁盘和内存之间的数据交换次数,提高读写速度。Cache(缓存)则是用于存储经常访问的数据,加快程序访问速度,比如文件系统和数据库的缓存。这两种内存...

    linux内存中cache分析

    Linux内存分为物理内存和虚拟内存两部分。物理内存是硬件提供的存储空间,而虚拟内存是通过磁盘空间模拟的内存,用于扩展物理内存。在物理内存中,Linux将内存划分为页(Page)作为管理单位,每个页的大小通常是4KB...

    Linux内核内存Cache机制原理

    5. **内存管理子系统**:Linux内核内存管理子系统负责分配和回收内存,以及维护Page和Buffer Cache。它包括伙伴系统(用于分配连续内存块)和slab分配器(用于高效管理小对象的内存分配)。slab分配器根据对象大小...

    oracle性能调优之buffer cache

    Buffer Cache 是 Oracle 中的一种缓存机制,负责将磁盘上的数据 block 读取到内存中,以提高数据库的访问速度。在本文中,我们将详细介绍 Buffer Cache 的工作原理、状态、管理和优化方法。 Buffer Cache 的工作...

    Linux系统内核文件Cache管理机制

    在Linux中,文件Cache起到了内存管理与文件系统间的桥梁作用,确保数据高效地在内存和存储设备之间流动。 文件Cache主要由Page Cache和Buffer Cache两部分组成。Page Cache是更高层的概念,用于缓存文件的连续数据...

    linux下释放cache内存

    #### 一、理解Linux内存管理机制 在Linux系统中,内存管理机制非常高效且复杂。为了提升文件系统访问速度,Linux内核会利用空闲内存来缓存文件数据(称为Page Cache)和其他类型的缓存(如Buffer Cache)。这样做的...

    buffer cache深度分析.zip

    8. **缓存与JVM内存管理**:Buffer Cache与Java的堆内存和非堆内存(如Direct Memory)相互关联,需要综合考虑JVM的内存配置以避免内存溢出。 综上所述,Buffer Cache深度分析涵盖了数据库系统设计、Java内存管理、...

    深入Buffer Cache 原理

    通过合理管理和配置Buffer Cache中的各个组成部分,不仅可以减少磁盘I/O操作,还能有效避免热点问题,提高整体系统响应速度。此外,对于常见等待事件(如latch:cachebufferschains)的理解也有助于快速诊断并解决...

    Oracle 中 Buffer Cache 的研究.pdf

    Oracle内存主要分为系统全局区(SGA)和程序全局区(PGA),其中SGA又包含数据缓冲区(Data Buffer Cache)、日志缓冲区(Redo Log Buffer)和共享池(Shared SQL Pool)。数据缓冲区是SGA中最重要的部分,也就是Buffer Cache...

    Linux内核内存管理技术分享

    hardware和计算机体系结构是Linux内存管理的基础。计算机体系结构中,存储层次结构包括寄存器、Cache、主存储器和辅助存储器。MMU(Memory Management Unit)是Linux内存管理的核心组件,负责将虚拟地址转换为物理...

    深入学习Buffer cache

    在Oracle 10g中,Buffer Cache的设计和管理更加先进,实现了更高效的内存利用和并发访问控制。 Buffer Cache的结构主要包括以下几个关键部分: 1. **Data Buffer Header List**:数据缓冲区头部列表是由哈希桶...

    内存中的Buffer和Cache有什么区别?

    了解Buffer和Cache的区别有助于优化系统的内存使用和性能。在某些情况下,如系统内存紧张时,可以通过`echo 3 > /proc/sys/vm/drop_caches`命令清空Buffer和Cache,释放内存供其他进程使用。然而,这应谨慎操作,...

    手工释放linux内存.pdf

    Linux内存管理机制的一个显著特点是充分利用空闲内存作为缓存(包括Buffer Cache和Page Cache)。这样做能够极大地提高磁盘I/O效率,从而提升应用程序的整体性能。但是,这种设计也可能会让初学者感到困惑,尤其是在...

Global site tag (gtag.js) - Google Analytics