È 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.
È 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:
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=1
ai parametri. Immagine casuale di grub:
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=1
ai 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.
È 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
È 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".
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.