当前位置:首页 » 操作系统 » linux内存cache

linux内存cache

发布时间: 2024-02-23 11:33:34

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 cached内存过大

cached主要负责缓存文件使用, 日志文件过大造成cached区内存增大把内存占用完 .

Free中的buffer和cache:(它们都是占用内存):buffer : 作为buffer cache的内存,是块设备的读写缓冲区cache: 作为page cache的内存, 文件系统的cache如果 cache 的值很大,说明cache住的文件数很多。

手动释放

cached

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches



To free dentries and inodes:

echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes: echo 3 > /proc/sys/vm/drop_caches

热点内容
sql最大日期的记录 发布:2024-11-28 18:35:35 浏览:715
数据服务器和电脑如何连接 发布:2024-11-28 18:06:49 浏览:745
怎么让编译器输出的字符相隔单位 发布:2024-11-28 18:04:25 浏览:524
w7电脑如何显示配置 发布:2024-11-28 18:01:35 浏览:116
智通编译股票股东 发布:2024-11-28 17:51:56 浏览:731
耻辱2低配置怎么设置 发布:2024-11-28 17:51:50 浏览:92
王水是用什么配置的 发布:2024-11-28 17:43:59 浏览:621
编程猫简 发布:2024-11-28 17:30:20 浏览:163
firefox清除dns缓存 发布:2024-11-28 17:26:59 浏览:940
蜗牛星际存储怎么样 发布:2024-11-28 17:24:56 浏览:421