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):剩余大小

有更深的理解希望大家指点,谢谢。

原文地址:http://blog.51cto.com/12730062/2089737

时间: 2024-08-25 18:45:14

Linux缓存与缓冲的相关文章

缓存与缓冲的区别 Difference Between Cache and Buffer

Cache vs Buffer Both cache and buffer are temporary storage areas but they differ in many ways. The buffer is mainly  found in ram and acts as an area where the CPU can store data temporarily, for example, data meant for other output devices mainly w

手动清理linux缓存,释放内存

free -m 这个命令大家应该很熟悉 系统真正用的内存我们需要看第二行,因为有一部分缓存还没有被释放 linux内存可使用的计算方法:可用内存=free+buffers+cached 手动释放linux缓存: free -m sync (一定要在第三部之前) echo 3>/proc/sys/vm/drop_caches fee -m echo 0>/proc/sys/vm/drop_caches

linux缓存系统学习之浏览器缓存

最近发现自己学习的东西太杂,不成系统,所以准备整理后再出发.整理也是一种升华.在学习的路上多总结,感觉很好! 这里从缓存开始说起,好久都没有写什么博客了,内容有不对的地方欢迎指正 好像大多问题都能通过加缓存解决,什么叫缓存呢,缓存就是把需要花费昂贵开销的计算结果保存起来,在之后访问直接取出,这个昂贵的开销可以是昂贵的计算,也可以是昂贵的带宽费用等等 从client端出发,首先来说说浏览器缓存,也许从某种角度上看,浏览器也是一个web服务器,也能算一级缓存,内部也存在的各种缓存协商的过程 last

linux缓存nscd

1.安装  yum -y install nscd 2.配置文件: /etc/nscd.conf 3.缓存文件:缓存DB文件在/var/db/nscd下.可以通过nscd -g查看统计的信息 4.清楚缓存:nscd -i passwd/group/hosts; service nscd restart 5.nscd可以缓存服务passwd group hosts等,对应库为/etc/passwd, /etc/hosts 和 /etc/resolv.conf等,每个库保存两份缓存,一份是找到记录的

手动释放linux缓存

步骤 检查缓存 Free  -m 释放缓存 Cat /proc/sys/vm/drop-cahes 0 首先,/proc/sys/vm/drop_caches的值,默认为0 引用 Sync 手动执行sync命令(描述:sync 命令运行 sync 子例程.如果必须停止系统,则运行sync 命令以确保文件系统的完整性.sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node.已延迟的块 I/O 和读写映射文件) 引用 [[email protected] test]# echo

Linux禁用显示“缓冲调整”

[email protected]:~$ free -o total used free shared buffers cached Mem: 3103064 1586140 1516924 7724 66760 651072 Swap: 3998716 0 3998716 [email protected]:~$ free --old total used free shared buffers cached Mem: 3103064 1587280 1515784 7724 66768 65

如何清除linux的内存缓存,缓冲和交换空间

说明 和其他操作系统一样,linux已经实现了很有效的内存管理机制,但是任何一个进程损坏了系统的内存,那么你就必须清理它,linux提供了一个比较好的方式刷新\清除RAM缓存. 注意:并不是什么时候都需要清除RAM缓存的,大家都知道,linux查找数据都是优先从RAM缓存中查找的,一旦清空缓存,所有的数据都需要从磁盘读取,所以只在需要的时候清空缓存,才是正确的选择. 如何清除linux缓存? 1.只清除PageCache: # sync; echo 1 > /proc/sys/vm/drop_c

Linux 释放cache化缓存

free -g查看空余内存以及已使用内存 原文  https://blog.csdn.net/tomspcc/article/details/78131468 机械硬盘的读写速率大多在 70M/s 左右,如果把经常读写的文件放在内存中,这会大幅提高文件的读写速率,提高系统的效率.尤其是访问量大的网站,这样解决了磁盘IO的问题不过现在都是固态硬盘,常见的读写速率是 0.5G/s - 1 G/s - 3.5G/s 或者更高,不过这速度在内存的速度上还是很逊色的,据说DDR3,内存数据带宽就=12.8

Linux基础篇五——缓冲

在现代操作系统里几乎所有的I/O设备在和处理机交换数据时都使用了缓冲机制,缓冲区是一个存储区域,可以是专门的硬件寄存器组成但是因为硬件的成本较高容量也小,一般的情况下,更多的利用内存来作为缓冲区. 缓冲区管理:组织缓冲区并提供获得和释放缓冲区的手段. 缓冲技术是为了协调吞吐速度相差很大的设备之间数据调用而采用的技术 缓冲的引用要解决的问题实际上有: 1.改善CPU和I/O设备之间速度不匹配的情况. 2.可以减少I/O设备对CPU的中断次数及放宽对CPU的中断响应时间要求. 3.提高CPU和I/O