linux系统管理--buffre/cache的释放
本篇文档主要讲述的是linux系统管理的 buffre/cache空间释放[root@VM_0_8_centos ~]# free -htotalusedfreesharedbuff/cacheavailableMem:992M170M78M...
本篇文档主要讲述的是linux系统管理的 buffre/cache空间释放
[root@VM_0_8_centos ~]# free -h
total used free shared buff/cache available
Mem: 992M 170M 78M 388K 744M 640M
Swap: 0B 0B 0B
含义注释:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache (已用)的内存数:used - buffers - cached
+buffers/cache(可用)的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
此处和大家说一下什么是cache
为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
cached主要负责缓存文件使用, 日志文件过大造成cached区内存增大把内存占用完 .
Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。
手动释放buffer/cache
释放方法有三种(系统默认值是0):
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
注意:在清空缓存前我们需要在linux系统中执行一下sync命令,将缓存中的未被写入磁盘的内容写到磁盘上
释放的方法
[root@VM_0_8_centos ~]# free -h
total used free shared buff/cache available
Mem: 992M 170M 78M 388K 744M 640M
Swap: 0B 0B 0B
[root@VM_0_8_centos ~]# sync
[root@VM_0_8_centos ~]# sync
[root@VM_0_8_centos ~]# echo 3 >/proc/sys/vm/drop_caches
[root@VM_0_8_centos ~]# free -h
total used free shared buff/cache available
Mem: 992M 169M 735M 388K 87M 702M
Swap: 0B 0B 0B
计划任务脚本
脚本copy过去直接执行就可以了
[root@VM_0_8_centos ~]# cat buffer.sh
#!/bin/bash
#discription:The script is release buffer/cache
#Writer by mslinux mail : mslinux@163.com
[ -e /var/spool/cron/root ]
if [ $? -eq 0 ]
then
cat >> /opt/buffer.sh << EOF
#!/bin/bash
#discription:The scipt is release Buffer/cache
#writer by mslinux
sync
sync
sync
echo 3 > /proc/sys/vm/drop_caches
EOF
echo "0 2 * * * /usr/bin/bash /opt/buffer.sh" >> /var/spool/cron/root
if [ $? -eq 0 ]
then
systemctl restart crond.service
fi
else
echo " Not find cront list Please exit"
fi
[root@VM_0_8_centos ~]# bash buffer.sh
更多推荐
所有评论(0)