zoukankan      html  css  js  c++  java
  • linux free命令中buffer与cache的区别

    linux free命令中buffer与cache的区别
    2012-05-15       个评论      
    收藏    我要投稿
    linux free命令中buffer与cache的区别
     
    ~$ free
                        total             used           free     shared   buffers     cached
    Mem:       1025204     981636      43568          0      38244     387808
    -/+ buffers/cache:       555584      469620
    Swap:      1931256    162948      1768308  www.2cto.com  
     
    也可以通过$watch free看到动态信息
    以上为free命令的输出内容,从中可以得到当前系统内存使用情况.
    系统的可用内存应该看第二行数据,
    -buffers/cache=used-buffers-cached
    +buffers/cache=free+buffers+cached
     
    因为第一行的used包含了系统使用的buffer及cache,而free则没包含buffer及cache,
    这部分也是可以使用的部分.
    如上所示555584为真正的系统使用内存情况,而469620为系统真正的可用内存情况.
     
    下面介绍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.
    buffer:  www.2cto.com  
       缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据
    的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据
    时,速度快的设备的操作进程不发生间断。
    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。
           当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,
    这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会
    自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。
    其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有
    内存可用。如果你希望手动去释放Cache Memory也是有办法的。
    如何释放Cache Memory(缓存内存), 用下面的命令可以释放Cache Memory:
    To free pagecache
         $sync; echo 1>/proc/sys/vm/drop_caches
    To free dentries and inodes:  www.2cto.com  
         $sync; echo 2>/proc/sys/vm/drop_caches
    To free pagecache, dentries and inodes:
         $sync; echo 3>/proc/sys/vm/drop_caches
    注意,释放前最好sync一下,防止丢失数据。
     
    free命令中的buffer和cache:(它们都是占用内存):
           buffer : 作为buffer cache的内存,是块设备的读写缓冲区
           cache: 作为page cache的内存, 文件系统的cache
  • 相关阅读:
    DAY10-MYSQL表操作
    DAY10-MYSQL完整性约束
    DAY10-MYSQL数据类型
    DAY10-MYSQL存储引擎
    DAY10-MYSQL库操作
    017.2 基本数据类型对象包装类
    017.1 stringBuffer
    016.2 String
    16.1 eclipse设置
    015.5线程常见用法(面试题)
  • 原文地址:https://www.cnblogs.com/anruy/p/5009201.html
Copyright © 2011-2022 走看看