Introducción.
Después de realizado el proceso de instalación de SUN Java en los diferentes nodos del cluster la configuración de Java debería funcionar inmediatamente sin embargo al verificar la lista de cuales nodos soportan trabajos Java aparece vacía.
# condor_status -java
Realizar verificaciones (1).
Se verifican los valores básicos de la configuración de Java y su correspondencia con la realidad del cluster.
Ubicación de Java.
# condor_config_val JAVA
/usr/bin/java
# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 26 Jun 13 11:43 /usr/bin/java -> /usr/java/default/bin/java
# /usr/bin/java -version
java version “1.6.0_20″
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
Tamaño máximo de la memoria del heap.
# condor_config_val JAVA_MAXHEAP_ARGUMENT
-Xmx1024m
Diagnosticar el problema.
# condor_starter -classad
CondorVersion = “$CondorVersion: 7.4.2 Mar 29 2010 BuildID: 227044 $”
IsDaemonCore = True
HasFileTransfer = True
HasPerFileEncryption = True
HasReconnect = True
HasMPI = True
HasTDP = True
HasJobDeferral = True
HasJICLocalConfig = True
HasJICLocalStdin = True
Invalid maximum heap size: -Xmx1024m246m
Could not create the Java virtual machine.
HasVM = True
Según se interpreta lo anterior, Condor está detectando correctamente la ubicación de la máquina virtual de Java, sin embargo está fallando en su creación debido a un valor inválido en la cantidad máxima de memoria para el heap. Según el manual de Condor esto puede estar sucediendo cuando se utiliza la máquina virtual de SUN Microsystems.
One identified difficulty occurs when the machine has a large quantity of physical RAM, and this quantity exceeds the Java limitations. This is a known problem for the Sun JVM. Condor appends the maximum amount of system RAM to the Java Maxheap Argument, and sometimes this value is larger than the JVM allows. The end result is that Condor believes that the JVM on the machine is faulty, resulting in nothing showing up as a result of executing the command condor_status -java.
Implementar la solución.
Reemplazar la definión de la variable JAVA_MAXHEAP_ARGUMENT con las siguientes variables.
# vi /opt/condor/condor/etc/condor_config.local
# First set JAVA_MAXHEAP_ARGUMENT to null, to disable the default of max RAM
JAVA_MAXHEAP_ARGUMENT =
# Now set the argument with the Sun-specific maximum allowable value
JAVA_EXTRA_ARGUMENTS = -Xmx1024m
Ajuste según sus requerimientos, el valor de memoria (MB) a asignársele al heap en el parámetro JAVA_EXTRA_ARGUMENTS.
# condor_reconfig c-head c-wn1 c-wn2
Sent “Reconfig” command to master c-head.jorgeivanmeza.com
Sent “Reconfig” command to master c-wn1.jorgeivanmeza.com
Sent “Reconfig” command to master c-wn2.jorgeivanmeza.com
Realizar verificaciones (2).
Estado de la configuración de Java.
# condor_starter -classad
CondorVersion = “$CondorVersion: 7.4.2 Mar 29 2010 BuildID: 227044 $”
IsDaemonCore = True
HasFileTransfer = True
HasPerFileEncryption = True
HasReconnect = True
HasMPI = True
HasTDP = True
HasJobDeferral = True
HasJICLocalConfig = True
HasJICLocalStdin = True
JavaVendor = “Sun Microsystems Inc.”
JavaVersion = “1.6.0_20″
JavaSpecificationVersion = “1.6″
JavaMFlops = 495.500641
HasJava = True
HasVM = True
Nodos con soporte para Java.
# condor_status -java
Name JavaVendor Ver State Activity LoadAv Mem ActvtyTime
c-wn1.jorgeivanmez Sun Micros 1.6.0_ Unclaimed Idle 0.230 246 0+00:00:04
c-wn2.jorgeivanmez Sun Micros 1.6.0_ Unclaimed Idle 0.080 246 0+00:00:04
Total Owner Claimed Unclaimed Matched Preempting Backfill
X86_64/LINUX 2 0 0 2 0 0 0
Total 2 0 0 2 0 0 0
Enlaces.