我正在寻找一种算法,该算法基于系统的先前行为,预测未来的行为。
我正在构建一个具有空块公共列表的并行内存分配器。每个线程在需要时都可以从该列表中获取块并从中进行分配。这些块按箱分组,具体取决于分配大小(8,12,16字节......到大约4 KB)。当块变空时,它将返回到全局列表(当然,同步开销)。如果bin中没有块为空,它会尝试从其他箱中的块“窃取”位置,然后再获取新的空箱。
现在有两种情况与我有关:
我想建立一个可以观察这种模式的系统,并将结果保存到某个地方,以便下次,分配器知道什么是明智的做什么和不做什么(在bin X中保留至少N个块,不要“从垃圾箱里偷”。
遗传算法有用吗?我对他们一无所知,但我听说他们擅长机器学习,或类似的东西。
提前致谢!
答案 0 :(得分:2)
有很多关于正确实现内存管理器的文章。这些文章中的大多数都提供了花费时间和原因的时间测量。所以我建议你看一下这个领域已经做过的事情。有很多有趣的想法,其中很多都运作良好,并且有明智和有趣的概念。
虽然机器学习技巧对学习和了解很有意思,但我怀疑它们在现实生活中不会给出好的结果。原因是他们需要很大的开销才能工作。 我相信更接近现代缓存工作方式的方法 - 最近最少使用的方法的不同变化。
所以在你的例子中,我会做以下事情:
此方法的主要缺点是内存开销。如果缓存大小减少,也可以减少它(因为在你的情况下这是一种权衡)。
答案 1 :(得分:1)
我相信artificial neural networks比遗传算法更适合您的任务。
查看以下SO问题:
答案 2 :(得分:0)
也许你应该尝试计算特定线程的特定大小的块的分配和解除分配的数量,比如每秒。如果计数器很高并且分配数量与解除分配数量大致相同,那么您可能会尝试在下一秒内忽略释放量。
答案 3 :(得分:0)
如果您要使用大小为2,4,8,16等的空闲块,那么您的线程也应该请求大小为2,4,8,16等的内存。请求任何您需要的内容舍入到最接近的两个力量。