繁体   English   中英

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

[英]using linux user space memory for caching

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

我所追求的基本上与linux的文件系统缓冲区高速缓存具有相同的行为:任何其他内存未使用的内存,都由我正在缓存的进程使用。

如果我要对高速缓存应该有一个硬编码的限制来编写此代码,则必须从本质上将高速缓存限制为某个预定义的值,而不是在其余进程未使用过多内存的情况下使其增长如果内存使用量增加,则缩小。

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

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

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

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

这听起来很像您正在尝试围绕虚拟内存管理器(VMM)进行编码。 这不太可能以您想要的方式工作,或者即使这样做:效率很高。

Poul-Henning Kamp撰写的Varnish体系结构注释中讨论了此问题。 我敦促您阅读本文档,因为他谈到了Varnish是如何设计来与VMM有效交互的,并可能为您提供一些有关缓存的替代设计思路的想法。

任何试图根据系统内存压力进行自我调整的用户进程,例如通过查看比率:驻留集大小(rss)/虚拟大小(vsize)。 VMM将陷入反馈循环中,并且该反馈循环可能会对过程,系统或两者产生不利影响。

请查看/ proc的文档,以了解在何处获取rss,以及如何获取进程的vsize。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM