如何理解Linux内存管理中的Buffer和Cache

分类:编程技术 时间:2024-02-20 15:49 浏览:0 评论:0
0
本文介绍《如何理解Linux内存管理中的Buffer和Cache》的相关知识。在实际案例操作过程中,很多人都会遇到这样的困境。接下来就让小编带领大家学习一下如何处理吧。这些情况!我希望你能仔细阅读并学到一些东西!

在Linux中,一般使用free命令来查看内存使用情况

[root@localhost ~]# free Totalused free free共享buff/cache availableMem: 3873760 1435 48 3322324 8788 407888 3453708Swap : 1048572 0 1048572 [root@localhost ~]#

可以通过命令查看以上输出项的含义

说明free 显示系统中空闲和已用物理内存和交换内存的总量,以及内核使用的缓冲区和高速缓存。通过解析 /proc/meminfo 收集信息。显示的列为: Total 已安装内存总量(/proc/meminfo 中的 MemTotal 和 SwapTotal) 已使用内存(c计算为总计 - 空闲 - 缓冲区 - 缓存) 空闲 未使用的内存(/proc/meminfo 中的 MemFree 和 SwapFree) tmpfs 使用(主要)的共享内存(/proc/meminfo 中的 Shmem,在内核 2.6.32 上可用,如果满足以下条件,则显示为零buffers 内核缓冲区使用的内存(/proc/meminfo 中的缓冲区) cache 页面缓存和平板使用的内存(/proc/meminfo 中的缓存和平板) buff/cache 可用缓冲区和缓存的总和 估计有多少内存可用于启动新应用程序,无需交换。与缓存或空闲字段提供的数据不同,该字段会考虑帐户页缓存,并且由于项目正在使用,因此并非所有可回收内存板都会被回收(/proc/meminfo 中的 MemAvailable,在 Kernels 3.14 上可用,模拟)在内核 2.6.27+ 上,其他与 Free 相同) 

Free 命令显示免费+物理使用+交换区域等信息。文件内容如下:

[root@localhost ~]# cat /proc/meminfoMemTotal:3873760 kBMemFree:3322052 kBMemAvailable:3453436 kBBuffers:3252 kBCached:320316 kBSwapCached:0 kBActive:256968 kBInactive:124468 kBActive(匿名):58264 kBInactive(匿名): 8392 kBActive(文件):198704 kBInactive(文件):116076 kBUNevictable: 0 kBMlocked: 0 kBSwapTotal: 1048572 kBSwapFree: 1048572 kBDirty: 0 kBWriteback: 0 kBAnonPages: 57868 kBMapped: 27384 kBS hmem:          8788 KBSLAB: 84320 KBSRECLAIMABLE: 42580 KBSUN回收:41740 KBKERNELSTACK:3120 KbpageTables:4492 KBNFS_UNSTABL Backtmp:0 Kbcommitlimit:2985452 KBComfilled_AS: 293568 KBVMALLOTOTAL: 34359738367 KBVMallocused: 180372 KBVMALLCHUNK: 34359326 716 KbhardwareCorrupted: 0 kBAnonHugePages: 4096 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 2048 kBDirectMap4k: 81728 kBDirectMap2M: 3063808 kBDirectMap1G: 3145728 kB[root@localhost ~]#

总计 -总内存大小
已使用 - 内存sizeused
free - 未使用的内存大小
shared - 使用的内存tmpfs
buffers - 内核缓存大小(/proc/meminfo 中的缓冲区)
cache - 页面缓存和平板(/proc/meminfo 中的缓存和平板)
buff/cache - 缓冲区 + 缓存
available——可用内存大小(不包括交换区)

buffers和cache man free中仍然没有详细解释。检查内核文档以获取进一步的说明

...缓冲区:原始磁盘块的相对临时存储不应变得非常大(20MB 左右)缓存:从磁盘读取的文件的内存缓存(页面缓存)。不包括 SwapCachedSlab:内核数据结构cacheSReclaimable:Slab 的一部分,可能会被回收,例如cachesSUnreclaim:Slab 的一部分,在内存压力下无法回收

Buffers - 原始数据的临时存储磁盘块(通常不小,大约20MB)
缓存-从磁盘缓存中读取文件(即页面缓存)。排除SwapCached
Slab - 内核中的数据结构缓存
SReclaimable - Slab、recycla的一部分ble
SUnreclaim - Slab的另一部分无法回收

使用vmstat监控内存使用情况

[root@localhost ~]# echo 3 > /proc/ sys/vm/drop_caches[root@localhost ~] # vmstat 1procs------------内存---------- ---交换-- -----io-- -- -system-- ------cpu- ---- r b swpd 空闲 buff 缓存 si so bi bo 在 cs us sy id wast 1 1 0 3648060 0 96964 0 0 4 5158 151 174 5 6 89 0 0 0 0 0 3648248 0 97424 0 0 296 0 311 331 0 1 99 0 0...

《如何理解Linux内存管理中的Buffer和Cache》内容就介绍到这里。感谢您的阅读。如果您想了解更多行业资讯,可以关注网站,小编将为大家输出更多优质实用文章!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何理解Linux内存管理中的Buffer和Cache

用户评论