Linux下的buff/cache
目录
- 一、buff/cache
- 二、buff/cache与内存管理
- 三、buff/cache对系统性能的影响
- 四、优化buff/cache
- 1、调整vm.dirty_ratio和vm.dirty_background_ratio
- 2、配置vm.swappiness
- 3、配置vm.vfs_cache_pressure
- 五、释放buff/cache
一、buff/cache
按照Linux内核文档所说的,buff/cache是Linux内核用于缓存文件系统数据的算法
。
换句话说,buff/cache
就是Linux内核的缓存机制
,用于存储被频繁读取的文件系统数据
,包括但不限于文件系统的元数据和文件内容
。因为读取缓存相较于从磁盘读取的速度要快得多,所以buff/cache
可以大大提升操作系统的整体性能,尤其是IO性能。
buff/cache
是用于性能提升的一种技术手段,它通常与之相对应的是swap(虚拟内存)。swap
是用于内存管理的一种技术,通常用于解决内存不足的问题。
二、buff/cache与内存管理
在Linux系统中,内存管理是一项极为重要的任务,内核通过分配页面来管理系统的内存。在保证内存有足够的空闲页可用的前提下,内核会尽量将页面分配给进程,以便进行内存管理。但是,当进程的内存需求超过了系统可用内存,内核就需要进行一些特殊的处理,通常是将部分进程的页置换到磁盘上的swap分区
中。
buff/cache
则在内核获得了足够的可用空闲页面之后,利用这些页面创建缓存,并将被频繁读取的文件系统数据存储在缓存中。如果内核需要更多的空间来执行其他任务,可以终止缓存并释放内存。
buff/cache
和swap
的功能截然不同,但它们都可以用于解决内存管理问题。Linux中内存管理是一门复杂的科学,buff/cache只是其中的一部分。
三、buff/cache对系统性能的影响
buff/cache
对系统性能的影响直接取决于数据的读取情况。如果大部分数据都被频繁读取,那么buff/cache
对系统性能的提升就会更加显著。
在Linux系统中,当进程需要访问文件系统时,内核会首先在buff/cache
中查找是否存在所需数据的缓存,如果找到了,就直接从缓存中读取。如果没有找到,那么内核就需要从磁盘中读取数据。相比于从磁盘中读取数据,从缓存中读取数据的速度要快得多。这就是buff/cache
对系统性能的提升。
在实际应用中,buff/cache
对系统性能的提升可以非常显著。特别是在IO密集型应用中,buff/cache
可以大大提高磁盘IO的速度,从而提升整个应用的响应速度。
四、优化buff/cache
为了最大化地利用buff/cache
,管理员可以采取以下几种优化策略:
1、调整vm.dirty_ratio和vm.dirty_background_ratio
这两个参数用于控制内核将数据写入磁盘之前可用的内存大小。默认值设置得很保守,可以根据系统的需求进行调整,以提高系统的性能。
/etc/sysctl.conf:
# 修改 /etc/sysctl.conf 文件中的参数
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
2、配置vm.swappiness
vm.swappiness控制内核在内存不足的情况下将数据交换到磁盘的速度。可以根据系统的实际情况进行调整,以提高系统的内存利用率。
/etc/sysctl.conf:
# 修改 /etc/sysctl.conf 文件中的参数
vm.swappiness = 10
3、配置vm.vfs_cache_pressure
vm.vfs_cache_pressure用于控制内核缓存元数据和内容的程度。可以根据系统的实际情况进行调整,以提高系统的性能。
/etc/sysctl.conf:
# 修改 /etc/sysctl.conf 文件中的参数
vm.vfs_cache_pressure = 50
五、释放buff/cache
清理脚本:
#!/bin/bash
echo "开始清理缓存"
# 写入硬盘,防止数据丢失
sync;sync;sync;
# 延迟10S
sleep 10
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
echo "清理缓存结束"
可使用 free -h
命令查看是否释放成功,详细说明查看:Linux命令:free命令