Eseguo lavori di calcolo scientifico in parallelo su un computer Linux condiviso con 24 core. La maggior parte delle volte i miei lavori sono in grado di ridimensionare a 24 core quando su questo computer non è in esecuzione nient'altro. Tuttavia, sembra che anche un solo lavoro a thread singolo che non è mio sia in esecuzione, i miei processi a 24 thread (che ho impostato per valori elevati) riescono a ottenere solo il 1800% di CPU (usando la notazione di Linux). Nel frattempo, circa il 500% dei cicli della CPU (di nuovo, usando la notazione di Linux) sono inattivi. Qualcuno può spiegare questo comportamento e cosa posso fare per ottenere tutti i 23 core che non vengono utilizzati da qualcun altro?Linux 2.6.31 Scheduler e lavori con multithreading
Note:
Nel caso in cui sia rilevante, ho osservato questo su versioni del kernel leggermente diverse, anche se non riesco a ricordare che la parte superiore della mia testa.
L'architettura della CPU è x64. È possibile che il fatto che i miei lavori a 24 core siano a 32 bit e gli altri lavori con cui sono in competizione siano a 64 bit sia rilevante?
Modifica: Una cosa che ho notato è che passare a 30 thread sembra alleviare il problema in una certa misura. Mi porta al ~ 2100% della CPU.
La riaggiustamento riguarda solo i processi che si sviluppano, se si esegue solo un singolo processo che genera n thread .. beh .. si compete solo con un singolo processo. Root/sudo sono disponibili su questa macchina? –
Cosa succede se si scende a 23 thread, lasciando un core disponibile per l'altro lavoro? – caf