当前位置: 首页 > 科技观察

Linuxmemorybuffer和cache的区别

时间:2023-03-17 21:37:13 科技观察

1.内存使用说明free命令提供了比top更简洁的系统内存使用视图:[root@rac1~]#freetotalusedfreesharedbufferscachedMem:10351081008984261240124212413000-/+buffers/cache:471772563:336Swap20964728423201254152这里显示的单位是KB。在Linux的内存分配机制中,首先使用物理内存。当物理内存仍然空闲(不够用)时,占用的内存不会被释放。即使占用内存的程序已经关闭,程序占用的内存也会被使用。对于缓存的使用,对于已经打开的程序,或者对于读取刚刚访问过的数据来说,速度会更快。linux内存机制参考:Linux内存机制http://blog.csdn.net/tianlesoftware/archive/2010/04/08/5463790.aspxMem:物理内存统计。-/+buffers/cached:表示物理内存的缓存统计Swap:表示swap分区在硬盘上的使用情况。只有当mem真正被当前进程占用时,即没有buffer和caches时,才会使用swap。Mem行(***行)数据说明:总计:1035108KB。指示物理内存的总大小。已用:1008984KB。指示分配给缓存(包括缓冲区和缓存)的总量,但实际上可能不会使用某些缓存。免费:26124KB。指示未分配的内存。共享:0kb。一般系统不使用共享内存。缓冲区:124212KB。系统分配但未使用的缓冲区数。缓存:413000KB。系统分配但未使用的缓存量。-/+buffers/cacheline(第二行)数据说明:Used:471772kb,实际使用的buffers和cache的总量,也是实际使用的内存总量。Free:563336kb,未使用的缓冲区、缓存和未分配内存的总和,是系统实际可用的内存。根据以上分析,我们可以得出以下结论:1、实际可用内存大小:Free(-/+buffers/cacheline)=Free(Mem)+buffers(Mem)+Cached(Mem);563336=26124+124212+4130002。分配的内存大小:Used(Mem)=Used(-/+buffers/cache)+buffers(Mem)+Cached(Mem)1008984kb=471772+124212+4130003。总物理内存大小total(Mem)=used(-/+buffers/cache)+free(-/+buffers/cache)1035108=471772+5633362.buffer和cache的区别buffer是有待完善的东西“写入”到磁盘。缓存是从磁盘“读取”并存储以备后用的内容。2.1CacheCache:Cache是??位于CPU和主存之间的容量小但速度快的内存。由于CPU的速度远高于主存,所以CPU直接从内存中存取数据需要一定的时间。CPU刚刚使用或回收的一部分数据存储在Cache中。当CPU再次使用这部分数据时,可以从Cache中取出。直接调用,减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1Cache)和二级Cache(L2Cache)。L1Cache集成在CPU内部。L2Cache早期一般是焊接在主板上,现在也集成在CPU内部。常用容量为256KB。或512KBL2缓存。2.2BufferBuffer:缓冲区,用于存储异步速度的设备或不同优先级的设备之间传输的数据的区域。通过缓冲区,可以减少进程间的相互等待,这样当从慢速设备读取数据时,不会中断快速设备的运行过程。Free命令中显示的buffer和cache都占用内存:buffer:用作buffercache的内存,是块设备的读写缓冲区,比较靠近存储设备,或者直接是磁盘的缓冲区。cache:作为pagecache的内存,文件系统的cache是??内存的缓冲区。如果缓存的值很大,说明缓存中存放的文件数量很大。如果经常访问的文件可以缓存起来,那么磁盘读IO会很小。