NUMA: Jak sprawdzić, w której części pamięci RAM jest przydzielona tablica C ++?

Mam serwer z 2 procesorami i 64 GB pamięci RAM, 32 GB na procesor.

Wiem, że każdy procesor ma własną część pamięci RAM, nazwijmy je RAM1 i RAM2. Chciałbym, aby mój program wiedział, w której pamięci RAM (RAM1 lub RAM2) przydziela dane.

Próbowałem sprawdzić wartości wskaźników:

  // put the thread at i-th CPU, using pthread_setaffinity_np
TData *a = new TData[N];
...
cout << "CPU = " << i << " adress = " << a << endl; 

ale wyjście wygląda losowo. Przypuszczam, że to dlatego, że adresy są wirtualne. Czy istnieje jakakolwiek zgodność między adresami pamięci wirtualnej a częścią pamięci RAM?

Jak sprawdzić, w której pamięci RAM jest przydzielona moja tablica „a”?

questionAnswers(2)

yourAnswerToTheQuestion