【发布时间】:2014-07-09 22:16:25
【问题描述】:
这个问题是关于 DRAM 速度和内存交错的。我有一个非常具体的问题。我正在使用基于电源的架构板(减去 AltiVec),我希望在我的进程地址空间内的两个区域之间复制一大段内存(虚拟连续)。为了抵消我的核心的缓慢,我将两个线程附加到两个 cpu 上,这使得复制速度更快。
但是这仍然不够快。所以我添加了第三个线程,复制时间没有任何区别。我对此进行了更多研究,发现我的主板配备了单个 DDR3 RAM(速度 1600 MB/s),并且已经非常接近可达到的最大速度。
[这里有一些解释:我只用了 2 个线程,在大约 16.5 毫秒内复制了 5500 页大小为 4K 的页面。如果你做一个简单的计算,理论上你可以计时的最短时间(排除所有预取和东西)似乎是 13.75 毫秒。 ]
我发现我可以在我的板上添加一个额外的 RAM。我可能会得到我的同事。通过告诉他们我也打算将每条内存的大小减半来筹集资金,但是我怎样才能让内核为我分配保证均匀分布在两个内存中的内存?
非常感谢您的回答!
附:我使用的是 linux 内核版本 2.6.34。
【问题讨论】:
-
这可能更适合superuser.com
-
好的。有什么办法可以将它迁移到那里?
-
必须是副本吗?如果是移动,您可以在不接触数据的情况下使用页表并移动数据。不久前我有一个问题:stackoverflow.com/q/2679065/321772。如果需要复制,也许您可以在该架构上进行写时复制?
-
@Adam,是的,我担心它必须是一个副本。不过,我明白你的意思 - 比如将物理内存重新映射到进程执行空间中的不同虚拟地址?跨度>
-
你明白了。可以将单个物理页面映射到多个虚拟页面。
标签: linux multithreading memory memory-management powerpc