Linux下的buff/cache

2023-09-17 19:00:25


一、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命令

更多推荐

线性回归网络

李沐大神的《动手学深度学习》,是我入门机器学习的首课,因此在这里记录一下学习的过程。线性回归的从零开始实现线性回归是理解机器学习的基础,它经常用来表示输入和输出之间的关系。线性回归基于几个简单的假设:首先,假设自变量X和因变量y之间的关系是线性的,即y可以表示为X中元素的加权和,这里通常允许包含观测值的一些噪声。下面基

行业报告:视频直播美颜sdk对互联网直播产业的影响与前景

随着互联网直播产业的不断崛起,直播内容的质量和用户体验已成为成功的关键因素之一。本篇报告将深入研究视频直播美颜sdk对互联网直播产业的影响,并探讨其未来的前景。第一章:视频直播美颜sdk的基本概念1.1什么是视频直播美颜SDK?视频直播美颜sdk是一种软件工具包,旨在为互联网直播平台和应用程序提供实时的美颜和图像增强功

笔试面试相关记录(4)

(1)实现防火墙的主流技术有哪些?实施防火墙主要采用哪些技术-服务器-亿速云(yisu.com)(2)chararr[][2]={'a','b','c','d'};printf("%d",*(arr+1));输出的是谁的地址?字符c测试代码如下chararr[][2]={'a','b','c','d'};printf(

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离功能清单如下:首页工作台:待办工作、消息通知、预警信息,点击可进入相应的列表项目进度图表:选择(总体或单个)项目显示1、项目进度图表2、项目信息施工地图:1、展示当前角色权限下能看到的施工地图(

pom的配置策略

dependencyManagement和dependencies区别和联系参考:https://blog.csdn.net/Sunshineoe/article/details/121083505<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://mav

剔除数据中的异常值(python实现)

目录一、3σ原则二、箱线图发现异常值三、boxcox数据变换一、3σ原则该准则仅局限于对正态或近似正态分布的样本数据处理,此外,当测量次数少的情形用准则剔除粗大误差是不够可靠的。异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称离群点,异常值的分析也称为离群点的分析。在进行机器学习过程中,需要对数据集进行

Python进阶学习----一闭三器

目录​编辑前言一.三器1.迭代器(Iterator)1.1什么是可迭代对象1.2什么是迭代器1.3案例演示:以下是一个简单的迭代器示例,遍历一个列表并打印每个元素:1.4迭代器总结2.生成器(Generator)3.装饰器(Decorator)二.一闭4.闭包(Closure)总结:前言Python是一种功能强大而灵活

C2基础设施威胁情报对抗策略

威胁情报是指在信息安全和安全防御领域,收集、分析和解释与潜在威胁相关的信息,以便预先发现并评估可能对组织资产造成损害的潜在威胁,是一种多维度、综合性的方法,其通过信息的收集、分析和研判,帮助组织了解可能对其安全构成威胁的因素。这种方法不仅仅着重于技术层面,还包括了社会、心理、政治等多个维度,以此更好地应对不断变化和复杂

软件项目管理【UML-类图】

前言UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作。一般说来,在UML图中,只要掌握类图、用例图、时序图的使用,就能完成大部分的工作。也就是说,掌握UML的20%,就能做80%的事情。对于程序员来说,最频繁使用的莫过于类图。目录前言一、什么是类图二、类图中类表示法三、类图中具体类、抽象、接

UML基础与应用之面向对象

UML(UnifiedModelingLanguage)是一种用于软件系统建模的标准化语言,它使用图形符号和文本来描述软件系统的结构、行为和交互。在面向对象编程中,UML被广泛应用于软件系统的设计和分析阶段。本文将总结UML基础与应用之面向对象的重要概念和常用图形符号。一、面向对象编程基础:类与对象:类是对具有相同属性

软件设计师-UML基础教程

场景针对UML1.5各种模型图的构成和功能进行说明。UML概述UML简介UML(UnifiedModelingLanguage)为面向对象软件设计提供统一的、标准的、可视化的建模语言。适用于描述以用例为驱动,以体系结构为中心的软件设计的全过程。UML的定义包括UML语义和UML表示法两个部分。(1)UML语义:UML对

热文推荐