【Linux】Linux 的高速缓存
Linux 高速缓存
2023-09-14 08:57:29 时间
Linux与Win的内存管理不同,linux会尽量缓存内存以提高读写性能,通常叫做Cache Memory。通常使用free 命令查看内存的使用时,free 的值往往比较小!查看系统的 /proc/meminfo 文件,值Cached 就是高速缓存。
[root@rac3 ~]# cat /proc/meminfo
MemTotal: 4044784 kB
MemFree: 303340 kB
Buffers: 58196 kB
Cached: 3287252 kB
SwapCached: 27792 kB
Active: 1611588 kB
Inactive: 2021116 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 4044784 kB
LowFree: 303340 kB
SwapTotal: 4192956 kB
SwapFree: 3652160 kB
Dirty: 16 kB
Writeback: 0 kB
AnonPages: 259492 kB
Mapped: 480964 kB
Slab: 62224 kB
PageTables: 23276 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6215348 kB
Committed_AS: 2194196 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 264968 kB
VmallocChunk: 34359472887 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
使用free 命令查看内存:
[root@rac3 ~]# free
total used free shared buffers cached
Mem: 4044784 3740080 304704 0 56744 3286972
-/+ buffers/cache: 396364 3648420
Swap: 4192956 540900 3652056
其中第一行用全局角度描述系统使用的内存状况:
total 总物理内存 !
used 已使用内存,一般情况这个值会比较大,因为这个值包括了cache+应用程序使用的内存 即是used=buffers+cached
free 完全未被使用的内存
shared 应用程序共享内存
buffers 缓存,主要用于目录方面,inode值等(ls大目录可看到这个值增加)
cached 缓存,用于已打开的文件!
第二行描述应用程序的内存使用:
-/+ buffers/cache: 396364 3648420
-buffers/cache 396364 前个值表示应用程序使用的内存大小,used减去缓存值 即:-buffers/cache=used-buffers-cached
+buffers/cache 3648420 后个值表示所有可供应用程序使用的内存大小,free加上缓存值 即: +buffers/cache=free+buffers+cached
第三行表示swap的使用:
used——已使用
free——未使用
执行free 命令的结果中,used数值偏大,free数值偏小,free的值总是比较小是因为每当操作文件的时候,Linux都会尽可能的把文件缓存到内存里,当再次访问此数据的时候,可以直接从内存中取数据,避免磁盘操作!所以cached的数值非常的大,cache 部分内存是可回收的,操作系统会按照LRU算法淘汰冷数据。buffers也是可回收的,buffers和cache的区别,“Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。”
相关文章
- Linux 操作系统原理 — 操作系统的本质「建议收藏」
- 学习小组Day3笔记—linux环境下的软件安装
- Linux 中的 /dev/random 和 /dev/urandom 是什么?
- 动Linux清除文件:赶紧行动!(linux删除文件行)
- Linux下如何查询端口占用的进程(linux查询端口的进程)
- 安装Linux系统:从USB驱动器开始(安装usb盘linux)
- Linux系统快速安装:使用安装工具获得一站式体验(linux安装tool)
- 深入浅出:嵌入式Linux程序设计(嵌入式linux程序设计)
- Linux下连接动态库的技巧(linux连接动态库)
- 环境深入Linux:如何设置Vim编辑器(linux设置vim)
- Linux: A Versatile System for Everyday Use(linuxex)
- Linux下如何保存并退出Vim(linux保存退出vim)
- 理解Linux文件系统:探究背后的秘密(linux文件系统是什么)
- 合力Linux:一键合并多个文件(linux合并多个文件)
- 终止Linux线程:让程序不再继续(linux结束线程结束)
- 红帽Linux认证:拥有何种福利?(红帽linux认证有用吗)
- 关闭 Linux 防火墙: 一键实现!(关闭linux的防火墙)
- Linux使用端口号优化应用性能(linux应用端口号)
- 研究Linux内核启动参数的配置与优化(linux内核启动参数)
- Linux 开发的五大必备工具
- Linux文件隐藏:简单方法(linux如何隐藏文件)
- Linux版本号一览:从0.01到5.10,到底有何不同?(linux版本号)
- Linux命令大全:快速掌握批处理技巧(linux下的批处理)
- Linux下重启MySQL数据库的操作方法(linux重启mysql)
- Linux下换行输入的技巧(linux换行输入)
- 掌握Linux下GCC的编程技巧(linuxgcc编程)
- Linux 动态链接库地址查询分析(linuxdladdr)
- LINUX入门:视频让你轻松掌握基础操作(linux入门视频)
- Linux:表达自由的自由之源(linux中表示什么)