当前位置: 首页 > news >正文

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/cacheswap的功能截然不同,但它们都可以用于解决内存管理问题。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命令

http://www.lryc.cn/news/173161.html

相关文章:

  • 3.wifi开发,网络编程
  • Android框架mqtt库无法兼容高版本android13的问题
  • 一招解除csdn复制限制
  • 安全基础 --- nodejs沙箱逃逸
  • Redis集群架构搭建——主从、哨兵、集群
  • 39 | selenium基础架构,UI测试架构
  • 2023研究生数学建模E题保姆级思路 出血性脑卒中临床智能诊疗
  • 画电路板通用知识
  • 三相组合式过电压保护器试验
  • C++提高编程:01 模板
  • Latex Overleaf 写作问题记录
  • OpengL之纹理
  • IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长
  • 科普:什么是视频监控平台?如何应用在场景中?
  • arcgis js 缓冲区分析(GP服务)
  • 【word格式】mathtype公式插入 | 段落嵌入后格式对齐 | 字体大小调整 |空心字体
  • 【动态规划刷题 17】回文子串 最长回文子串
  • mysql 每日自动备份数据库
  • 【计算机网络】图解路由器(二)
  • 流媒体及直播相关知识
  • 数据治理-数据资产估值
  • 点云从入门到精通技术详解100篇-机载 LiDAR 点云滤波及分类
  • 【SLAM】 前端-视觉里程计之相对位姿估计
  • git format-patch打补丁
  • 大数据Flink(八十三):SQL语法的DML:With、SELECT WHERE、SELECT DISTINCT 子句
  • C++:list
  • 【C++】搜索二叉树底层实现
  • C8051F020 SMBus一直处于busy状态解决办法
  • Activiz 9.2 for Linux Crack
  • 数据结构 - 链表