Como buscar el numero de sockets y cores que tiene un sistema
Para hacernos una idea de la capacidad de un servidor es muy útil mirar en el /proc/cpuinfo de que equipo se trata. Pero desde allí no podemos ver realmente ni la cantidad de sockets ni el número real de cores.
Vamos a suponer un equipo como el siguiente:
# cat /proc/cpuinfo | grep "^processor" processor : 0 processor : 1 processor : 2 processor : 3 processor : 4 processor : 5 processor : 6 processor : 7 processor : 8 processor : 9 processor : 10 processor : 11 processor : 12 processor : 13 processor : 14 processor : 15
A primera vista dispone de 16 cores, pero ¿ como podemos saber si son reales o esta habilitado el Hyper-Threading?
Anteriormente ya hemos visto como usar el dmidecode para, por ejemplo, ver los slots libres de RAM. Especificando el tipo 4 (processor) podemos ver estos detalles:
# dmidecode -t 4 # dmidecode 2.10 SMBIOS 2.6 present. Handle 0x0400, DMI type 4, 40 bytes Processor Information Socket Designation: CPU1 Type: Central Processor Family: Xeon Manufacturer: Intel ID: FF FF FF FF FF FB FF BF Signature: Type 0, Family 6, Model 26, Stepping 5 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) PSE-36 (36-bit page size extension) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (Fast floating-point save and restore) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Hyper-threading technology) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Intel(R) Xeon(R) CPU E5520 @ 2.27GHz Voltage: 1.2 V External Clock: 5860 MHz Max Speed: 3600 MHz Current Speed: 2266 MHz Status: Populated, Enabled Upgrade: Socket LGA1366 L1 Cache Handle: 0x0700 L2 Cache Handle: 0x0701 L3 Cache Handle: 0x0702 Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Core Count: 4 Core Enabled: 4 Thread Count: 8 Characteristics: 64-bit capable Handle 0x0401, DMI type 4, 40 bytes Processor Information Socket Designation: CPU2 Type: Central Processor Family: Xeon Manufacturer: Intel ID: FF FF FF FF FF FB FF BF Signature: Type 0, Family 6, Model 26, Stepping 5 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) PSE-36 (36-bit page size extension) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (Fast floating-point save and restore) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Hyper-threading technology) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Intel(R) Xeon(R) CPU E5520 @ 2.27GHz Voltage: 1.2 V External Clock: 5860 MHz Max Speed: 3600 MHz Current Speed: 2266 MHz Status: Populated, Idle Upgrade: Socket LGA1366 L1 Cache Handle: 0x0703 L2 Cache Handle: 0x0704 L3 Cache Handle: 0x0705 Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Core Count: 4 Core Enabled: 4 Thread Count: 8 Characteristics: 64-bit capable
Podemos ver fácilmente el número de sockets con un grep:
# dmidecode -t processor | grep "Socket D" Socket Designation: CPU1 Socket Designation: CPU2
A continuación podemos ver el número de cores reales con:
# dmidecode -t processor | grep "Core Count" Core Count: 4 Core Count: 4
No me he cruzado con ningún sistema “capado”, pero también podemos ver el número de cores habilitados:
# dmidecode -t processor | grep "Core Enabled" Core Enabled: 4 Core Enabled: 4
Finalmente, podemos ver si dispone de Hyper-threading:
# dmidecode -t processor | grep "HTT" HTT (Hyper-threading technology) HTT (Hyper-threading technology)
En el caso que este habilitado veremos que el Thread Count es mayor que el Core Count:
# dmidecode -t processor | grep "Thread" Thread Count: 8 Thread Count: 8
Relacionados
Imprimir
22. July 2010 at 8:50 am :
Estupendo articulo, muchas gracias
Para Solaris “prtdiag -v”
23. July 2010 at 2:00 am :
En VPS que esten virtualizados con OpenVZ normalmente no podrás ver esas estadísticas ya que esta capado:
# dmidecode -t processor | grep “Socket D”
/dev/mem: Permission denied
# dmidecode -t processor | grep “Core Count”
/dev/mem: Permission denied
# dmidecode -t processor | grep “Core Enabled”
/dev/mem: Permission denied
23. July 2010 at 3:30 pm :
A través de /proc/cpuinfo también se puede ver esta información.
El campo “physical id” indica el socket en el que se encuentra el procesador.
Y el campo “siblings” indica el número de procesadores lógicos por procesador físico. Si comparamos este campo con “cpu cores” sabemos si tenemos o no hyperthreading. Si son iguales no hay hyperthreading. Si “siblings” dobla a “cpu cores” sabemos que hay hyperthreading, para este caso 2 hilos por núcleo.
26. July 2010 at 11:56 am :
Tienes razón, no me había fijado en estos campos
Muchas gracias por tu comentario!!!
28. July 2010 at 2:33 pm :
Tambien podeis utilizar el comando lshw, esta en los repos de casi cualquier distro