在尝试提高我在非 NUMA/标准 PC 上的应用程序的速度时,我总是发现瓶颈是调用,malloc()
因为即使在多核机器中,它也是在所有内核之间共享/同步的。
我有一台使用 Linux 和 C 的具有 NUMA 架构的 PC,我有两个问题:
- 在 NUMA 机器中,由于每个内核都有自己的内存,是否会
malloc()
在每个内核/内存上独立执行而不会阻塞其他内核? - 在这些架构中,如何调用
memcpy()
?可以在每个核心上独立调用它,还是在一个核心中调用它会阻塞其他核心?我可能错了,但我记得也memcpy()
有同样的问题,malloc()
即当一个核心使用它时,其他核心必须等待。