【Linux】Linux 的高速缓存

简介:       Linux与Win的内存管理不同,linux会尽量缓存内存以提高读写性能,通常叫做Cache Memory。通常使用free 命令查看内存的使用时,free 的值往往比较小!查看系统的 /proc/meminfo 文件,值Cached 就是高速缓存。
      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是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。”

参考文章
目录
相关文章
|
2天前
|
Unix Linux 开发工具
Linux基本指令(中)——“Linux”
Linux基本指令(中)——“Linux”
|
缓存 安全 Unix
【Linux】Linux基本指令(下)
【Linux】Linux基本指令(下)
|
1月前
|
存储 人工智能 Unix
【linux】Linux基本指令(上)
【linux】Linux基本指令(上)
|
5月前
|
Linux
linux查看内存多少g
linux查看内存多少g
|
11月前
|
Linux
Linux内核31-Seqlock
Linux内核31-Seqlock
|
缓存 Kubernetes 安全
Linux内核月报2017年7月号
## 1. The trouble with SMC-R ## 2. Containers as kernel objects ## 3.Specifying the kernel ABI ## 4. Namespaced file capabilities ## 5.Zero-copy networking
385 0
|
缓存 NoSQL Java
Linux之《荒岛余生》(三)内存篇
内存问题,脑瓜疼脑瓜疼。脑瓜疼的意思,就是脑袋运算空间太小,撑的疼。本篇是《荒岛余生》系列第三篇,让人脑瓜疼的内存篇。其余参见: Linux之《荒岛余生》(一)准备篇 Linux之《荒岛余生》(二)CPU篇 小公司请求量小,但喜欢滥用内存,开一堆线程,大把大把往jvm塞对象,最终问题是内存溢出。
1479 0
|
Unix Linux Shell
Linux 内核来了
1991 年,[Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds) 同学入手了一台个人计算机(PC)。 当时可用的操作系统有商用 Unix 和 PC Windows,两者都价格不菲,于是 Linus 决定写一个操作系统(内核)来驱动自己的计算机(?)。 其参考 Unix 实现并用自己的名字与 Unix 合并来命名,即 Li
1490 0