Salve, stò provando un programma su vari server e cpu desktop, ma stò riscontrando un problema su alcuni server multi CPU.
Ho due server che montano doppie CPU, uno 2x E5-2699v4 (22 core per CPU, totali 44 e 88 thread) e un server con 2x xeon gold-6140 (18 core per CPU, totali 36 e 72 thread).
Il problema è: quando avvio il programma esso mi vede solo la metà dei thread totali percè il server lo assegna solamente ad una CPU anzichè entrambe, ergo la CPU funziona alla metà della velocità (nel task manager l uso della CPU si aggira intorno al 50%).
Il seguente problema NON l ho riscontrato su un server che montava doppia CPU E5-2630v4 (10 core per CPU, 20 totali e 40 thread), il programma mi legge tranquillamente 40 thread e sfrutta la CPU al 90%+.
Su PC desktop ho provato il programma su AMD 2990 (cpu 32 ore,mi legge tranquillamente tutti i 64 thread), INTEL 7940 (cpu 14 core,legge i 28 thread) e INTEL 5820 (cpu 6 core leggere 12 thread), quindi su pc desktop nessun problema.
Sui server a 44 e 36 core se provo ad avviare il programma piu volte contemporaneamente può capitare che la CPU giri al 100% perchè il sistema operativo assegna in modo casuale i processi alla CPU0 e alla CPU1, ma puo capitare anche che il sistema operativo assegni tutti i processi alla CPU0 e la CPU1 resta inattiva.
Se vado nel task manager - scheda dettagli - vado al nome del programma - clicco tasto destro e guardo l impostazione delle affinità si vede che viene assegnata una sola CPU, mentre se provo a spuntare anche l altra CPU si toglie la spunta alla prima CPU.
Tutto questo problema, ripeto, non l ho riscontrato sul server dual xeon 2630v4, dove mi funzionavano tutti i 20 core contemporaneamente.
Qualcuno mi sa dire come potrei fare a far funzionare entrambe le CPU insieme senza che il sistema operativo vede il server con due CPU distinte e fa funzionare solo o l una o l altra? Grazie in anticipo.
P.S. tutti i server hanno SO Windows server 2012, mentre i PC desktop avevano windows10/7