【发布时间】:2013-03-22 04:50:02
【问题描述】:
从在 Linux 上运行的 C/C++ 程序的角度来看,双 CPU 机器中的内存是什么样子有点困惑。
案例 1(已理解)
使用一个四核 HT CPU、32GB RAM,理论上我可以编写一个单进程应用程序,使用多达 8 个线程和多达 32GB RAM,而不会进入交换或超载线程设施 - 为了简单起见,我在这里忽略了操作系统和其他进程。
案例 2(混淆)
设置了 64GB RAM 的双四核 HT CPU 会发生什么?
在开发方面,您需要编写一个应用程序以作为两个进程(8 个线程,每个 32GB)进行通信,还是可以将其编写为一个进程(16 个线程,64GB 完整内存)?
如果答案是前者,那么有哪些有效的现代策略来利用整个硬件?嘘?工控机?另外,如何指导 Linux 为每个进程使用不同的 CPU?
【问题讨论】:
-
有很多方法可以做到这一点。一种方法是使用两个处理器并固定它们。然后使用IPC。另一种方法是将其视为单个共享内存机器,要么吃掉 NUMA 开销,要么玩弄内存分配和亲和力来挤出最后一滴。
-
从应用的角度来看,双四核机器是八核(即16个处理器线程)机器。但是,时间和延迟可能会有所不同。