[转]Linux内存、Swap、Cache、Buffer详细解析

swap交换分区及buffers和cached swap交换分区 swap 是 linux 系统磁盘管理的一块特殊的分区,当实际的物理内存不足的时候,操作系统会从整个内存中,取出一部分暂时没在使用的内存,拿出来放到交换分区,从而提供给当前正在使用的程序,可以使用更多的内存。 使用 swap 分区的作用是,通过操作系统的调取,程序可以用到的实际内存,会远大于物理内存。 swap 分区大小,必须根据物理内存和硬盘容量来计算 -当你的物理内存小于 1G,必须使用 swap 提升内存使用量 -内存使用过多的应用程序,比如图像,视频等,必须用 swap 阅读详情

原文出处:https://my.oschina.net/circleblog/blog/715711

1. 通过free命令看Linux内存

total:总内存大小。

used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。

free:空闲的内存大小。

shared:进程间共享内存(一般不会用,可以忽略)。

buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。

cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。

  

-/+ buffers/cache看作两部分:

-buffers/cache:正在使用的内存大小(注意不是used部分,因为buffers和cached并不是正在使用的,组织和人民需要是它们是可以释放的),其值=used-buffers-cached。

+buffers/cache:可用的内存大小(同理也不是free表示的部分),其值=free+buffers+cached。

  

Swap:硬盘上交换分区的使用大小。设计的目的就是当上面提到的+buffers/cache表示的可用内存都已使用完,新的读写请求过来后,会把内存中的部分数据写入磁盘,从而把磁盘的部分空间当做虚拟内存来使用。

  

2. Buffer和Cache介绍

Cache(缓存),为了调高CPU和内存之间数据交换而设计,Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。

Cache主要是针对读操作设计的,不过Cache概念可能容易混淆,我理解为CPU本身就有Cache,包括一级缓存、二级缓存、三级缓存,我们知道CPU所有的指令操作对接的都是内存,而CPU的处理能力远高于内存速度,所以为了不让CPU资源闲置,Intel等公司在CPU内部集成了一些Cache,但毕竟不能放太多电路在里面,所以这部分Cache并不是很大,主要是用来存放一些常用的指令和常用数据,真正大部分Cache的数据应该是占用内存的空间来缓存请求过的数据,即上面的Cached部分(这部分纯属个人理解,正确与否有待考证)。

Buffer主要是针对写操作设计的,更细的说是针对内存和硬盘之间的写操作来设计的,目的是将写的操作集中起来进行,减少磁盘碎片和硬盘反复寻址过程,提高性能。在Linux系统内部有一个守护进程会定期清空Buffer中的内容,将其写入硬盘内,当手动执行sync命令时也会触发上述操作。

  

3. 常见症状

症状一:在Linux中频繁存取文件,物理内存很快用光,而cached一直在增长。

解释:Linux会对每次请求过的数据缓存在cache里,好处就是CPU的处理速度远远高于内存,所以在CPU和内存通讯的时候可以快速从cache中命中结果返回。

症状二:Swap被占用。

解释:内存可能不够了,才会占Swap,所以Swap可以作为服务器监控的一项指标,引起注意。

  

4. 手动清理Swap和buffers/cache

(1) 清理Swap

    swapoff -a && swapon -a

    操作说明:如果已经使用了Swap,且当前清空下+buffers/cache还有空间,在执行swapoff -a操作时,会触发把Swap中的内容交换到内存中,数据不会丢失。

(2) 清理buffers/cache:

    sync; sync; sync;&& echo 3 >/proc/sys/vm/drop_caches

    sleep 2

    echo 0 > /proc/sys/vm/drop_caches

    操作说明:

    sync-->将缓存的内从写回到硬盘中;

    echo 3 >/proc/sys/vm/drop_caches-->修改drop_caches的值为3,默认为0,改为3系统会清理缓存的内容;

    sleep 2 --> 等一下,防止上一步没执行完;

    echo 0 >/proc/sys/vm/drop_caches --> 改回默认值

  

5. 总结

通过上面的分析可以知道,当空闲物理内存不多时,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作诗额外的空闲内存。swap如果被频繁调用,bi,bo长时间不为0,则才是内存资源是否紧张的依据。通过free看资源时,实际主要关注-/+ buffers/cache的值就可以知道内存到底够不够了。

【图解Linux内核】Page Cache,字节跳动架构师面试 SwapCached是在打开Swap分区后,把Inactive(anon)+Active(anon)这两项里的匿名页给交换到磁盘(swap out),然后再读入到内存(swap in)后分配的内存。由于读入到内存后原来的Swap File还在,所以SwapCached也可以认为是File-backed page,即属于Page Cache。这是为了减少I/O。SwapCached只在Swap分区打开时才有,推荐生产环境关闭Swap分区,因为Swap过程产生的I/O容易引起性能抖动。 阅读详情

相关推荐

Brainstorm简单分析近红外数据(fNIRS)(一)

Brainstorm分析fNIRS数据

weixin_43604817的博客 1351

Linux中的Page cache和Buffer cache详解

网上查了查,这里做一下记录。 1、内存情况 在讲解Linux内存管理时已经提到,当你在Linux下频繁存取文件后,即使系统上没有运行许多程序,也会占用大量的物理内存。这是因为当你读写文件的时候,Linux内核为了提高读写的性能和速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory 也不会自动释放,...

zzhongcy的专栏 1万+

基于DBSCAN聚类算法的超像素实时分割

Real-Time Superpixel Segmentation by DBSCAN Clustering Algorithm 摘要 在本文中,我们提出了一种基于密度的带噪声应用空间聚类(DBSCAN)算法的50帧/秒实时图像超像素分割方法。为了降低超像素算法的计算量,我们采用了一种快速的两步框架。在第一个聚类阶段,使用具有颜色相似性和几何约束的DBSCAN算法对像素进行快速聚类,然后在第二个合并阶段,通过颜色和空间特征定义的距离度量,将小簇按其邻域合并为超像素。为了在这两个步骤中获得更好的超像素,定义了

yttt的博客 3492

物理内存、虚拟内存、buffers、cached、共享内存、swap

物理内存: 实际使用的内存; 虚拟内存: 虚拟内存是操作系统内核为了对进程地址空间进行管理(process address space management)而精心设计的一个逻辑意义上的内存空间概念。我们程序中的指针其实都是这个虚拟内存空间中的地址。比如我们在写完一段C++程序之后都需要采用g++进行编译,这时候编译器采用的地址其实就是虚拟内存空间的地址。因为这时候程序还没...

weixin_30325071的博客 310

Cherry Studio部署MCP服务报错全记录:从零解决‘Connection closed‘问题

本文详细记录了在Cherry Studio中部署MCP服务时遇到‘Connection closed’报错的完整排查与解决过程。文章从环境依赖(UV、Bun)的安装验证、绝对路径配置、网络镜像源设置,到服务端手动调试与Cherry Studio配置检查,提供了一套系统性的解决方案,帮助开发者彻底解决此类连接问题。

g9h0i1的博客 761

颠覆性创新的测量框架与跨领域实证分析

颠覆性创新作为科技发展的重要驱动力,其核心在于实现知识体系的范式转换。从技术原理看,这类创新通常具备知识替代、网络重构和跨领域渗透三大特征,通过引用网络分析和文本挖掘等方法可量化评估其影响力。在工程实践中,CD指数、DI指数等测量工具帮助研究者识别具有突破潜力的成果,而深度学习等新兴技术进一步提升了评估精度。当前AI、半导体等领域的热门技术发展表明,模块化架构和产业协同能有效促进颠覆性创新。面对全球范围内创新颠覆性下降的趋势,优化科研评价体系、构建跨学科协作网络成为关键应对策略。

weixin_29735807的博客 321

Linux内存、Swap、Cache、Buffer详细解析

Linux内存、Swap、Cache、Buffer详细解析 马哥Linux运维前天 1. 通过free命令看Linux内存 total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 shared:进程间共享内存(一般不会用,可以忽略)。 buffers:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。 cached:内存中读完缓..

wzlsunice88的博客 546

西门子博图TIA Portal V18实战:用LAD梯形图快速上手一个电机启停控制程序

本文详细介绍了如何在西门子博图TIA Portal V18中使用LAD梯形图快速实现电机启停控制程序。从项目创建、硬件组态到LAD编程和仿真调试,逐步引导读者掌握PLC编程的核心逻辑,特别适合工业自动化领域的初学者快速上手。

weixin_30617737的博客 690

内存Memory Swap Buffer Cache

1、swap 开关,创建 2、buffer 清空/释放,和cache 的区别与联系 3、内存条相关信息dmidecode 4、内存使用free 和/proc/meminfo 5、 进程使用内存pmap

qq_41746933的博客 1201

Unity2018连接MySQL数据库

当前在做的一个Unity项目需要连接到MySQL数据库,弄了一整天,排了很多错,终于在Unity上成功连接到MySQL数据库了,所以分享一下,避免有这个需求的朋友不用花那么多时间。 我使用的软件是 Unity20184.0f1 + mysql-8.0.24 导入 MySql.Data.dll 首先需要把 MySql.Data.dll 导入到Assets/Plugins 这个dll需要安装Connector/NET,在安装目录\Assemblies\v4.0中拿到,最好不要下载版本太高的,版本太高导入的时候

ZLX的博客 9449

PCL 模型滤波器【2025最新版】

根据给定的模型系数在点云中提取对应于模型的点云数据。博客长期更新,本文最新更新时间为:2025年6月17日。

点云侠的博客 4384

Linux内存 Cache/Buffer/Swap解读

3、一般现在比较高的配置内存超过16G以上都不太需要配置SWAP,因为使用SWAP毕竟会造成效率变低,一般在低内存机器上配置以防OOM。Swap通常称为交换分区,这是一块特殊的内存空间,即当实际物理内存不够用时,操作系统将暂时不用的数据从内存取出放到交换分区中,从而为当前运行的程序腾出足够的空间。4、Cache占过高,看起来很不顺眼的时候,你也可以使用echo 3 > /proc/sys/vm/drop_caches清除。of=/tmp/swapfile:输出至/tmp/swapfile文件。

程序员青菜学厨记 1468

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux 物理内存用完了_Linux内存、Swap、Cache、Buffer详细解析

作者:CircleBloghttps://my.oschina.net/circleblog/blog/7157111. 通过free命令看Linux内存total:总内存大小。used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。free:空闲的内存大小。shared:进程间共享内存(一般不会用,可以忽略)。buffers:内存中写完的东西缓存起来,...

weixin_35944230的博客 243

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux中内存使用,swap,cache,buffer的含义总结

首先介绍一下linux中内存是如何使用的。 当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存来使用,也称为Swap。如果给所有应用分配足够内存后,物理内存还有剩余,linux会尽量再利用这些空闲内存,以提高整体I/O效率,其方法是把这部分剩余内存再划分为cache及buffer两部分加以利用。 从磁盘读...

tanghao0550的专栏 529

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux下内存、Swap、Cache、Buff详解

环境:ubuntu16.04 1.执行命令free输出如下: Mem:是内存的使用情况。 total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 shared:进程间共享内存(一般不会用,可以忽略)。 buff:内存中写完的东西缓存起来,这样快速响应请求,后面数据再定期刷到磁盘上。 cached:内存中读完缓存起来内容占的大小(这部分是为了下次查询时快速返回)。 *available:显示还可以被应用程序使用的物理内

chengziwang的博客 1597

清理buffer/cache/swap的方法梳理

CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行。在此讲解几点关于Linux系统安装后的基础优化操作。注意:本次优化都是基于CentOS(5.8/6.7)。 下面我就为大家简单讲解几点关于Linux系统安装后的基础优化操作。 注意:本次优化都是基于CentOS(5.8/6.7)。关于5.8和6.7两者优化时的小区别,我会在文中提及的。 优化条目: 1 修改i...

weixin_42625143的博客 2595

Linux 内存机制以及手动释放 swap 和 buffer 和 cache

本文介绍linux内存机制、虚拟内存swap、buffer/cache释放等原理及实操。 一、什么是linux的内存机制? 二、linux什么时候开始使用虚拟内存(swap)? 三、怎么释放内存? 四、怎么释放swap? 一、什么是linux的内存机制? 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。 物理内存就是系统硬件提供的内存大小,...

小楼一夜听春雨,深巷明朝卖杏花 2033
上一篇: 一些好用的mysql运维命令
下一篇: nginx流量攻击的防范
LinuxG_G
博客等级 码龄15年 58粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值