Configuración de IBM eXtremeMemory e IBM eXtremeIO

Configurando eXtremeMemory, puede almacenar objetos en memoria nativa en lugar de hacerlo en el almacenamiento dinámico Java. La configuración de eXtremeMemory habilita eXtremeIO, un nuevo mecanismo de transporte. Si mueve los objetos fuera del almacenamiento dinámico de Java, evitará las pausas de recogida de basura, lo que hará que el rendimiento sea más constante y los tiempos de respuesta sean predecibles.

Antes de empezar

Acerca de esta tarea

La JVM se basa en la heurística de uso para recopilar, compactar y ampliar la memoria de proceso. La recogida de basura completa estas operaciones. Sin embargo, la ejecución de la recogida de basura tiene un coste asociado. El coste de ejecutar la recogida de basura aumenta a medida que aumenta el tamaño del almacenamiento dinámico Java y el número de objetos de la cuadrícula de datos. La JVM proporciona heurísticas diferentes para distintos casos de uso y objetivos: rendimiento óptimo, tiempo de pausa óptimo y recogida de basura generacional, equilibrada y en tiempo real. Si no hay heurística, es perfecto. Una heurística individual no puede ajustarse a todas las configuraciones posibles.

WebSphere eXtreme Scale utiliza almacenamiento caché de datos, con correlaciones distribuidas que tienen entradas con un ciclo de vida conocido públicamente. Est ciclo de vida incluye las operaciones siguientes: GET, INSERT, DELETE y UPDATE. Al utilizar estos ciclos de vida de correlación conocidos públicamente, eXtremeMemory y eXtremeIO pueden utilizar la memoria de forma más eficaz que la heurística de uso de JVM.

El diagrama siguiente muestra cómo el uso de eXtremeMemory lleva a tiempos de respuesta relativos más coherentes en el entorno. A medida que los tiempos de respuesta relativos alcanzan los percentiles más altos, las solicitudes que están utilizando eXtremeMemory tienen tiempos de respuesta relativos más bajos. El diagrama muestra los percentiles 95 a 100.

.
Figura 1. Comparación de tiempos de respuesta de almacenamiento dinámico y de eXtremeMemory
El tiempo de respuesta relativo aumenta a medida que aumenta el percentil de tiempo de respuesta. Los tiempos de respuesta relativos son mucho más bajos para eXtremeMemory que para el almacenamiento dinámico.
Cuando se utiliza eXtremeMemory, eXtremeIO se utiliza para la comunicación entre servidores de contenedor. Los objetos se serializan en bytes en el servidor de contenedor. Para habilitar eXtremeIO y eXtremeMemory, establece las propiedades de servidor necesarias en todos los servidores de contenedor en la cuadrícula de datos y reinicia los servidores.

Procedimiento

  1. Opcional: Determinar el valor de propiedad de maxXMSize apropiado a utilizar.
    1. En la configuración existente, determinar el tamaño por entrada. Ejecute el mandato xscmd -c showMapSizes para determinar este tamaño.
    2. Calcule el valor de maxXMSize. Para obtener el tamaño total máximo de las entradas (tamaño_total_máximo), multiplique el tamaño_por_entrada * número_máximo_de_entradas. No utilice más de 60% de maxXMSize para justificar el proceso de metadatos. Multiplique tamaño_total_máximo * 1,65 para obtener el valor de maxXMSize.
  2. Actualice el archivo de propiedades del servidor para cada servidor de contenedor de la configuración para habilitar el nuevo transporte. Las siguientes propiedades de servidor habilitan el nuevo transporte:
    Propiedades necesarias
    enableXM
    Cuando se establece en true, habilita IBM® eXtremeMemory en el servidor y configura el servidor para utilizar IBM eXtremeIO para la réplica síncrona y asíncrona. Las entradas de memoria caché se almacenan en la memoria nativa en lugar de hacerlo en el almacenamiento dinámico Java. Todos los servidores de contenedor de la cuadrícula de datos deben utilizar el mismo valor para la propiedad enableXM.

    Valor predeterminado: false

    Propiedades sugeridas
    maxXMSize
    Establece la cantidad máxima de memoria, en megabytes, utilizada por el servidor para el almacenamiento eXtremeMemory.

    Valor predeterminado: 25% del total de memoria del sistema

    Propiedades opcionales
    maxXIONetworkThreads
    Establece el número máximo de hebras que se asignarán en la agrupación de hebras de red de transporte de eXtremeIO.

    Valor predeterminado:50

    minXIONetworkThreads
    Establece el número mínimo de hebras que se asignarán en la agrupación de hebras de red de transporte de eXtremeIO.

    Valor predeterminado:50

    maxXIOWorkerThreads
    Establece el número máximo de hebras que se asignarán en la agrupación de hebras de proceso de solicitud de transporte de eXtremeIO.

    Valor predeterminado:128

    minXIOWorkerThreads
    Establece el número mínimo de hebras que se asignarán en la agrupación de hebras de proceso de solicitudes de transporte de eXtremeIO.

    Valor predeterminado:128

    xioChannel.xioContainerTCPNonSecure.Port
    Especifica el número de puerto de escucha no seguro de eXtremeIO en el servidor. Si no establece el valor, se utiliza un puerto efímero. Esta propiedad sólo se utiliza cuando la propiedad transportType se establece en TCP/IP.
    xioChannel.xioContainerTCPSecure.Port
    Especifica el número de puerto SSL de eXtremeIO en el servidor. Esta propiedad sólo se utiliza cuando la propiedad transportType se establece en SSL-Supported o SSL-Required.
  3. Reinicie los servidores de contenedor para empezar a utilizar el nuevo mecanismo de transporte. Si desea más información, consulte Inicio y detención de los servidores autónomos y Inicio y detención de servidores en un entorno de WebSphere Application Server.