首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用linux用户空间内存进行缓存

使用linux用户空间内存进行缓存
EN

Stack Overflow用户
提问于 2012-02-22 15:12:03
回答 1查看 613关注 0票数 2

我想在我的用户空间linux应用程序中实现一个内存缓存(某种类型)。

我所追求的本质上是与linux的文件系统缓冲区缓存相同的行为:任何没有被其他任何东西使用的内存都被我正在缓存的进程所使用。

如果我要写这段代码,硬性限制我的缓存应该有多大,我必须从本质上限制我的缓存到某个预定义的值,而不是如果其余进程没有使用那么多内存,它就会增长,或者如果内存使用量膨胀,它就会缩小。

我想要的是,当linux实际需要内存时,它会调用某种回调函数,通知我从缓存中删除一些条目。

这样,进程所需的任何内存都可以从我的缓存中移除,而剩下的内存则专用于我的缓存。

在linux中有没有办法做到这一点?

最好的方法是监视/proc/meminfo并增加我的缓存大小,以便使用的物理内存几乎不少于总物理内存吗?

EN

回答 1

Stack Overflow用户

发布于 2012-02-23 04:56:03

这听起来很像是在尝试围绕虚拟内存管理器编写代码。这不太可能以您希望的方式工作,或者即使它确实如此:非常高效。

这个问题在Poul Henning Kamp撰写的Varnish architecture notes中进行了讨论。我强烈建议您阅读这篇文档,因为他谈到了Varnish是如何设计来与VMM进行有效交互的,并可能为您的缓存提供一些替代设计想法。

任何试图调整自身以适应系统内存压力的用户进程,例如通过查看比率:常驻集大小(rss) /虚拟大小(vsize)。将因处于VMM的反馈回路中而受到影响,该反馈回路可能会对过程、系统或两者都产生不利影响。

查看/proc的文档,了解从哪里获取rss和进程的vsize。

祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9390544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档