Stiamo migrando un'applicazione ActivePivot a un nuovo server (4 socket Intel Xeon, 512 GB di memoria). Dopo la distribuzione, abbiamo lanciato il nostro benchmark applicativo (che è un mix di grandi query OLAP concomitanti alle transazioni in tempo reale). Le prestazioni misurate sono quasi due volte più lente rispetto al nostro server precedente, che ha processori simili ma due volte meno core e due volte meno memoria.In che modo l'architettura NUMA influisce sulle prestazioni di ActivePivot?
Abbiamo esaminato le differenze tra i due server e sembra che il grande abbia un'architettura NUMA (memoria non uniforme). Ogni socket della CPU è fisicamente vicino a 1/4 della memoria, ma più lontano dal resto ... La JVM che esegue la nostra applicazione alloca un grande heap globale, c'è una frazione casuale di quell'heap su ciascun nodo NUMA. La nostra analisi è che il pattern di accesso alla memoria è piuttosto casuale e i core della CPU spesso sprecano tempo ad accedere alla memoria remota.
Abbiamo bisogno di più feedback su come sfruttare ActivePivot sui server NUMA. Possiamo configurare i cubi di ActivePivot o i pool di thread, modificare le nostre query, configurare il sistema operativo?
Quando si utilizza numactl, si consiglia di utilizzare lo switch '--membind = nodes, -m nodes' in aggiunta a' --cpunodebind = nodes, -N nodes' per limitare la memoria a quel nodo. Altrimenti una piccola parte della memoria viene solitamente allocata su nodi stranieri (anche con '-XX: + UseNUMA') –