2010-11-25 19 views
5

Qué significa un subproceso de hardware. ¿Es siempre el doble de la cantidad de núcleos de procesador disponibles? ¿Cómo determinar la cantidad de subprocesos de hardware en un procesador Intel Core 2 Duo? ¿Se puede determinar a través del código de Java?Cómo determinar el número de subprocesos de hardware

+2

El hilo de hardware es un concepto de kernel y depende de su sistema operativo. – EboMike

Respuesta

5

Lo que se entiende por un hilo de hardware.

Cuéntanos. No es realmente un término establecido.

¿Siempre hay el doble de núcleos de procesador disponibles?

Ah, ahora parece que estás hablando de hyperthreading donde las redundancias parciales dentro de un núcleo de CPU se utilizan para "falsificar" un núcleo adicional.

Cómo determinar el número de hilos de hardware en un procesador Intel Core 2 Duo ? ¿Se puede determinar mediante código Java?

Puede intentar encontrar algo en las propiedades del sistema, pero no va a ser estándar (es decir, depende de la JVM y el sistema operativo).

Personalmente, usaría un valor por defecto razonable (4 u 8 hilos - tener unos cuantos es demasiado para no usar los núcleos disponibles) y hacerlo configurable.

+1

Me encantaría saber por qué iJeeves quiere saber. ¿Podría estar pensando en problemas que van más allá de la cuestión de las CPU centrales ...? – TheBlastOne

+0

Lo encontré en muchos artículos relacionados. http://www.ibm.com/developerworks/java/library/j-jtp11137.html – devnull

1

Supongo que se refiere al número de CPU. Puede obtenerlo por:

int N_CPUS = Runtime.getRuntime(). AvailableProcessors();

Utilizando este valor, puede determinar cuántos subprocesos debería existir en su grupo de subprocesos si planea implementarlos. Para leer más sobre el tamaño del grupo de subprocesos, puede hacerlo en Java en Concurrencia, Sección 8.2.

3

Definitivamente no es el caso que el número de subprocesos de hardware es dos veces el número de núcleos: los procesadores AMD no tienen ningún tipo de hyperthreading (yet) y el hyperthreading se puede desactivar en el BIOS (como suele ser fue para procesadores pre-nehalem, ya que realmente no te compre mucho en la práctica). Tampoco hay ninguna razón por la que necesariamente deba tener solo dos hilos de hardware por núcleo: los sistemas Power7 tienen 4 per core.

No existe una forma independiente del SO o del hardware para realizar estas comprobaciones. La única biblioteca que conozco que puede portar de forma bastante portátil esta información es la biblioteca hardware locality (hwloc). Es una biblioteca C, por lo que debería ser bastante simple llamar desde Java.

Cuestiones relacionadas