buffer/cache空间可以被释放

摘要:
可以释放缓冲区/缓存空间。这种理解是正确的,但在清除缓存的情况下,通常有三种情况下系统IO很高,缓存无法回收:1.如果使用tmpfs临时文件系统,则一部分内存空间可以用作文件系统。例如,对于生产者-消费者问题,资源生成和消耗的速度大致相同。添加缓冲区可以抵消刚生成/消耗资源时的突然变化。
buffer/cache空间可以被释放,这个理解是正确的,但是伴随着cache清除的行为的,一般都是系统IO飙高

cache不能被回收的三种情况:


1、使用tmpfs 临时文件系统的,可以将内存的一部分空间拿来当做文件系统使用。
使用 echo 3 > /proc/sys/vm/drop_caches 清空无效,内存无法被回收。


2、共享内存
命令:
ipcs -m列出当前的共享内存使用
ipcrm -m 删除指定id的共享内存段


3.使用mmap申请标志状态为MAP_SHARED的内存,内核也是使用的cache进行存储的。在进程对相关内存没有释放之前,这段cache也是不能被正常释放



1、Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发I/O的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个buffer可以抵消掉资源刚产生/消耗时的突然变化。
2、Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为CPU和memory之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。
3、假定以后存储器访问变得跟CPU做计算一样快,cache就可以消失,但是buffer依然存在。比如从网络上下载东西,瞬时速率可能会有较大变化,但从长期来看却是稳定的,这样就能通过引入一个buffer使得OS接收数据的速率更稳定,进一步减少对磁盘的伤害。
4、TLB(Translation Lookaside Buffer,翻译后备缓冲器)名字起错了,其实它是一个cache.



来自为知笔记(Wiz)


免责声明:文章转载自《buffer/cache空间可以被释放》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js定位光标到输入框指定位置Linux开机自启动的几种方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

内核旁路、共享内存的零拷贝问题

实习时,测试万兆网卡在使用onload和tcpdirect加速时用到了内存旁路技术,学习一下。下面是一个问题https://stackoverflow.com/questions/18343365/zero-copy-networking-vs-kernel-bypass 总结一下: 1、使用内核旁路技术可以实现零拷贝,共享内存也可以实现零拷贝。所谓零拷贝...

操作系统-进程(5)进程通信机制

交互式并发进程通过信号量及PV操作可以实现进程的互斥与同步,例如生产者-消费者就是一组相互协作的进程,它们通过信号量来协同工作,并引入有界缓冲区来存取。这种低级通信方式不方便而且局限性很大。 管程适用于高级程序设计编程,它把分散在各进程中的临界区集中统一管理,采用阻塞/唤醒+集中临界区和一次状态测试策略,提供了同步工具的一种新选择。 上述工具可以解决同步和...

ngx_lua应用最佳实践

引子: 以下文字,是UPYUN系统开发工程师timebug在SegmentFault D-Day南京站技术沙龙上所做分享的内容要义提炼,主题为UPYUN系统开发团队在进行业务逻辑由C模块到ngx_lua的迁移过程中产生的心得体会,以及在NGINX上基于ngx_lua的方面的最佳实践方案。 Upyun公众号:upaiyun -----------------...

共享内存与存储映射(mmap)

【前言】对这两个理解还是不够深刻,写一篇博客来记录一下。 首先关于共享内存的链接:共享内存。里面包含了创建共享内存区域的函数,以及两个进程怎么挂载共享内存通信,分离、释放共享内存。 共享内存的好处就是效率高,不需要太多次的进行数据的copy。可以直接进行读写内存。所以,相对来说在IPC进程间通信三大主题里面,共享内存要比消息队列使用多,而且消息队列只在有血...

[nginx] nginx源码分析--健康检查模块锁分析

健康检查模块 见前文:[nginx] nginx源码分析--健康检查模块 其中有一张框架图, 接下来的内容,将会利用到这个图中的内容。 [classic_tong @ https:////www.cnblogs.com/hugetong/p/12274125.html ]  描述 我们知道nginx是多进程的,每个进程都保存了相同的配置。但是实际上, 并不...

用文件映射(File Mapping)实现进程间内存共享

用到的几个windows API函数: 函数CreateFileMapping、MapViewOfFile声明如下: WINBASEAPI __out HANDLE WINAPI CreateFileMappingA(      __in      HANDLE hFile,      __in_opt LPSECURITY_ATTRIBUTES lpFi...