Low latency 内存探查器工具,用于评估支持NUMA的改进

Low latency 内存探查器工具,用于评估支持NUMA的改进,low-latency,memory-profiling,numa,Low Latency,Memory Profiling,Numa,我在一个低延迟的应用程序上工作,我认为它将从NUMA的启用(或者改进内存的局部性)中获益匪浅 是否有一个分析工具可以让我估计出改进的程度,可能是减少执行时间的百分比/因素 我在考虑使用cachegrind。我会期望有很多的缓存未命中,但我仍然不知道预期的改进 非常感谢 编辑: 这里的目标是尽量减少延迟。目前,有一个线程在启动时工作并执行所有分配。我认为,更好的实现方法是将线程固定到cpu核心,并使每个线程都能进行它所需的分配。在做这件事之前,我想先估计一下延迟带来的好处。您可能需要添加更多信息以

我在一个低延迟的应用程序上工作,我认为它将从NUMA的启用(或者改进内存的局部性)中获益匪浅

是否有一个分析工具可以让我估计出改进的程度,可能是减少执行时间的百分比/因素

我在考虑使用cachegrind。我会期望有很多的缓存未命中,但我仍然不知道预期的改进

非常感谢

编辑:
这里的目标是尽量减少延迟。目前,有一个线程在启动时工作并执行所有分配。我认为,更好的实现方法是将线程固定到cpu核心,并使每个线程都能进行它所需的分配。在做这件事之前,我想先估计一下延迟带来的好处。

您可能需要添加更多信息以获得有用的答案。一般来说,内存局部性对每一个非平凡的应用程序都有好处,对于NUMA没有什么可“启用”的(硬件是或不是NUMA)。系统lib通常足够智能,不会不必要地创建线程或在错误的一侧执行分配,因此除非您有意这样做或有几个进程,否则没有多少事情可做。如果,由于某种原因,一根线被烧坏了,无论如何,你也无能为力。那么,你到底想解决什么问题呢?我想减少延迟。目前,有一个线程在启动时工作并执行所有分配。我认为,更好的实现方法是将线程固定到cpu核心,并使每个线程都能进行它所需的分配。在此之前,我想先从延迟的角度来估计一下好处。探查器不是估计,而是测量。现在还不清楚为什么你想要一些东西来评估对你的好处,而不是仅仅做你认为会改善事情的事情,并衡量它是否真的会改善。如果前期工作太多,你仍然可以测量一个类似于你正在做的工作的玩具场景——估计你的请求的延迟可以通过挂钟时间来完成,尽管有精确的时间戳。与真实的玩具相比,这个玩具场景可能仍然大错特错,但它比纸上谈兵的估计要好。很好的建议。谢谢。钉线可能是好的,也可能是坏的。操作系统通常会尝试适度努力地迁移线程,并且非常努力地不将其撞到错误的NUMA端(因此钉扎几乎没有效果,或者说没有效果)。另一方面,如果没有“好的”内核可用,唯一的选择就是根本不运行线程。在某些情况下,你可以保证这不会发生,但如果你不能,那么钉住是一个非常愚蠢的想法。不过,一个探查器也帮不上忙。如果考虑NUMA(除非显式选择),在一个线程中分配所有内存几乎是一个坏主意。