【发布时间】:2012-03-12 12:43:02
【问题描述】:
我想在我的用户空间 linux 应用程序中实现一个内存缓存(某种类型)。
我所追求的本质上与 linux 的文件系统缓冲区缓存的行为相同:任何其他任何东西都没有使用的内存,由我正在缓存的进程使用。
如果我用硬编码限制我的缓存应该有多大,我必须将我的缓存限制在某个预定义的值,而不是在其余进程没有使用尽可能多的内存时增长,或者缩小,如果内存使用膨胀。
我想要的是,当它实际需要内存时,Linux 会调用某种回调,通知我从缓存中删除一些条目。
这样,进程所需的任何内存都可以从我的缓存中取出,而剩下的内存将专用于我的缓存。
有没有办法在 linux 中做到这一点?
最好的方法是监控 /proc/meminfo 并增加我的缓存大小以使使用的物理内存几乎不小于总物理内存吗?
【问题讨论】:
-
这取决于你想做什么。如果您正在处理文件,最好让 linux 缓存这些文件。
-
这个问题让我想起了尝试做同样事情的 Varnish HTTP 缓存/加速器。
-
>>>几乎比总内存少 - 使用接近 100% [甚至 90%] 实际上并不是一个好主意,因为服务时间以指数方式接近无穷大。请参阅任何排队论文档或johndcook.com/blog/2009/01/30/…
-
fakrudeen,您的评论没有任何意义。更大的缓存总是比更小的缓存更好。
标签: c++ linux memory malloc new-operator