Linux缓存与缓冲
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux缓存与缓冲相关的知识,希望对你有一定的参考价值。
首先,二者针对的对象不同,buffer叫缓冲,cache叫缓存。buffer是为了提高内存和硬盘或者其他I/O设备之间的数据交换速度而设计的;cache是为了提高CPU和内存之间的数据交换速度而设计的,缓存是分级的,比如一级缓存、二级缓存等。
CPU在执行程序所用的指令都要在内存中获取,但是内存的读写速度要比CPU慢得多,为了提高两者之间的交换速度,就在CPU和内存之间增加了cache。cache要比内存的速度快,这样就可以提高数据交换的速度,一般情况下cache是比较小的,因为CPU不能集成太多的集成电路。当然为了进一步的加快速度,陆陆续续又有了二级cache、三级cache...,通过此设计,CPU就减少了访问内存的次数,所以提高了速度。当然,如果cache中没有CPU想要的数据,CPU还是会到内存中去获取的。
buffer是把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,Linux系统中有一个守护进程定期将buffer中的内容统一写到磁盘,也可以通过sync命令手动进行。比如说:某个进程有多个字段的写入,在整个字段接收完之前,进程会先把这些字段统一放到buffer中。
接下来分享一下free命令所输出的内容:
[[email protected] ~]# free -m
total used free shared buffers cached
Mem: 980 522 458 1 118 190
-/+ buffers/cache: 214 766
Swap: 1983 0 1983
第一行是从全局角度描述系统使用内存的状况:
total(980):总的物理内存=used+free
used(522):已使用的内存=buffers+cached
free(458):未被使用的内存
shared(1):应用程序共享内存
buffers(118):缓存,主要用于目录方面<ls大目录时可以看到此值的变化>
cached(190):缓存,用于以打开的文件
第二行是显示应用程序对内存的使用
- buffers/cache(214):应用程序使用的内存大小=used-buffers-cached
+ buffers/cache(766):可供应用程序使用的内存大小=free+buffers+cached
第三行swap的使用
total(1980):总大小
used(0):已使用大小
free(1980):剩余大小
有更深的理解希望大家指点,谢谢。
以上是关于Linux缓存与缓冲的主要内容,如果未能解决你的问题,请参考以下文章
Linux python -u参数,设置无缓存输出(unbuffered)(无缓冲不缓冲不缓存)(实时重定向输出)
Linux python -u参数,设置无缓存输出(unbuffered)(无缓冲不缓冲不缓存)(实时重定向输出)