页面缓存堆积并强制在其他节点上分配内存

时间:2014-07-02 04:06:32

标签: caching memory memory-management numa page-caching

我目前正在使用NUMA机器。我遇到了一个问题,当我执行磁盘I / O时,缓存的页面开始堆积在当前节点(节点0)中。当我进一步malloc新的记忆时,他们去了另一个节点(节点1),导致性能不佳。

我正在考虑两种可能的解决方案,但不知道它们是否有效。

(1)在节点0上使用numa_alloc_onnode()但我不确定这是否会覆盖节点0中的页面缓存或仍然转到节点1.

(2)在缓存节点0开始堆积时删除它们(节点1中的缓存不应该因为它们有用而被删除)。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

您应该通过mmap执行磁盘IO。首先,因为如果你从NUMA系统填充RAM,你可能正在做很多IO,这样做会提高性能,其次这将使你能够控制操作系统的分配位置,(甚至移动之后的页面)使用numa library

如果您不想在运行mmap之前将线程移动到正确的位置,那么使用numactl和交错策略运行您的流程也可能有效。