`
zhoushijun
  • 浏览: 267543 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    千万字肝翻Linux内核源码,对底层原理深耕深分析,从入门到入狱

    内存屏障、内存映射、同步机制、GDB基本功能、CPU缓存、...描述符、虚拟内存机制、RCU机制、ARM架构、高速缓存、页面回收、数据同步、回写机制、页交换、 软硬中断区别、等待队列、字符设备驱动、系统调用、内存碎片。

    清空mysql 查询缓存的可行方法

    您可能感兴趣的文章:MySQL优化之缓存优化mysql的查询缓存说明使用Memcache缓存mysql数据库操作的原理和缓存过程浅析浅析MySQL内存的使用说明(全局缓存+线程缓存)MySQL高速缓存启动方法及参数详解(query_cache_...

    清华大学Linux操作系统原理与应用

    2.3.4 页面高速缓存(cache) 29 2.3.5 Linux中的分页机制 30 2.4 Linux中的汇编语言 31 2.4.1 AT&T与Intel汇编语言的比较 31 2.4.2 AT&T汇编语言的相关知识 32 2.5 Linux系统地址映射示例 33 习题2 35 第3章 进程 ...

    16.docx The Page Cache and Page Writeback

    Linux内核实现了称为页缓存的磁盘缓存。此高速缓存的目标是通过将数据存储在物理内存中来最大程度地减少磁盘I / O,否则这些数据将需要磁盘访问。本章介绍页缓存以及将页缓存的更改回写到磁盘的过程,这称为页回写。

    Linux中的冷热页机制简述

    冷页表示该空闲页已经不再高速缓存中了(一般是指L2 Cache),热页表示该空闲页仍然在高速缓存中。冷热页是针对于每CPU的,每个zone中,都会针对于所有的CPU初始化一个冷热页的per-cpu-pageset.  为什么要有冷热页?...

    Linux下memcache编译安装与基本使用教程

    memcache是一套分布式的高速缓存系统,特点为key-value 存储 一、在 linux 编译安装memcache、redis等,需要 gcc,make,cmake,autoconf,libtool 等工具, 直接使用yum安装即可: yum install gcc make cmake autoconf ...

    网站安全网关 v3.7.5.rar

    作为网页服务器的前置,不但可以抵御各种黑客攻击,还可以高速内存cache服务器缓存相关请求来提高Web服务器的速度,并且具备网站集群负载均衡等功能。目前中国大陆使用Safe3WAF网站用户有搜狐、国防科技大学招生网等...

    入门学习Linux常用必会60个命令实例详解doc/txt

    前面介绍了Linux下有多种Shell,一般缺省的是Bash,如果想更换Shell类型可以使用chsh命令。先输入账户密码,然后输入新Shell类型,如果操作正确系统会显示“Shell change”。其界面一般如下: Changing fihanging ...

    计算机系统课程.docx

    Cache:高速缓存。我们知道,电脑的内存是以系统总线的时钟频率工作的,这个频率通常也就是CPU的外频。但是,CPU的工作频率(主频)是外频与倍频因子的乘积。Cache是一种特殊的存储器,它由Cache 存储部件和Cache控制...

    大学计算机基础大一考试必备题库.pdf

    高速缓存器 C. 随 机存储器 D. 软盘存储器 8.组成计算机的 CPU 的两大部件是( A )。 A.运算器和控制器 B. 控制器和寄存器 C.运 算器和内存 D. 控制器和内存 9.在描述信息传输中 bps 表示的是( D )。 A.每...

    squid包含htpasswd.exe

     C:squidsbin>squid -z (生成高速缓存的目录)  C:squidsbin>squid (启动squid服务,另一种比较好的方法是在“管理工具”, “服务”中选择SquidNT,然后选择启动服务) 以上简明说明了squid for Windows的安装...

    2021计算机程序设计-计算机程序设计综合练习(精选试题).doc

    高速缓存 C.外存 D.缓存 16、下列关于硬盘的说法正确的是()。 A.是存储器,不是输入输出设备 B.既是存储器又是输入输出设备 C.是输入输出设备不是存储器 D.是存储器和输入设备不是输出设备 17、程序设计语言一般可...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速缓存一致性问题的两种方案介绍.mp4 │ 高并发编程第二阶段08讲、并发编程的三个重要概念,原子性,可见性,有序性.mp4 │ 高并发编程第二阶段09讲、...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第二阶段07讲、CPU以及CPU缓存的结构,解决高速缓存一致性问题的两种方案介绍.mp4 │ 高并发编程第二阶段08讲、并发编程的三个重要概念,原子性,可见性,有序性.mp4 │ 高并发编程第二阶段09讲、...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Google Chrome 6.0.451.0 Dev 版(一个由Google公司开发的网页浏览器)

     ● about:cache-显示缓存页面  ● about:plugins - 用来显示附加元件的状态  ● about:version-显示版本信息  ● about:crash - 显示崩溃画面  ● about:hang - 使这个页面假死(不接受任何命令)  ● about:...

Global site tag (gtag.js) - Google Analytics