Ripetibilità dei benchmark intensivi della CPU sull'hardware NUMA

2

Considerare un punto di riferimento di un'applicazione C ++. Fa poco o nessun I / O in proporzione al suo runtime complessivo - è ad alta intensità di calcolo. È un programma a thread singolo. Esso legge / legge in tutti i suoi dati all'inizio, quindi esegue molte iterazioni del core task in mano, in modo da calcolare la media della cache o altre variazioni effimere.

Lo eseguiamo su un grande sistema Linux multi-core con molta più memoria di quanta ne usi, che ha una gerarchia di memoria NUMA. Lo eseguiamo sulla macchina quando è "inattivo". Ovviamente, ha un certo numero di soliti demoni che fluttuano intorno, ma dovrebbero esserci molti core e memoria da conservare per renderli felici.

Osserviamo una sorprendente (per noi) gamma di variazione nel tempo dell'orologio a muro che risulta.

Qualcuno può suggerire dove cercare una spiegazione, o cosa fare per ridurre la variazione?

uname:

Linux perf2.basistech.net 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux

numactl --show:

~/ numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
cpubind: 0 1 
nodebind: 0 1 
membind: 0 1 

~/ numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 2 4 6 8 10 12 14
node 0 size: 6144 MB
node 0 free: 2030 MB
node 1 cpus: 1 3 5 7 9 11 13 15
node 1 size: 6134 MB
node 1 free: 144 MB
node distances:
node   0   1 
  0:  10  20 
  1:  20  10 
    
posta bmargulies 23.02.2013 - 17:29
fonte

0 risposte

Leggi altre domande sui tag