怎么理解Linux内存管理中Buffer和Cache
本篇内容介绍了“怎么理解Linux内存管理中Buffer和Cache”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在Linux中,一般使用free命令查看内存的使用情况
[root@localhost~]#freetotalusedfreesharedbuff/cacheavailableMem:3873760143548332232487884078883453708Swap:104857201048572[root@localhost~]#
通过命令man free可查看以上输出项所代表的意思
DESCRIPTIONfreedisplaysthetotalamountoffreeandusedphysicalandswapmemoryinthesystem,aswellasthebuffersandcachesusedbythekernel.Theinformationisgatheredbyparsing/proc/meminfo.Thedisplayedcolumnsare:totalTotalinstalledmemory(MemTotalandSwapTotalin/proc/meminfo)usedUsedmemory(calculatedastotal-free-buffers-cache)freeUnusedmemory(MemFreeandSwapFreein/proc/meminfo)sharedMemoryused(mostly)bytmpfs(Shmemin/proc/meminfo,availableonkernels2.6.32,displayedaszeroifnotavailable)buffersMemoryusedbykernelbuffers(Buffersin/proc/meminfo)cacheMemoryusedbythepagecacheandslabs(CachedandSlabin/proc/meminfo)buff/cacheSumofbuffersandcacheavailableEstimationofhowmuchmemoryisavailableforstartingnewapplications,withoutswapping.Unlikethedataprovidedbythecacheorfreefields,thisfieldtakesintoaccountpagecacheandalsothatnotallreclaimablememoryslabswillbereclaimedduetoitemsbeinginuse(MemAvailablein/proc/meminfo,availableonkernels3.14,emulatedonkernels2.6.27+,oth‐erwisethesameasfree)
free命令显示了空闲+物理使用+交换区等信息,通过解析/proc/meminfo获得,该文件中的内容如下:
[root@localhost~]#cat/proc/meminfoMemTotal:3873760kBMemFree:3322052kBMemAvailable:3453436kBBuffers:3252kBCached:320316kBSwapCached:0kBActive:256968kBInactive:124468kBActive(anon):58264kBInactive(anon):8392kBActive(file):198704kBInactive(file):116076kBUnevictable:0kBMlocked:0kBSwapTotal:1048572kBSwapFree:1048572kBDirty:0kBWriteback:0kBAnonPages:57868kBMapped:27384kBShmem:8788kBSlab:84320kBSReclaimable:42580kBSUnreclaim:41740kBKernelStack:3120kBPageTables:4492kBNFS_Unstable:0kBBounce:0kBWritebackTmp:0kBCommitLimit:2985452kBCommitted_AS:293568kBVmallocTotal:34359738367kBVmallocUsed:180372kBVmallocChunk:34359326716kBHardwareCorrupted:0kBAnonHugePages:4096kBHugePages_Total:0HugePages_Free:0HugePages_Rsvd:0HugePages_Surp:0Hugepagesize:2048kBDirectMap4k:81728kBDirectMap2M:3063808kBDirectMap1G:3145728kB[root@localhost~]#
total - 总内存大小
used - 使用的内存大小
free - 未使用内存大小
shared - tmpfs使用的内存
buffers - 内核缓存大小(/proc/meminfo中的Buffers)
cache - 页面缓存和slabs(/proc/meminfo中的Cached和Slab)
buff/cache - buffers + cache
available - 可用内存大小(剔除交换区)
buffers和cache在man free中仍没有详细解释清楚,通过查看kernel doc进一步获得相关的解释
...Buffers:Relativelytemporarystorageforrawdiskblocksshouldn'tgettremendouslylarge(20MBorso)Cached:in-memorycacheforfilesreadfromthedisk(thepagecache).Doesn'tincludeSwapCachedSlab:in-kerneldatastructurescacheSReclaimable:PartofSlab,thatmightbereclaimed,suchascachesSUnreclaim:PartofSlab,thatcannotbereclaimedonmemorypressure
Buffers - 裸磁盘块的临时存储(通常不会不大,20MB左右)
Cached - 从磁盘上读取文件的缓存(即页面缓存).不包括SwapCached
Slab - 内核中的数据结构缓存
SReclaimable - Slab中的一部分,可回收
SUnreclaim - Slab中的另一部分,不能回收
使用vmstat可监控内存的使用情况
[root@localhost~]#echo3>/proc/sys/vm/drop_caches[root@localhost~]#vmstat1procs-----------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast110364806009696400451581511745689000003648248097424002960311331019900...
“怎么理解Linux内存管理中Buffer和Cache”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。