Ejercicio 1.3: Identificar un cuello de botella de hebra

Antes de empezar, complete el Ejercicio 1.2 Recopilar datos de hebra.

Buscar cuellos de botella de hebra utilizando la vista Hebras

La vista Hebra visualiza el estado de todas las hebras de la aplicación e indica explícitamente puntos muertos y contiendas de hebras.

Para buscar cuellos de botella:

  1. En el Supervisor de perfilado, pulse con el botón derecho del ratón el recurso Perfilado y después pulse Abrir con > Vista Hebras. Se abre la vista Hebras. Tiene un aspecto parecido al siguiente:

    Captura de pantalla de la vista Hebras que muestra los resultados de esta ejecución de perfilado, tal como se describe en el texto siguiente.

    Lo que nos interesa son las flechas verticales entre hebras. Una flecha indica que una hebra (la hebra en la que se origina la flecha) está esperando otra hebra (la hebra a la que señala la flecha) para liberar un bloqueo. Una flecha doble indica que hay dos hebras en un estado de punto muerto, esperando cada una a que la otra libere un bloqueo.

  2. Las flechas están demasiado cerca entre sí para distinguirse fácilmente. Para verlas mejor, pase de la escala de tiempo lineal a una escala de tiempo ponderada pulsando el botón Pasar a escala de tiempo comprimida . La escala de Tiempo comprimida comprime los segmentos de tiempo durante los que no han tenido lugar acciones de hebra significativas. La visualización cambia a algo parecido a esto:

    Captura de pantalla que muestra la distribución de las flechas después de cambiar la escala de tiempo a 'Comprimida.'

  3. Interprete la vista Hebras de la manera siguiente:

    Poco después del inicio del programa, se crean cuatro hebras philo*, una después de la otra. Cada hebra se ejecuta brevemente y después solicita un bloqueo. Las peticiones no pueden satisfacerse. Cuando las tres primeras peticiones de bloqueo fallan, las hebras entran en estado Esperando bloqueo. Cuando la petición de bloqueo de la cuarta hebra falla, se produce un punto muerto y la pantalla indica que las cuatro hebras están en estado de Punto muerto.

    Las hebras philo* están esperando un bloqueo de otras hebras philo* que también esperan un bloqueo. En este caso, tenemos un punto muerto: el programa alcanza un callejón sin salida y no puede continuar.
    Nota: puede ver información específica acerca de las peticiones de bloqueo, los puntos muertos y otros estados poniendo el cursor sobre un segmento de hebra determinado. Esto visualiza una ayuda en línea que especifica, por ejemplo el nombre de un bloqueo e identifica la hebra que mantiene el bloqueo (la "Hebra de bloqueo").

  4. También encontrará información detallada acerca de los segmentos de hebra en la vista Propiedades. Para visualizar la vista, seleccione Ventanas > Mostrar vista > Propiedades. Seleccione un segmento de hebra para visualizar las propiedades.

Ahora que entiende por qué se produce este punto muerto, está preparado para comenzar el Ejercicio 1.4: Resolver el cuello de botella de hebras.

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.