Linux之清理linux内存cache

转自:https://www.cnblogs.com/madsnotes/articles/5740495.htmlhtml

 

频繁的文件访问会致使系统的Cache使用量大增。例如:在使用grep从不少文件中搜索特定数据串的时候,发现内存使用迅速提升,主要是cache的使用占用了至关多的内存。在使用下面命令的时候忽视了文件的数量和文件大小,致使cache突增。node

# grep -e "dst_string" ./*  

  你们在使用shell编程的时候必定要注意通配符的使用,这里尤为提醒你们就是星号(*)的使用,星号当然方便,但要适度使用。  这里主要仍是记录如何手动清理linux内存cache,由于上面的操做使用的大量的cache。linux

复制代码
# 使用free查看当前系统内存使用状况
[root@bogon ~]# free
             total       used       free     shared    buffers     cached
Mem:       1938784      89628    1849156        248         60      17644
-/+ buffers/cache:      71924    1866860
Swap:      2097148          0    2097148

# 执行grep操做
[root@bogon ~]# grep -e "dsf" ./*

# 再次查看内存使用状况
[root@bogon ~]# free
             total       used       free     shared    buffers     cached
Mem:       1938784     100020    1838764        244       3608      26020
-/+ buffers/cache:      70392    1868392
Swap:      2097148          0    2097148
复制代码

下面介绍如何清理cachedshell

复制代码
# 执行sync同步数据,防止数据或操做丢失(重要),将未写的系统缓冲区写到磁盘中。包含已修改的 i-node、已延迟的块 I/O 和读写映射文件
sync
# 清理cached [root@bogon ~]# echo 3 > /proc/sys/vm/drop_caches # 查看清理cached后的内存使用状况 [root@bogon ~]# free total used free shared buffers cached Mem: 1938784 87116 1851668 240 188 17596 -/+ buffers/cache: 69332 1869452 Swap: 2097148 0 2097148
复制代码

 

drop_cache的详细文档以下,以便查阅.编程

复制代码
    Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
    To free pagecache:
    * echo 1 > /proc/sys/vm/drop_caches
    To free dentries and inodes:
    * echo 2 > /proc/sys/vm/drop_caches
    To free pagecache, dentries and inodes:
    * echo 3 > /proc/sys/vm/drop_caches
    As this is a non-destructive operation, and dirty objects are notfreeable, the user should run "sync" first in order to make sure allcached objects are freed.
    This tunable was added in 2.6.16.(只有内核在2.6.16以上的才支持)
复制代码
相关文章
相关标签/搜索