当前位置: 首页 > 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命令

相关文章:

Linux下的buff/cache

目录 一、buff/cache二、buff/cache与内存管理三、buff/cache对系统性能的影响四、优化buff/cache1、调整vm.dirty_ratio和vm.dirty_background_ratio2、配置vm.swappiness3、配置vm.vfs_cache_pressure 五、释放buff/cache 一、buff/cache 按照Linux内核文档所说的&#xff0…...

3.wifi开发,网络编程

网络协议栈LwIP WiFi UDP Clinet编程 WiFi UDP Server编程 WiFi TCP Client编程 WiFi TCP Server编程 一。LWIP原理介绍,API介绍,文件结构 1.Lwip支持的协议 2.API 3.文件结构 1.api目录:应用程序接口文件。 2.arch目录:与硬件和…...

Android框架mqtt库无法兼容高版本android13的问题

最近使用mqtt库,测试的时候发现在Android12及以下正常,但在13上闪退,闪退日志如下 java.lang.IllegalArgumentException: com.yummo.xcar: Targeting S (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be spe…...

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果...

安全基础 --- nodejs沙箱逃逸

nodejs沙箱逃逸 沙箱绕过原理:沙箱内部找到一个沙箱外部的对象,借助这个对象内的属性即可获得沙箱外的函数,进而绕过沙箱 前提:使用vm模块,实现沙箱逃逸环境。(vm模式是nodejs中内置的模块,是no…...

Redis集群架构搭建——主从、哨兵、集群

上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis,在这篇文章中,将会教大家搭建Redis的几种高可用的架构:主从架构、哨兵集群、Cluster集群。 本篇文章使用的redis版本为6.2.13,不同版本的配置可能有略微的区别&a…...

39 | selenium基础架构,UI测试架构

什么是测试基础架构? 测试基础架构指的是,执行测试的过程中用到的所有基础硬件设施以及相关的软件设施。因此,我们也把测试基础架构称之为广义的测试执行环境。通常来讲,测试基础架构主要包括以下内容: 执行测试的机器…...

2023研究生数学建模E题保姆级思路 出血性脑卒中临床智能诊疗

本次E题是一道J机器学习题目,难度也比较高,该题一般是有正确结果的,容易踩坑,不太建议小白选择,小白可以选择D题,D题思路也可以看另一篇文章,总的难度都不算低,这三道的难度接近&…...

画电路板通用知识

快捷键 快捷键 功能 shift+鼠标滚轮左右移动Ctrl+鼠标滚轮放大缩小 (Alt+) 鼠标滚轮上下移动滚轮按下鼠标滚轮可任意方向拖动图纸(可以一直保持按下状态或者按一下松开) CTRL+鼠标左键拖动复制该元件CTRL+E编辑选中元件的属性CTRL+鼠标左键 元叠选izoom in,聚焦光标所…...

三相组合式过电压保护器试验

三相组合式过电压保护器试验 试验目的 三相组合式过电压保护器主要分为有带串联间隙过压保护器和无间隙过压保护器两大类,其试验项目内容要求分别使用高压工频交流和高压直流电源。 三相组合式过电压保护器试验,主要是为了及早发现设备内部绝缘受潮及…...

C++提高编程:01 模板

这里写目录标题 1 模板的概念2 函数模板2.1 函数模板语法2.2 函数模板注意事项2.3 函数模板案例2.4 普通函数与函数模板的区别2.5 普通函数与函数模板的调用规则2.6 模板的局限性 3 类模板3.1 类模板语法3.2 类模板与函数模板区别3.3 类模板中成员函数创建时机3.4 类模板对象做…...

Latex Overleaf 写作问题记录

Latex & Overleaf 写作问题记录 公式换行及排列整齐 \begin{equation} \begin{split}Y & a1\\&b2 \end{split} \end{equation}顶格 \noindent求和符号 求和符号(上下限上下排列) \sum\limlits求和符号(上下限右边排列&#…...

OpengL之纹理

简介 我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点…...

IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长

9月20~22日,IOTE国际物联网展深圳站在深圳国际会展中心正式召开。本届展会以“IoT构建数字经济底座”为主题,聚焦物联网技术助推数字经济发展的核心动力。美格智能携前沿技术成果亮相展会,与参展观众深入交流。 展会上,美格智能带…...

科普:什么是视频监控平台?如何应用在场景中?

随着科技的发展,监控无处不在,就像一张密不透风的网,将生活中的角角落落都编织在一起。可是,你真的知道什么是安防视频监控平台吗?它可不止是一个简单的通电摄像头,如今的视频监控平台,涵盖了无…...

arcgis js 缓冲区分析(GP服务)

arcgis文档中的有提供缓冲区的接口 geometryService,但要4.19后版本才提供 案例中使用的版本为4.16,因此这里的缓冲区分析借助gp工具 新建服务 1、打开arcmap 选择工具将要存放的文件夹,右键> new > Toolbox 对新建好的工具的mode…...

【word格式】mathtype公式插入 | 段落嵌入后格式对齐 | 字体大小调整 |空心字体

1. 公式嵌入 推荐在线latex编辑器,可以截图转 latex 识别率很高 https://www.latexlive.com/home 美中不足,不开会员每天只能用3次识别。 通过公式识别后,输出选择align环境,然后在mathtype中直接粘贴latex就可以转好。 2.公式…...

【动态规划刷题 17】回文子串 最长回文子串

647. 回文子串 链接: 647. 回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由…...

mysql 每日自动备份数据库

在 MySQL 中,你可以使用定时任务来每日自动备份数据库。通常,最常用的方法是使用操作系统的定时任务工具(如cron)来调度备份操作。以下是一些步骤来设置每日定时备份MySQL数据库: 创建备份脚本:首先&#x…...

【计算机网络】图解路由器(二)

本系列包含: 图解路由器(一)图解路由器(二) 图解路由器(二) 21、什么是静态路由?22、什么是动态路由?23、动态路由有哪些类型?24、什么是 RIP ?2…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题,不一定会立刻崩,但一旦积累,就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能,而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...

第2篇:BLE 广播与扫描机制详解

本文是《BLE 协议从入门到专家》专栏第二篇,专注于解析 BLE 广播(Advertising)与扫描(Scanning)机制。我们将从协议层结构、广播包格式、设备发现流程、控制器行为、开发者 API、广播冲突与多设备调度等方面,全面拆解这一 BLE 最基础也是最关键的通信机制。 一、什么是 B…...