zoukankan      html  css  js  c++  java
  • [Linux] Linux下谁在消耗我们的cache

    一、缘由:

      曾经看到MySQL服务器上Cache占用特别大,其实大家都知道这是合理的,这些都是可用内存;

    那么问题来了,是谁在占用这些Cache呢?如果去掉不合理的Cache占用,系统内存会更充分的得到利用。

                 total       used       free     shared    buffers     cached
    Mem:         64309      55889       8420          0        240      43363
    -/+ buffers/cache:      12285      52024
    Swap:        20479          0      20479

      由上图可见,Cache占用了42G内存,猛地一看很可怕。实际上他还属于memfree之列。具体说明,可以看这里:

    http://www.linuxatemyram.com/

    二、解决办法:

      这里有两个工具可以查看某个文件是否占用了Page Cache,占用了多少:fincore和vmtouch

    1、fincore 

      这是linux-ftools工具的一部分,你给出文件(夹)名作为输入,他会告诉你他有多少文件(数据)被系统缓存起来。

    因为不太会安装,这里不做推荐,具体看这里https://code.google.com/p/linux-ftools/

    2、vmtouch

      vmtouch可以查到缓存的文件和目录、把文件推入缓存和驱逐缓存中的文件等等。(推荐

    安装方法:

    $ git clone https://github.com/hoytech/vmtouch
    $ cd vmtouch
    $ make
    $ sudo make install

    使用方法:

    $ vmtouch
    vmtouch: no files or directories specified
    
    vmtouch v1.0.2 - the Virtual Memory Toucher by Doug Hoyte
    Portable file system cache diagnostics and control
    
    Usage: vmtouch [OPTIONS] ... FILES OR DIRECTORIES ...
    
    Options:
      -t touch pages into memory
      -e evict pages from memory
      -l lock pages in physical memory with mlock(2)
      -L lock pages in physical memory with mlockall(2)
      -d daemon mode
      -m max file size to touch
      -p use the specified portion instead of the entire file
      -f follow symbolic links
      -h also count hardlinked copies
      -w wait until all pages are locked (only useful together with -d)
      -v verbose
      -q quiet

    例子:

    1)查看/tmp目录在内存中的缓存:

    $ vmtouch /tmp/
    vmtouch: WARNING: skipping non-regular file: /tmp/ssh-GgJnCEkWMQC2/agent.1068
    
               Files: 17
         Directories: 7
      Resident Pages: 4780/4780  18M/18M  100%
             Elapsed: 0.001006 seconds

    详细信息查看可使用-v参数  例如:vmtouch -v /tmp/

    2)查看一个文件被缓存了多少:

    $ vmtouch -v ~/Downloads/phoronix-test-suite_6.0.1_all.deb 
    /home/neo/Downloads/phoronix-test-suite_6.0.1_all.deb
    [                                            ] 0/132
    
               Files: 1
         Directories: 0
      Resident Pages: 0/132  0/528K  0%
             Elapsed: 0.000117 seconds

    3)把文件缓存起来:

    $ vmtouch -vt ~/Downloads/phoronix-test-suite_6.0.1_all.deb 
    /home/neo/Downloads/phoronix-test-suite_6.0.1_all.deb
    [OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] 132/132
    
               Files: 1
         Directories: 0
       Touched Pages: 132 (528K)
             Elapsed: 0.007935 seconds

    4)把缓存中的数据驱逐出去:

    $ vmtouch -ve ~/Downloads/phoronix-test-suite_6.0.1_all.deb 
    Evicting /home/neo/Downloads/phoronix-test-suite_6.0.1_all.deb
    
               Files: 1
         Directories: 0
       Evicted Pages: 132 (528K)
             Elapsed: 0.000109 seconds

    附:

    具体信息参考官网:https://hoytech.com/vmtouch/

    另一个参考页面:vmtouch: portable file cache analyzer

      

  • 相关阅读:
    [git 学习篇] git commit原理 --实践体会
    [git 学习篇]工作区和暂存区
    [git 学习篇] git文件版本回退再学习
    [git 学习篇]版本回退
    [git 学习篇] 修改文件
    [git 学习篇] 提交文件
    [git 学习篇] --创建git创库
    [测试框架学习] 测试框架的结构包含
    [python测试框架] http接口测试框架
    向SharePoint页面添加后台代码
  • 原文地址:https://www.cnblogs.com/langdashu/p/5953222.html
Copyright © 2011-2022 走看看