[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: configuration: cores=2 enabledcores=1



2012/8/17 Walter O. Dari <wlinuxw@gmail.com>:
> Hola...
>
> On 17/08/12 10:30, Camaleón wrote:
>>
>> El Thu, 16 Aug 2012 15:24:55 -0300, Walter O. Dari escribió:
>>
>>
>>> On 16/08/12 10:51, Camaleón wrote:
>>
>>
>> (...)
>>
>>>>> En consecuencia no entiendo que es lo que pasa, lshw me dice que tengo
>>>>> sólo uno habilitado y por otro lado estoy monitoreando los dos, y
>>>>> los
>>>>>
>>>>> dos muestran distinto uso...
>>>>>
>>>>> Es normal o tengo que configurar algo para que me reconozca los dos
>>>>> cores ?
>>>>
>>>>
>>>> No, no es normal, deberías tener los dos activados y reconocibles.
>>>
>>>
>>> Pues parece que están bien, el problema es el lshw...
>>
>>
>> Por los resultados que obtienes con el resto de utilidades, sí, eso
>> parece :-?
>>
>> Lo único que se me ocurre es:
>>
>> 1/ Un bug/error de la aplicación
>
>
> Casi seguro...
>
>> 2/ Que lo hayas ejecutado como usuario normal en lugar de súperusaurio y
>>
>> no sepa/pueda detectar/interpretar todos los valores correctamente
>
>
> Si se ejecuta como usuario normal esa línea (la de los cores) directamente
> no se muestra,
>
>
>> 3/ Que estemos interpretando mal lo que indica ese valor de
>> "enabledcores" pero a falta de documentación yo diría que parece
>> evidente.
>
>
> mmm... recién acabo de correr lshw -como root- en la computadora de casa y
> esa línea de "enabledcores..." no aparece, y ésta tiene un core i5. Algo
> raro pasa con ese parámetro.
>
>> Saludos,
>

Estuve investigando un poco, y comparando el código fuente de la
versión B-2.14 (squeeze) y B-2-16 (wheezy) de lshw, descubrí que esta
captura de información se agregó en esta última versión, como una
modificación del código "src/core/dmi.cc", que a pesar de no
actualizar los comentarios, indica que está basado en el DMI decode
rev 1.7 de Alan Cox. Este se encarga de tomar información de la
memoria del BIOS, basada en la especificación SMBIOS (DMI), la cual
indica para estos valores:

7.5.6     Processor Information — Core Count

Core Count is the number of cores detected by the BIOS for this
processor socket. It does not necessarily indicate the full capability
of the processor. For example, platform hardware may have the
capability to limit the number of cores reported by the processor
without BIOS intervention or knowledge. For a dual-core processor
installed in a platform where the hardware is set to limit it to one
core, the BIOS reports a value of 1 in Core Count. For a dual-core
processor with multi-core support disabled by BIOS, the BIOS reports a
value of 2 in Core Count.

7.5.7     Processor Information — Core Enabled

Core Enabled is the number of cores that are enabled by the BIOS and
available for Operating System use. For example, if the BIOS detects a
dual-core processor, it would report a value of 2 if it leaves both
cores enabled, and it would report a value of 1 if it disables
multi-core support.

(Puede consultarse en:
http://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.7.1.pdf)

Las líneas en cuestión, indican que este es un elemento de tipo 4
(type 4: Processor Information), y realiza el reconocimiento de la
siguiente manera:

switch (dm->type)
   // (...cortado con el propósito de simplificar...)
   case 4:
   // Processor
     {
     // (...cortado con el propósito de simplificar...)
       if (dm->length >= 0x28)
       {
         if (data[0x23] != 0)
             newnode.setConfig("cores", data[0x23]);
         if (data[0x24] != 0)
             newnode.setConfig("enabledcores", data[0x24]);
         if (data[0x25] != 0)
             newnode.setConfig("threads", data[0x25]);
         if (data[0x26] & 0x4)
             newnode.addCapability("x86-64", "64bits extensions (x86-64)");
       }

Los valores 0x23, 0x24, 0x25, corresponde con los índices de la tabla
20 (Processor Information (Type 4) Structure) que describe la
estructura del campo que recoge la información de los procesadores. Si
todo esto funciona correctamente, no debe haber error en el
reconocimiento del número de núcleos.

Compilé la última versión de lshw de los repositorios de Debian
(B.02.16), y probé en mis equipos (todos instalados con Squeeze), y en
2 logré obtener estos valores:

  *-cpu
       description: CPU
       product: AMD Phenom(tm) 9950 Quad-Core Processor
       vendor: Advanced Micro Devices [AMD]
       physical id: 3
       bus info: cpu@0
       version: AMD Phenom(tm) 9950 Quad-Core Processor
       serial: To Be Filled By O.E.M.
       slot: CPU 1
       size: 1300MHz
       capacity: 1300MHz
       width: 64 bits
       clock: 200MHz
       capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr
pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse
sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp 3dnowext 3dnow
constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt
lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse
3dnowprefetch osvw ibs cpufreq
       configuration: cores=4 enabledcores=4

  *-cpu
       description: CPU
       product: Intel(R) Atom(TM) CPU N455   @ 1.66GHz
       vendor: Intel Corp.
       physical id: 5
       bus info: cpu@0
       version: C1
       slot: CPU 1
       size: 1GHz
       capacity: 1GHz
       width: 64 bits
       clock: 667MHz
       capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr
pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr
sse sse2 ss ht tm pbe syscall nx constant_tsc arch_perfmon pebs bts
rep_good aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr
pdcm movbe lahf_lm cpufreq
       configuration: cores=1 enabledcores=1 threads=2

Los que concuerdan con la configuración en los equipos donde se ejecutó.

Revisando el historial de lo planteado, es posible que se trate de
alguna limitación impuesta por la información colocada por el
fabricante en el BIOS, que impide se consulte esta información
apropiadamente, y en el caso del equipo de Walter, en el mejor de los
escenarios, no se esté actualizando adecuadamente. Mi recomendación es
que pruebes deshabilitar por BIOS el feature de HyperThreading y/o
Multi-Cores, inicies el sistema y verifiques mediante /proc/cpuinfo,
lscpu, lshw, top, entre otras, cuantos cores o CPUs reporta. Esto
viene del hecho de que el procesador Intel Pentium Processor G630
contiene a 2 cores y 2 threads, y alguna de estas herramientas debería
indicarte la disponibilidad 4 CPUs y no 2 CPUs, dada la forma en que
los kernel SMP tratan los threads de procesador.

-- 
German Cardozo Chirinos
~ carpe diem ~

:wq! / C-c C-c


Reply to: