È possibile influenzare il modo in cui le CPU sono elencate in Linux?


32

Ho un HP DL380 G7 con 2 CPU non corrispondenti. Uno è una CPU quad core con core più veloci e una è una CPU 6 core con core più lenti.

In questa scatola eseguo un'applicazione che per motivi di licenza utilizzerà solo CPU0-CPU3.

Per me sarebbe desiderabile che i core più veloci sulla CPU quad core enumerassero a CPU0-CPU3 nel sistema operativo, dandomi un bonus prestazionale per a) utilizzando core con clock più veloce eb) mantenendo tutti i thread sulla stessa CPU fisica .

C'è un modo per farlo accadere, sia nel BIOS, sia in un file di configurazione o in un'opzione di avvio in Linux?

I modelli di CPU specifici sono:

CPU Intel (R) Xeon (R) E5649 a 2,53 GHz (hex core)

CPU Intel (R) Xeon (R) E5640 a 2,67 GHz (quad core)


Si prega di inviare i modelli di CPU specifici da cat /proc/cpuinfo.
ewwhite,

24
Miglioramento perché non sapevo nemmeno che CPU ineguali fossero possibili, sempre qualcosa di nuovo da imparare ...
Kyle Brandt

2
@kyle è possibile, ma non supportato o approvato da HP.
ewwhite

1
@kasperd In HP-land, se si caricano due CPU di diversi stepping, viene visualizzato un CPU mismatch detectederrore in POST. Ciò potrebbe accadere all'interno di una generazione di CPU; ad esempio un Intel 5606 e 5690 nello stesso chassis.
ewwhite,

3
Se qualcuno è interessato a ciò che abbiamo effettivamente fatto qui, abbiamo fatto un viaggio verso il datacenter e rimosso fisicamente la CPU quad core dai server
paulos

Risposte:


27

Wut?!?

Questo è pazzo , lo sai? Non è supportato e probabilmente non va bene per il tuo hardware. Dovresti usare processori equamente specificati nel tuo server.

Suppongo che coppia semplicemente esegua la tua applicazione in un cgroup o shield (o via taskset) che contiene solo i core della CPU che desideri utilizzare. È inoltre possibile bloccare l'accesso alla memoria a quella CPU con numactl. Ma davvero, perché non dovresti rimuovere completamente la CPU più lenta o pagare ciò che serve per portare il sistema nelle specifiche.

Forse la cosa ovvia, se la tua applicazione è hardcoded per usare CPU0-CPU3, è scambiare fisicamente i socket ... ma in realtà, esegui solo con una CPU qui.

Se ti riferisci all'hardware ProLiant DL380 G7, la tua CPU "più veloce" è probabilmente un processore Nehalem serie 5500, con la CPU hex-core più lenta che è un Westmere. Hai fatto un benchmark? Quali CPU specifiche sono installate?

Modificare:

Ok, quindi queste sono almeno CPU della stessa generazione / stepping. Ma è ancora una cattiva idea ... La differenza nelle specifiche della CPU non è nemmeno così grande (rispetto a qualcosa come un Intel X5690 a 3,47 GHz).


4
Tutti hanno la stessa reazione! So che idealmente la CPU sarebbe la stessa, ma questo è ciò che HP ci ha restituito nel corso della giornata. Questa è la mano che mi è stata assegnata, quindi devo trarne il meglio fino al prossimo aggiornamento hardware. Le CPU sono Xeon E5649 a 2,53 GHz (hex core) e E5640 a 2,67 GHz (quad core). La rimozione completa della CPU a 6 core in realtà è una delle opzioni sul tavolo. Sarebbe più carino poter disabilitare completamente il socket nel BIOS, ma non sembra possibile.
paulos,

@paulos Che applicazione è questa?
ewwhite

In realtà funziona come un firewall checkpoint
paulos

3
@paulos Allora perché contano 2,67 GHz contro 2,53 GHz? Basta inserire la CPU a 6 core nel server e rimuovere il 4 core.
ewwhite

ri: Specifiche della CPU, sì, penso che sia solo circa il 5% più veloce o qualcosa del genere. Mi aspetto che il guadagno in termini di prestazioni sia attribuito al fatto che tutti i thread di lavoro e in particolare la tempesta di irq proveniente dalle schede di rete si trovino sulla stessa CPU fisica. modifica: Sì, è possibile utilizzare solo la CPU a 6 core.
paulos,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.