linuxcache
❶ linux内存 Buffer和Cache的区别及Linux中查看内存的命令free
Linux中内存查看命令free详解
2011-08-18 11:24:34| 分类: linux相关|举报|字号 订阅
下载LOFTER我的照片书 |
free命令用来查看内存的使用情况,与Top命令相比,开销较小。
$free –m
total used free shared buffers cached
mem: 1002 769 232 0 62 421
-/+ buffers/cache 286 715
swap 1153 0 1 153
说明:在理解free命令的输出项的时候,要区分两个概念:第一行(mem),是针对操作系统来说的,而对操作系统来说buffer和cache都是属于被使用了的内存。第二行(-/+ buffers/cache)是针对应用程序来说的,而对应用程序来说,buffer和cache都属于可以使用的内存。
所以:
第一行(mem):
total:表示系统可使用的物理内存的总量为1002;
used表示已经被分配的内存为769,具体包括真正已经被使用掉的buffer和cache内存286,未使用的buffer内存62,未使用的cache内存421,即769 = 62 + 421 + 286;
free:表示为分配的物理内存为232;
buffers:已经被系统分配而未使用的buffer内存62;
cached:已经被分配而未使用的cache内存421;
第二行(-/+ buffers/cache);
used:已经被应用程序真正使用掉的buffer和cache内存为286;
free:可以被应用程序使用的内存为715,其中包括:已经分配而未使用的buffer内存62,已经分配而未使用的cache内存421,还没有被分配的内存232,即: 715 = 62 + 421 + 232;
另:Linux中buffer与cache的区别:
buffer:要写到硬盘上去的数据内存;
cache:读取到内存中的数据内存;
❷ Linux中内存buffer和cache的区别
两者都是RAM中的数据。简单来说,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
缓存(cache)实际并不是缓冲文件的,而是缓冲块的,块是磁盘I/O操作的最小单元(在Linux中,它们通常是1KB)。这样,目录、超级块、其它文件系统的薄记数据以及非文件系统的磁盘数据都可以被缓冲了。
如果缓存有固定的大小,那么缓存太大了也不好,因为这会使得空闲的内存太小而导致进行交换操作(这同样是慢的)。为了最有效地使用实际内存,Linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小。
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写磁盘),也可以通过sync命令手动清空缓冲。举个例子吧:我这里有一个ext2的U盘,我往里面cp一个3M的 MP3,但U盘的灯没有跳动,过了一会儿(或者手动输入sync)U盘的灯就跳动起来了。卸载设备时会清空缓冲,所以有些时候卸载一个设备时要等上几秒钟。
buffer是由各种进程分配的,由进程和系统一起管理.被用在如输入队列等方面,一个简单的例子如某个进程要求有多个字段读入,在所有字段被读入完整之前,进程把先前读入的字段放在buffer中保存。
cache经常被用在磁盘的I/O请求上,如果有多个进程都要访问某个文件,于是该文件便被做成cache以方便下次被访问,这样可提供系统性能。
综上所述可以理解为cache系统管理, buffer由进程和系统一起管理.
❸ linux绯荤粺cache琚鍗犳弧浜,fwrite鏁堢巼浣庝笅
浣犳槸𨱍抽梾linux绯荤粺cache琚鍗犳弧浜,fwrite鏁堢巼浣庝笅镐庝箞锷炲悧锛焞inux绯荤粺cache琚鍗犳弧浜嗭纴fwrite鏁堢巼浣庝笅鍙浠ョ敤锻戒护娓呴櫎涓涓嫔唴瀛樸俵inux绯荤粺涓嬬粡甯镐细阆囧埌buff/cache鍐呭瓨鍗犵敤杩囧氶梾棰樻垨鍗犳弧镄勯梾棰桡纴杩欎釜镞跺柽write鏁堢巼浣庛傚叾瀹炶繖閲岄溃寰埚氭槸铏氭嫙鍐呭瓨锛岃繖涓镞跺椤彲浠ヤ娇鐢ㄥ懡浠ゅ幓娓呴櫎涓涓媍ache鍐呭瓨锛岄氲繃娓呴櫎涔嫔悗锛屽彲浠ョ湅鍒板唴瀛橀喷鏀句简寰埚氾纴free鍐呭瓨澧炲姞浜嗐俵inux鏄涓绉嶈嚜鐢卞拰寮鏀炬簮浠g爜镄勭被UNIX镎崭綔绯荤粺銆