
Estoy ejecutando Hudson en una máquina con Windows 7 (x64): esto simplemente se inicia usando 'java -jar hudson.war'. Por alguna razón, el proceso de Java solo usa una CPU, de las 2 disponibles, aunque ejecuta varios subprocesos. Estoy bastante seguro de que el comportamiento predeterminado del sistema operativo es distribuir los subprocesos de un programa multiproceso entre las CPU, a menos que se indique explícitamente lo contrario (usando alguna API SetProcessorAffinity si no recuerdo mal).
¿Hay alguna manera de decirle a Java que use varias CPU?
Respuesta1
Normalmente, java.exe
colocará automáticamente subprocesos en diferentes CPU.
Si no es así, podría deberse a que el programa está vinculado a E/S, en lugar de a la CPU, o porque los subprocesos no pueden ejecutarse simultáneamente debido a la sincronización.
Verhttp://www.oracle.com/technetwork/java/hotspotfaq-138619.html#perf_scalingpara más información.
Probablemente tendrás que depurar Hudson para saber por qué utiliza sólo un procesador.