`
zhoushijun
  • 浏览: 270967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux 内存高速缓存(cache)类型分析

阅读更多

      在Liunx内存管理机制中,除了对目录项(dentry,Linux文件系统中某个inode的链接)进行缓存外,

还采取了两种高速缓存,即Buffer Cache和Page Cache,前者针对磁盘块的读写,后者针对文件inode的

读写。通过增加这些Cache,有效缩短 I/O时间。

       先通过free命令查看内存使用情况:

                 free -m

                    total       used       free     shared    buffers     cached  

Mem:         32176      30032       2144          0        249      25938

-/+ buffers/cache:       3844      28332

Swap:            0          0          0

        返回结果中,buffer和cache说明两种前面提及的两种高速缓存使用内存情况,其中:

        Buffers :说明缓存块设备读写的内存大小(buffer cache),这部分缓存主要用于

                       目录项、inode等文件系统元数据。如果ls一个包含很多内容的目录,可以

                       发现这个值明显增大。

        Cache   :说明用于缓存文件系统读写的内存大小(page cache),这部分缓存主要用于

                        打开的文件,如果 cache 的值很大,说明缓存的文件较多,在进行读写时,命

                        中率也将提高,如果频繁访问到的文件大部分被缓存,则必然减少磁盘的读IO。

                       It is similar like "Buffers", only this time it caches pages from file reading.

两种cache处理数据采用策略是不同的,具体如下:

buffer采用先进先出策略,cache则采用最少使用原则(LRU),即对于buffer缓存来说,

当缓存的内容达到其最大容量时,最先缓存的内容被清空,对于cache来说,当缓存的内容达到

其最大容量时,最少被访问的内容被清空。

 
释放不同高速缓存的方法是通过修改/proc文件系统相关参数,/proc是Linux虚拟文件系统,

通过对其进行读写操作实现与用户空间和内核空间的通信。即通过修改/proc中的内,对当前kernel

的行为做出调整。内存缓存释放是通过调整/proc/sys/vm/drop_caches的值实现。

        具体规则如下:

              1)运行sync将dirty的内容写回硬盘,防止数据丢失。

              2)释放page cache

                     echo 1 > /proc/sys/vm/drop_caches
              3)是否VFS目录项和文件系统inodes
                     echo 2 > /proc/sys/vm/drop_caches
              4)释放 pagecache,VFS目录向和inodes
                   echo 3 > /proc/sys/vm/drop_caches
        其实在具体的应用中,不需要手动是否内存高速缓存,因为linux提供了相关机制来实现对这些高速
的最优控制,除非你看着不爽。其实查看实际的可以内存不是看free返回的第一行,而是看第二行,即
        -/+ buffers/cache:       3844      28332
        其中3844是实际已经使用的内存大小,28332是可用内存大小,前面的 -/+ buffers/cache是指:
        实际使用内存=used-buffers-cached
        实际可用内存=free+buffers-cached
分享到:
评论

相关推荐

    linux内存中cache分析

    缓存(Cache)主要包含两种类型:页高速缓存(Page Cache)和块设备缓存(Buffer Cache)。页高速缓存用于存储文件系统的数据,当程序读取文件时,内核会尝试从缓存中直接获取,从而提高数据访问速度。块设备缓存则...

    linux 查看 cache 中文件

    系统将经常访问的数据存储在高速缓存中,以便快速访问,从而提高整体系统性能。标题提到的"linux 查看 cache 中文件",指的是在Linux环境下查看内存中的缓存文件。这个功能可以通过特定的工具实现,描述中提及的...

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

    - Cache是一种高速缓存,位于CPU与主内存之间,用于存储CPU最近使用过的数据或频繁访问的数据。 - Cache的主要目的是为了减少CPU等待数据的时间,提高系统性能。 - Cache分为一级Cache (L1 Cache) 和二级Cache ...

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

    Cache 则是一个高速缓存,是位于 CPU 与主内存间的一种容量较小但速度很高的存储器。由于 CPU 的速度远高于主内存,CPU 直接从内存中存取数据要等待一定时间周期,Cache 中保存着 CPU 刚用过或循环使用的一部分数据...

    Linux内核分析与应用课件第8章(四)页高速缓存机制及读写.pdf

    Linux内核分析与应用课件第8章高速缓存机制及读写 本章节主要介绍了Linux内核中的高速缓存机制和读写机制。高速缓存是Linux内核中的一种重要机制,它可以提高文件系统的读写性能。高速缓存机制可以分为两种:Buffer...

    Oracle Buffer和Cache的区别

    这些高速缓存层次结构的设计目的,是尽可能让CPU在执行指令时快速获取所需数据,避免频繁地等待较慢的主内存响应。Cache的大小、速度和层次结构是决定CPU性能的关键因素之一。 Buffer Cache与Cache的区别在于,...

    01-Linux内存管理之二:在X86上的虚拟内存管理.rar

    交换过程由伙伴系统和页高速缓存共同完成,涉及到 swap_out 和 swap_in 操作。虽然交换可以缓解内存压力,但频繁的交换会导致性能下降。 5. 缓存管理: Linux内存管理系统还包括对缓存的管理,如 Page Cache 和 ...

    Cache Server V1.2.0 嵌入式(实时)内存数据库(linux 32)

    另外Cache Server拥有强大的编程能力,拥有业内功能最强大的内存数据库脚本,使Cache Server不只作为数据的高速缓存服务器,更能够实现复杂的业务逻辑,通过编写数据库脚本和存储过程实现以前通过C/C++编程才能实现...

    Linux内存管理编程

    5. 缓存:Linux使用页高速缓存(Page Cache)来提高文件I/O的性能,映射的文件内容可能会存储在缓存中。 通过实验四Linux内存管理,你可以实践这些概念,了解它们在实际程序中的应用。这将增强你对内存管理的理解,...

    Linux内核分析与应用课件第4章(一)内存管理机制.pdf

    在Linux中,缓存机制是通过高速缓存(Cache)来实现的。高速缓存是一种高速的存储装置,它可以快速地访问数据。在Linux中,高速缓存被用于加速物理页的寻找。 在Linux中,交换机制是通过交换缓存和交换文件来实现的...

    Linux内核内存管理技术分享

    Cache是高速缓存,用于加速数据的访问。 Linux虚拟地址空间布局是指Linux操作系统中进程的虚拟地址空间的组织方式。 Linux的虚拟地址空间分为用户空间和内核空间两部分。用户空间地址布局是指用户进程的虚拟地址...

    linux内核2.6cache源代码

    Linux内核2.6版本中的缓存(Cache)机制是操作系统设计的重要组成部分,它极大地提升了系统性能,尤其是在处理大量数据时。在这个版本的内核中,缓存的设计和实现已经相当成熟,涉及到内存管理、I/O操作、进程调度等...

    Linux内存管理实现的分析与研究.pdf

    - Linux内存管理系统还包含了伙伴的分裂和合并操作,以及Slab缓存的自调整机制,以适应系统负载的变化。 - 为了优化内存使用,Linux还包括了内存压榨(memory pressure)机制,当物理内存不足时,会通过交换或回收...

    一种Linux内存管理机制1

    首先,Linux内存管理模型将内存区域分为三个类别:ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM,以适应不同类型的设备和内存访问需求。伙伴系统是Linux用于物理内存分配的核心算法。它以2的幂次(order)为单位管理内存,...

    内存管理方面x86,LINUX下的内存管理方式

    6. **高速缓存**:Linux使用缓冲区缓存(Buffer Cache)和页面缓存(Page Cache)来加速磁盘I/O操作。缓冲区缓存用于文件系统的元数据,而页面缓存则用于文件内容,它们都利用空闲内存,显著提高系统性能。 7. **...

    squid缓存服务器的研究

    根据实际经验,分配给 Squid 的缓存内存(`cache_mem`)应不超过服务器物理内存的三分之一。 - **硬盘**:使用高速硬盘,如服务器专用 SCSI 硬盘,以提高数据读写速度。 - **处理器**:400MHz 或更高,虽然处理器...

    Linux 内存管理导读 .pdf

    存储层次自上而下为高速缓存(cache)、主存(main memory)、磁盘(disk),这一结构反映了计算机系统中不同存储介质的速度与成本之间的权衡。由于CPU速度远超存储器,为了弥补速度差,引入了存储层次,利用局部性原理...

    第六章Linux内存管理1

    但不幸的是,当前技术没有能够提供这样的存储器,因此大部分的计算机都有一个存储器层次结构,即少量、快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千...

    深入理解LINUX内存管理学习笔记

    9. **高速缓存(Cache)**: - Linux内存管理中,缓存机制提高了I/O性能,如page cache和dentry cache等。 10. **内存泄漏检测**: - 进程运行过程中,未正确释放的内存可能导致内存泄漏。开发者可以使用工具如...

    cgroup-linux内存资源管理.pdf

    当进程读取或写入文件时,内核会将这些数据存储在缓冲区或高速缓存中,以提高后续访问的速度。尽管`buffers`和`cached`占用了一部分内存,但这通常是有益的,因为它们提高了系统的整体性能。然而,如果应用程序需要...

Global site tag (gtag.js) - Google Analytics