精华内容
下载资源
问答
  • Linux系统缓存清理脚本
  • 命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好。 缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(也...不过 Linux 系统中并没有直接提供这些接口,所以这里我要介绍一...

    命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好。

    缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(也就是热点数据),提前读入到内存中。这样,下次访问时就可以直接从内存读取数据,而不需要经过硬盘,从而加快应用程序的响应速度。

    这些独立的缓存模块通常会提供查询接口,方便我们随时查看缓存的命中情况。
    不过 Linux 系统中并没有直接提供这些接口,所以这里我要介绍一下,cachestat 和 cachetop ,它们正是查看系统缓存命中情况的工具。

    • cachestat提供了整个操作系统缓存的读写命中情况。
    • cachetop提供了每个进程的缓存命中情况。

    1.安装启动cachestat

    mkdir -p /opt/soft/cachestat
    cd /opt/soft/cachestat

    下载安装包:git clone --depth 1 https://github.com/brendangregg/perf-tools
    直接启动:/opt/soft/cachestat/perf-tools/bin/cachestat
    输出内容格式如下:

    HITS    MISSES DIRTIES RATIO BUFFERS_MB CACHED_MB
    324134  0      13213   100%  28         1024
    324134  0      13213   100%  28         1024
    324134  0      13213   100%  28         1024
    

    参数说明:
    HITS:缓存命中次数;
    MISSES:缓存未命中次数;
    DIRTIES:加入缓存脏页数;
    RATIO:缓存命中率;
    BUFFERS_MB:buffers大小,单位:MB;
    CACHED_MB:cache大小,单位:MB;

    展开全文
  • linux-fincore 包含linux-fincore,linux-fincore,linux-fincore 三个工具。其中linux-fincore可以用来查看cache中有哪些文件。 编译安装 该工具最初发布于googlecode,但googlecode现在已经关闭了。可以从...

    概述

    • linux-fincore 包含linux-fincore,linux-fincore,linux-fincore 三个工具。其中linux-fincore可以用来查看cache中有哪些文件。

    编译安装

    • 该工具最初发布于googlecode,但googlecode现在已经关闭了。可以从github上找到其代码。
    • 本人选用的是 https://github.com/waleedmazhar/linux-ftools 这个链接的版本, 执行 ./configure; make; make install 可以直接编译安装。
    • 如果因选择版本以及编译环境差异,执行make时可能会报错: 例如aclocal-1.10: command not foundautomake-1.10: command not found
    cd . && /bin/sh /home/linux-ftools-master/missing --run aclocal-1.10 
    /home/linux-ftools-master/missing: line 54: aclocal-1.10: command not found
    WARNING: `aclocal-1.10' is missing on your system.  You should only need it if
             you modified `acinclude.m4' or `configure.ac'.  You might want
             to install the `Automake' and `Perl' packages.  Grab them from
             any GNU archive site.
     cd . && /bin/sh /home/linux-ftools-master/missing --run automake-1.10 --gnu 
    /home/linux-ftools-master/missing: line 54: automake-1.10: command not found
    WARNING: `automake-1.10' is missing on your system.  You should only need it if
             you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
             You might want to install the `Automake' and `Perl' packages.
             Grab them from any GNU archive site.
    cd . && /bin/sh /home/linux-ftools-master/missing --run autoconf
    configure.ac:7: error: possibly undefined macro: AM_INIT_AUTOMAKE
          If this token and others are legitimate, please use m4_pattern_allow.
          See the Autoconf documentation.
    make: *** [configure] Error 1
    • 对于类似错误,网上一般会说要安装automake对应版本之类的。但实际上,服务器上已经有更高版本的automake工具。这其实是因为Makefile.in中写死了使用低版本的automake工具导致的,可以通过以下步骤解决:

      1. 执行aclocal,产生aclocal.m4文件
      2. 执行autoconf,生成configure文件
      3. 执行automake命令,产生Makefile.in: automake --add-missing
      4. 执行configure命令,生成Makefile文件
      5. 重新执行makemake install,一切顺利.

      使用说明

      • help信息如下:
    [root]# /usr/local/bin/linux-fincore 
    fincore version 1.3.0
    fincore [options] files...
    
      -s --summarize          When comparing multiple files, print a summary report
      -p --pages              Print pages that are cached
      -o --only-cached        Only print stats for files that are actually in cache.
      -g --graph              Print a visual graph of each file's cached page distribution.
      -S --min-size           Require that each files size be larger than N bytes.
      -C --min-cached-size    Require that each files cached size be larger than N bytes.
      -P --min-perc-cached    Require percentage of a file that must be cached.
      -h --help               Print this message.
      -L --vertical           Print the output of this script vertically.
    • 通常用法:执行 linux-fincore --pages=false --summarize --only-cached * 即可,其中*代表查看任意文件的cache。也可以指定某个目录/*,表示该目录中的所有文件。或指定某个具体的文件。
    • 实例:
    [root]#./linux-fincore  --pages=false --summarize --only-cached  *
    filename                                                                                       size        total_pages    min_cached page       cached_pages        cached_size        cached_perc
    --------                                                                                       ----        -----------    ---------------       ------------        -----------        -----------
    aclocal.m4                                                                                   34,611                  9                  0                  9             36,864             100.00
    Could not mmap file: autom4te.cache: No such device
    config.log                                                                                   19,768                  5                  0                  5             20,480             100.00
    config.status                                                                                29,788                  8                  0                  8             32,768             100.00
    configure                                                                                   171,672                 42                  0                 42            172,032             100.00
    configure.ac                                                                                    864                  1                  0                  1              4,096             100.00
    Could not mmap file: debian: No such device
    depcomp                                                                                      17,574                  5                  0                  5             20,480             100.00
    INSTALL                                                                                       9,416                  3                  0                  3             12,288             100.00
    install-sh                                                                                   13,184                  4                  0                  4             16,384             100.00
    linux-fadvise                                                                                22,466                  6                  0                  6             24,576             100.00
    linux-fadvise.c                                                                               4,875                  2                  0                  2              8,192             100.00
    linux-fadvise.o                                                                              26,544                  7                  0                  7             28,672             100.00
    linux-fallocate                                                                              19,150                  5                  0                  5             20,480             100.00
    linux-fallocate.c                                                                             3,252                  1                  0                  1              4,096             100.00
    linux-fallocate.o                                                                            17,952                  5                  0                  5             20,480             100.00
    linux-fincore                                                                                42,137                 11                  0                 11             45,056             100.00
    linux-fincore.c                                                                              14,967                  4                  0                  4             16,384             100.00
    linux-fincore.o                                                                              67,592                 17                  0                 17             69,632             100.00
    linux-ftools.h                                                                                   83                  1                  0                  1              4,096             100.00
    Makefile                                                                                     20,772                  6                  0                  6             24,576             100.00
    Makefile.am                                                                                     209                  1                  0                  1              4,096             100.00
    Makefile.in                                                                                  20,055                  5                  0                  5             20,480             100.00
    missing                                                                                      11,135                  3                  0                  3             12,288             100.00
    NEWS                                                                                             65                  1                  0                  1              4,096             100.00
    README                                                                                        6,001                  2                  0                  2              8,192             100.00
    RELEASE                                                                                         372                  1                  0                  1              4,096             100.00
    showrlimit.c                                                                                  1,961                  1                  0                  1              4,096             100.00
    waste_memory.c                                                                                  699                  1                  0                  1              4,096             100.00
    ---
    total cached size: 643,072

    遇到问题

    • 实测发现,直接执行 linux-fincore --pages=false --summarize --only-cached * 有时并不能完全显示所有的缓存。比如:
      • 在测试中构造一个32GB大小的文本文件file1.csv,然后wc -l file1.csv,
      • 执行完毕后通过free可以看到系统cache已经有30多GB了,但执行上述linux-fincore命令却找不到file1.csv的cache记录(没有仔细分析其源码,不太清楚是什么原因)
    • 但是直接指定file1.csv文件名或其目录的话,是可以看到具体的缓存信息的:
    [root]# ./linux-fincore  --pages=false --summarize --only-cached /home/cache_test/file1.csv 
    filename                                                                                       size        total_pages    min_cached page       cached_pages        cached_size        cached_perc
    --------                                                                                       ----        -----------    ---------------       ------------        -----------        -----------
    /home/cache_test/file1.csv                                                       33,792,286,436          8,250,070                  0          6,802,594     27,863,425,024              82.45
    ---
    total cached size: 27,863,425,024

    参考资料:

    展开全文
  • Linux系统清除缓存

    千次阅读 2018-07-21 10:16:46
    Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接...

    1)缓存机制介绍
    在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。
    缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。
    CPU上下文切换:CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务,这个过程叫做上下文切换。实质上就是被终止运行进程与待运行进程的进程切换。

    2)查看缓存区及内存使用情况

    1

    2

    3

    4

    5

    [root@localhost ~]# free -m

                 total       used       free     shared    buffers     cached

    Mem:          7866       7725        141         19         74       6897

    -/+ buffers/cache:        752       7113

    Swap:        16382         32      16350

    从上面的命令结果显示中可以看出:内存总共8G,已使用7725M,剩余141M,不少的人都是这么看的。
    但其实这样并不能作为实际的使用率。因为有了缓存机制,具体算法如下:
    空闲内存=free(141)+buffers(74)+cached(6897)
    已用内存=total(7866)-空闲内存
    由此算出空闲内存是7112M,已用内存754M,这才是真正的使用率,也可参考-/+ buffers/cache这行信息也是内存正确使用率。

    3)缓存区分buffers和cached区别
    内核在保证系统能正常使用物理内存和数据量读写情况下来分配缓冲区大小。
    buffers用来缓存metadata及pages,可以理解为系统缓存,例如,vi打开一个文件。
    cached是用来给文件做缓存,可以理解为数据块缓存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 测试写入一个文件,就会被缓存到缓冲区中,当下一次再执行这个测试命令时,写入速度会明显很快。

    4)Swap用途
    Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。
    swap清理:
    swapoff -a && swapon -a
    注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大

    5)释放缓存区内存的方法
        a)清理pagecache(页面缓存)

    1

    # echo 1 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=1

      b)清理dentries(目录缓存)和inodes

    1

    # echo 2 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=2

      c)清理pagecache、dentries和inodes

    1

    # echo 3 > /proc/sys/vm/drop_caches     或者 # sysctl -w vm.drop_caches=3

      上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!

        另外,可以使用sync命令来清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存

    1

    # sync

    --------------------友情提示一下----------------------
    上面操作在大多数情况下都不会对系统造成伤害,只会有助于释放不用的内存。
    但是如果在执行这些操作时正在写数据,那么实际上在数据到达磁盘之前就将它从文件缓存中清除掉了,这可能会造成很不好的影响。那么如果避免这种事情发生呢?
    因此,这里不得不提一下/proc/sys/vm/vfs_cache_pressure这个文件,告诉内核,当清理inoe/dentry缓存时应该用什么样的优先级。

     

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    vfs_cache_pressure=100    这个是默认值,内核会尝试重新声明dentries和inodes,并采用一种相对于页面缓存和交换缓存比较”合理”的比例。

    减少vfs_cache_pressure的值,会导致内核倾向于保留dentry和inode缓存。

    增加vfs_cache_pressure的值,(即超过100时),则会导致内核倾向于重新声明dentries和inodes

     

    总之,vfs_cache_pressure的值:

    小于100的值不会导致缓存的大量减少

    超过100的值则会告诉内核你希望以高优先级来清理缓存。

     

    其实无论vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。

    如果将此值设置为10000,系统将会将缓存减少到一个合理的水平。

     

     

    释放内存前先使用sync命令做同步,以确保文件系统的完整性,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

    /proc是一个虚拟文件系统,可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

    drop_caches的值可以是0-3之间的数字,代表不同的含义:
    0:不释放(系统默认值)
    1:释放页缓存
    2:释放dentries和inodes
    3:释放所有缓存

    释放完内存后改回去让系统重新自动分配内存。
    echo 0 >/proc/sys/vm/drop_caches

     

    其他参考:

    http://www.cnblogs.com/kevingrace/p/5991604.html

    https://linux.cn/article-5627-weibo.html

    http://www.cnblogs.com/focai/p/5829897.html

    http://blog.csdn.net/u014227228/article/details/46848623

    展开全文
  • 在本篇文章里小编给大家整理了关于Linux系统清除缓存的方法和实例内容,需要的朋友们参考下。
  • linux刷新dns缓存We may drop the file system caches on Linux to free up memory for applications. Kernels 2.6.16 and newer provide a mechanism via the /proc/ to make the kernel drop the page cache and/...

    linux刷新dns缓存

    We may drop the file system caches on Linux to free up memory for applications. Kernels 2.6.16 and newer provide a mechanism via the /proc/ to make the kernel drop the page cache and/or inode and dentry caches on command. We can use this mechanism to free up the memory. However, this is a non-destructive operation that only free things that are completely unused and dirty objects will not be freed until written out to disk. Hence, we should flush these dirty objects to disk first. We can run sync to flush them out to disk. And the drop operations by the kernel will free more memory.

    我们可能会在Linux上删除文件系统缓存,以释放应用程序的内存。 内核2.6.16及更高版本通过/proc/提供了一种机制 ,以使内核根据命令删除页面缓存和/或inode和dentry缓存。 我们可以使用这种机制释放内存。 但是,这是一种非破坏性的操作,只有释放完全未使用的东西和脏对象之后,才将其释放到磁盘中,然后再释放它们。 因此,我们应该先将这些脏对象冲洗到磁盘上。 我们可以运行同步以将它们刷新到磁盘。 内核的删除操作将释放更多的内存。

    We can flush caches of the file systems by two steps:

    我们可以通过两个步骤来刷新文件系统的缓存:

    刷新文件系统缓冲区 (Flush file system buffers)

    Call the sync command:

    调用sync命令:

    # sync

    免费的页面缓存,牙科和索引节点 (Free pagecache, dentries and inodes)

    Just echoing a number to /proc/sys/vm/drop_caches:

    只是在/ proc / sys / vm / drop_caches中回显一个数字:

    # echo 3 > /proc/sys/vm/drop_caches

    翻译自: https://www.systutorials.com/linux-flushing-file-system-caches/

    linux刷新dns缓存

    展开全文
  • linux系统读写缓存

    千次阅读 2014-10-14 18:50:07
    1. 操作系统缓存linux世界里,一切可读写设备都可看作是文件。文件cache设计的好坏直接影响着文件系统和磁盘的性能。最直观的是使用free命令看到的cached列。 这里面的cached列就是操作系统缓存,操作...
  • Linux清空系统缓存

    千次阅读 2014-03-22 21:52:20
    清空缓存: echo 1|sudo tee /proc/sys/vm/drop_caches 查看系统内存占用信息(单位是MB): free -m 例如: $ echo 1|sudo tee /proc/sys/vm/drop_caches [sudo] password for chenjianfei: 1 $ free -...
  • linux内核缓存

    2019-05-10 11:00:32
    Linux缓存 I/O 机制中,操作系统会将 I/O 的数据缓存在文件系统的页缓存( page cache )中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。...
  • linux实现缓存安装

    2018-04-17 10:45:46
    linux实现缓存安装,适用于centos和redhat操作系统。。。
  • 5款最好的免费Linux缓存系统.pdf
  • Linux查看缓存命令

    千次阅读 2020-12-23 14:17:33
    Linux缓存查看命令。buffer和cache对比
  • Linux系统清除缓存【整理】

    千次阅读 2018-05-18 13:39:29
    1)缓存机制介绍在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则...
  • Linux 下清理系统缓存并释放内存

    万次阅读 多人点赞 2018-05-31 17:53:03
    因此我们很有必要手动清理系统缓存释放内存。 我们在清理缓存前应该先 sync下 因为系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中去,因为怕你在操作的过程中因为断电等原因遗失数据,所以在...
  • Linux)释放系统缓存操作

    千次阅读 2018-05-30 16:33:19
    Linux系统中有先进的缓存机制,会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作,有效缩短 I/O系统调用(比如read,...
  • Linux文件系统缓存机制

    千次阅读 2018-11-13 09:20:24
    Linux文件系统缓存机制
  • Linux清除系统缓存释放内存命令介绍

    万次阅读 2017-03-17 10:24:21
    Linux/Centos/Ubuntu清除系统缓存释放内存命令具体操作步骤  为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要 Cache方式:...
  • Linux文件系统的页缓存

    千次阅读 2018-01-26 19:02:15
    Linux系统内核为文件提供了一个缓存,目的是将一些磁盘上的数据缓存到RAM中,这样可以加快文件数据的访问——给定inode索引节点和文件页面偏移量时,可以快速地找到RAM中相应的文件页内容。这个能在称为页缓存(page...
  • linux系统下清理redis缓存 1、首先找到redis下的src目录,执行以下命令(或./redis-cli -h 127.0.0.1 -p 6379) 2、执行dbsize命令,用于返回当前数据库的 key 的数量 出现上面这种情况说明redis设置了密码,需要...
  • Linux内存缓存解读

    千次阅读 2018-01-06 11:17:09
    Linux内存缓存解读 在Windows下资源管理器查看...而当我们使用free命令查看Linux系统内存使用情况时,会发现内存使用一直处于较高的水平,即使此时系统并没有运行多少软件。这正是Windows和Linux在内存管理上的区
  • 在不同的系统中刷新DNS缓存的方法如下:Mac OS X 系统,终端输入: sudo dscacheutil -flushcache,Linux系统,终端输入: /etc/init.d/nscd restart,感兴趣的你可以参考下
  • 如何禁止linux文件系统缓存

    千次阅读 2010-11-11 18:33:00
    http://www.linuxquestions.org/questions/linux-kernel-70/how-to-disable-filesystem-cache-627012/<br />  Well, preventing read cache usage is pretty simple. You can do some raw-read tests ...
  • linux socket 缓存

    千次阅读 2017-10-10 21:56:09
    问题:同时与多个主机建立连接,如果这些主机同时发生数据到...解答:系统为每个socket建立一个缓存,IP层组包进程在收到数据包后会把数据放入socket缓存。 应用程序通过socket系统调用和远程主机进行通讯,每一个so

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 350,585
精华内容 140,234
关键字:

linux的系统的缓存

linux 订阅