È possibile disabilitare una CPU (non un core)?


10

È possibile disabilitare una CPU, non un core? Voglio fare un test per verificare se le prestazioni potrebbero fare una grande differenza o no.

Sto usando Ubuntu 10.10.

Risposte:


10

Oltre a farlo nel tuo BIOS grub ha un'opzione chiamata maxcpus.

È possibile modificare questa opzione quando si seleziona l'opzione di avvio di GRUB aggiungendo maxcpus=1ai parametri. Immagine casuale di grub:

inserisci qui la descrizione dell'immagine

Scegli 'e' e arrivi a una riga di comando dove puoi aggiungere opzioni.

Puoi anche creare un'opzione di avvio permanente in grub facendo una copia dell'opzione di avvio corrente e aggiungendola maxcpus=1ai parametri di avvio. Puoi chiamarlo "Ubuntu, kernel 2.5.12-9-386 (1 cpu)" e averlo tra le altre opzioni di avvio come mostra la figura.

Puoi verificare l'esecuzione su 1 cpu emettendo:

cat /proc/cpuinfo | grep processor questo dovrebbe mostrare qualcosa del genere:

processore: 0
processore: 1

E la seconda riga dovrebbe scomparire dopo l'avvio con 1 CPU.


1
questa domanda farebbe anche una battuta pratica molto cattiva! : D
Alvar,

Cosa succede se si imposta maxcpus = 0? : P
crazy2be

@Rinzwind Ho fatto esattamente quello che hai detto, ma il risultato sembra strano, ho ottenuto 12 informazioni sui processori prima di aggiungere "maxcpus = 1" ai parametri quando eseguo il grepping, ma ho solo 1 informazioni sul processore dopo la modifica, sembra solo un core in tutti i 12 core sono attivati. Nota: il mio computer ha due CPU a sei core.
LeoYuan 袁力皓

@ crazy2be indovinando: il 1 ° processore si chiama 0 quindi finisci per usarne uno? : D
Rinzwind,

@ LeoYuan88 袁力皓 puoi modificarlo nell'output di cat / proc / cpuinfo | processore grep prima e dopo l'avvio con maxcpus = 1?
Rinzwind,

7

È possibile disabilitare dinamicamente le CPU tramite /sys/devices/system/cpu/cpuN/online, ad esempio per disabilitare la CPU 1, utilizzare:

echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online

e per riattivare, utilizzare:

echo 1 | sudo tee /sys/devices/system/cpu/cpu1/online

Questo sembra disabilitare un lcore, non una CPU. Ho una di queste directory per ogni core logico sul mio sistema.
sudo,

1

È sempre possibile scollegare la CPU dal suo socket. È una forza bruta, ma sei sicuro di ottenere il test che desideri e non devi preoccuparti se il kernel / BIOS / qualunque switch stia davvero facendo quello che speri stia facendo.

La mia azienda ha grandi installazioni di server farm in varie località in tutto il mondo. Nel nostro laboratorio a volte rimuoveremo le CPU dai socket solo per un tale test.

C'è una variazione interessante in questo test che puoi fare con i sistemi NUMA multi-CPU . Su quei tipi di schede madri è possibile rimuovere tutti i moduli DIMM di memoria controllati da una CPU fisica. Il sistema si avvierà comunque bene e sarà quindi possibile eseguire test con l'applicazione bloccata su vari core che consentirà di misurare gli effetti della memoria "locale" o "remota".


Spiacenti, non so ancora come scollegare la CPU dal suo socket, potresti mostrarmi come fare il lavoro?
LeoYuan 袁力皓

0

Vorresti vedere le prestazioni di un'applicazione multithread insieme al numero di core? In tal caso, è possibile utilizzare l'utilità tasket. Immagino che tu abbia una macchina NUMA. È possibile installare l'utilità numactl e utilizzandola è possibile trovare quali core corrispondono a quale CPU. Ad esempio, la macchina dispone di due CPUS quad-core (chip). Usando l'utilità tasket è possibile creare core di una CPU come set e allocarli alla propria applicazione. Quindi l'applicazione utilizza solo una CPU / chip (quattro core). Per favore fatemi sapere se avete bisogno di ulteriori informazioni.

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.