miércoles, 30 de marzo de 2011

Añadiendo CPUs en Caliente en GNU/Linux

Todos alguna vez (en el nuevo mundo de la virtualización) nos hemos encontrado con la necesidad de añadir más procesadores a nuestro sistemas GNU/Linux, como podemos encontrarnos que automátimente no reconozca las CPUs añadidas voy a explicaros como añadirlas.

Si nuestro sistema GNU/Linux se encuentra virtualizado en VMware añadiremos 1 CPU extra y en la consola de nuestro servidor GNU/Linux haremos lo siguiente.

Iremos a la carpeta /sys/devices/system/cpu
Dentro de ella tendremos una carpeta por cada uno de los procesadores que tenga nuestra maquina virtual, en mi caso 4, identificadas como cpuX, X correspondo al número del procesador empezando por 0.

root@debian:/sys/devices/system/cpu# ls -l
total 0
drwxr-xr-x 4 root root    0 mar 30 12:04 cpu0
drwxr-xr-x 4 root root    0 mar 30 13:22 cpu1
drwxr-xr-x 4 root root    0 mar 30 13:22 cpu2
drwxr-xr-x 4 root root    0 mar 30 13:22 cpu3
drwxr-xr-x 2 root root    0 mar 30 13:22 cpufreq
drwxr-xr-x 2 root root    0 mar 30 13:22 cpuidle
-r--r--r-- 1 root root 4096 mar 30 13:22 kernel_max
-r--r--r-- 1 root root 4096 mar 30 13:22 offline
-r--r--r-- 1 root root 4096 mar 30 13:22 online
drwxr-xr-x 2 root root    0 mar 30 13:22 perf_events
-r--r--r-- 1 root root 4096 mar 30 13:22 possible
-r--r--r-- 1 root root 4096 mar 30 13:22 present

En mi caso tengo 3 procesadores activos de los 4 que tiene la maquina, para ver los que hay activos podemos hacer:

root@debian:/sys/devices/system/cpu/cpu1# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:


En cada carpeta dentro de /sys/devices/system/cpu/cpuX tenemos varios ficheros pero lo que nos interesa es poner "online" los procesadores que estamos añadiendo, así que lo haremos de la siguiente manera:
(yo lo realizo sobre el 4 procesador que es el que no estaba activo)

# echo 1 > /sys/devices/system/cpu/cpu3/online

Una vez realizado esto podemos ver que el procesador está activo

root@debian:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 6
model           : 37
model name      : Intel(R) Core(TM) i5 CPU       M 560  @ 2.67GHz
stepping        : 5
cpu MHz         : 2660.339
cache size      : 3072 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm ida arat
bogomips        : 5320.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

Si queremos desdactivar un procesador sólo tenemos que hacer lo siguiente.

# echo 0 > /sys/devices/system/cpu/cpu3/online

Bueno ahí lo tenéis espero que os sirva de ayuda.

Saludos a todos !!!!!

No hay comentarios:

Publicar un comentario