由于NUMA机器没有本地缓存,软件缓存实现是否会提高需要访问远程内存的任务的性能?
答案 0 :(得分:1)
有些NUMA机器确实有本地缓存。如果你有一个多插槽的Opteron或Xeon系统,每个套接字都是一个NUMA域,有多级缓存,有些在内核之间共享,有些则不共享。至少对于Nehalem以来的英特尔芯片,所有这些缓存都可以存储远程内存参考。这对于2-8个插槽的性能很有好处,但对于基于NumaConnect或SGI NUMALink等长距离缓存一致性互连的大型系统而言,这仍然是一个优势。
话虽如此,如果你被困在一个非连贯的系统上,你需要缩小一堆其他参数,然后才能得到是/否答案。软件一致性协议中每个状态转换的成本是多少?对于您关注的应用程序的痕迹,这些转换发生的频率是多少?如果转换足够便宜或者行保持足够长的时间,那么肯定,它可能会有所帮助......但这取决于实现,底层架构和应用程序本身的行为。
以下是一组试验相关性能问题的小组:http://www.lfbs.rwth-aachen.de/content/17.html。您可能还会发现一些与Playstation 3中使用的Cell BE架构相关的有趣工作,例如:http://researcher.ibm.com/files/us-alexe/paper-gonzalez-pact08.pdf。