Linux 系统Buffers与Cached的区别
1.概念介绍
在Linux系统使用“free -w”命令查看内存使用情况。该文通过查看源码的方式,介绍下图中buffers和cache的具体含义。
2.源码分析
该文参考的内核版本为4.19。在我们查看系统资源使用情况时,一般我们都借助Linux提供的/proc 目录下的信息进行分析。比如“free -w”命令的信息来源于/proc/meminfo。/proc下的信息的具体含义,可以分析内核源码获得。
2.1 /proc/meminfo信息
通过命令“cat /proc/meminfo”可以获取系统中关于内存的整体信息,我们重点关注下图信息中的Buffers和Cached项。
上图中Buffers的数值等于“free -w”中buffers对应的数值。而Cached的数值小于“free -w”中cache对应的数值。这是因为,Cached和SReclaimable表示的数值和等于“free -w”中cache对应的数值。SReclaimable表示可回收的Slab缓存,该文不关心SReclaimable数值,主要分析Cached和Buffers数值。
2.2 源码分析
内核源代码fs/proc/meminfo.c文件中包含了命令“cat /proc/meminfo”具体执行步骤和显示的信息,源代码如下(只保留必要的函数)。
对应的公式如下:
vm_node_stat[NR_FILE_PAGES] = Buffers+Cached。
Buffers = 块设备inode节点管理的缓存。
Cached = 普通文件inode节点管理的缓存。
普通文件和块设备的缓存总大小统计在vm_node_stat[NR_FILE_PAGES]变量中。meminfo中Buffers统计了块设备文件(如/dev/sd*)inode节点管理的缓存。meminfo中Cached统计了总缓存减去Buffers缓存大小,即普通文件inode节点管理的缓存。
在Linux系统中普通文件和块设备文件都会创建inode节点。当操作普通文件时,文件的缓存由其inode节点进行管理,比如open("/file.txt")后的read/write操作。操作块设备时,块设备的缓存也由其inode节点进行管理,比如open("/dev/sd*")后的read/write操作。
注:Buffers和Cached只是数字,数字的具体含义是什么,看源码是最简单直接的方式。
Linux 系统Buffers与Cached的区别相关推荐
- Buffers与cached啥区别
转自: https://www.cnblogs.com/argb/p/3448744.html A buffer is something that has yet to be "writ ...
- Linux Buffers和Cached的区别(转)
在linux下使用free命令查看内存使用情况,有buffers和cached两项,以下是它们的区别: buffers是为块设备设计的缓冲.比如磁盘读写,把分散的写操作集中进行,减少磁盘I/O,从而提 ...
- Linux系统内存的Cached Memory
Linux与Windows不同,会存在缓存内存,通常叫做Cache Memory.有些时候你会发现没有什么程序在运行,但是使用top或free命令看到可用内存会很少. 什么是Cache Memory( ...
- linux系统-软链接与硬链接区别
目录 引言 硬盘 软.硬链接方式 硬链接 软链接 问题 引言 在介绍硬链接和软链接之前,首先介绍下硬盘相关的知识,主要是了解下 inode . 硬盘 硬盘设备是由大量的扇区组成的.以 MBR 分区为例 ...
- Linux系统中的文件系统格式区别及详解
Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT 种格式. ...
- linux系统——fread()与read()函数族区别
fread与read区别: 1,fread是带缓冲的,read不带缓冲. 2,fopen是标准c里定义的,open是POSIX中定义的. 3,fread可以读一个结构.read在linux/unix中 ...
- linux系统32和64的区别,32位和64位的Linux系统区别
区别之一:当初设计的定位不同 64位操作系统的设计定位是:满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域,这些应用领域的共同特点就是需要有大量的系统内存和浮点性能 ...
- linux 系统账户 和 普通账户 的区别
最近使用 useradd -r 选项进行创建账户,用于测试,对-r 选项不是很明白,下面记录一些调研的过程: -r, --systemCreate a system account.System us ...
- buffers与cached的区别
具体参考以下博文: 1.https://www.cnblogs.com/chenpingzhao/p/5161844.html 2.https://blog.csdn.net/heweimingmin ...
最新文章
- 『非常重要』非矿工用户如何安全度过BCH11月算力战历史时刻!
- Play! Framework 系列(二):play 的项目结构
- jquery Ajax请求本地json
- IAR STM32报错Error[Pe147]:declaration is incompatible with“__nounwind __interwork __softfp unsigned
- 数据挖掘基础学习一:VMware虚拟机Ubuntu上安装Python和IPython Notebook(Jupyter Notebook)完整步骤及需要注意的问题(以ubuntu-18.04.3为例)
- ElasticSearch的一些核心概念
- linux 编译链接出错,Qt编译和链接错误
- python set集合与列表_python set集合的添加、删除、修改和访问操作/frozenset 集合,集合内置方法完整列表-立地货...
- 背景图(css sprite)尺寸设置,DIPS,设备像素比,Retina,,border 1px问题
- 从一个骗人的技术说起光线追踪——光影技术的里程碑
- lua 的斗地主逻辑算法
- lol服务器稳定性补偿,lol游戏稳定性补偿皮肤领取
- pwm超详细解读,大佬细说pwm的控制方式
- IOS 使用TestFlight 详解
- appinventor HTML5,用APP Inventor纯图形化编程自制APP,通过WIFI物联网控制掌控板
- 软件类大学生求职就业攻略(一)
- CS61A Homework 7
- 《Cortex-CM3权威指南》——存储器系统
- 出海、上市,分众传媒还能再造一个“分众”吗?
- Tinymce 编辑器中字数统计问题,统计所有字符(包括数字,字母。。。)