咱们在应用
free -h
查看零碎内存的时候, 有工夫会发现buff/cache
很高
> free -h
available 示意应用程序能够申请到的内存
什么是 buff
buff(Buffer Cache)是一种 I / O 缓存,用于内存和硬盘的缓冲,是 io 设施的读写缓冲区。依据磁盘的读写设计的,把扩散的写操作集中进行,缩小磁盘碎片和硬盘的重复寻道,从而进步零碎性能。
什么是 cache
cache(Page Cache)是一种高速缓存,用于 CPU 和内存之间的缓冲 , 是文件系统的 cache。
把读取过的数据保存起来,从新读取时若命中(找到须要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会依据读取频率进行组织,把最频繁读取的内容放在最容易找到的地位,把不再读的内容一直往后排,直至从中删除。它们都是占用内存。两者都是 RAM 中的数据。简略来说,buff 是行将要被写入磁盘的,而 cache 是被从磁盘中读出来的。
目前过程正在理论被应用的内存的计算形式为
used-buff/cache
,通过开释 buff/cache 内存后,咱们还能够应用的内存量free+buff/cache
。通常咱们在频繁存取文件后,会导致 buff/cache 的占用量增高。
革除buff/cache
手动革除
> sync
> echo 1 > /proc/sys/vm/drop_caches
> echo 2 > /proc/sys/vm/drop_caches
> echo 3 > /proc/sys/vm/drop_caches
- sync:将所有未写的零碎缓冲区写到磁盘中,蕴含已批改的 i -node、已提早的块 I / O 和读写映射文件
- echo 1 > /proc/sys/vm/drop_caches:革除 page cache
- echo 2 > /proc/sys/vm/drop_caches:革除回收 slab 分配器中的对象(包含目录项缓存和 inode 缓存)。slab 分配器是内核中治理内存的一种机制,其中很多缓存数据实现都是用的 pagecache。
- echo 3 > /proc/sys/vm/drop_caches:革除 pagecache 和 slab 分配器中的缓存对象。
/proc/sys/vm/drop_caches 的值, 默认为 0
定时工作革除
> vim clean.sh
#!/bin/bash# 每两小时革除一次缓存
echo "开始革除缓存"
sync;sync;sync #写入硬盘,避免数据失落
sleep 20# 提早 20 秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
> chmod +x clean.sh
> crontab -e
# 每两小时执行一次
0 */2 * * * /opt/clean.sh
- 设置 crond 启动以及开机自启
- systemctl start crond.service
- systemctl enable crond.service
原文链接:https://rumenz.com/rumenbiji/…
微信公众号: 入门小站