我有一个有 2 个 CPU 和 64GB 内存的服务器,每个 CPU 32GB。
我知道每个 CPU 都有自己的 RAM 部分,我们称它们为 RAM1 和 RAM2。我想让我的程序知道它在哪个 RAM(RAM1 或 RAM2)上分配它的数据。
我试图检查指针值:
// put the thread at i-th CPU, using pthread_setaffinity_np
TData *a = new TData[N];
...
cout << "CPU = " << i << " adress = " << a << endl;
但输出看起来是随机的。我想那是因为地址是虚拟的。虚拟内存地址和部分RAM之间是否有对应关系?
如何检查我的数组“a”分配在哪个 RAM 中?