El comando plockstat acude en nuestra ayuda

mié 12 de diciembre del 2007

Veíamos en el artículo anterior que con el comando lockstat podíamos tracear los bloqueos que se dan en nuestro sistema a nivel de kernel. Sin embargo nuestra aplicación puede sufrir bloqueos a nivel de usuario. Estos se crean desde el código de una aplicación usando las llamadas mutex_init() o rwlock_init(). Lógicamente su función es sincronizar el acceso de los distintos threads a determinados recursos.

OpenSolaris nos permite tracear los dichos bloqueos con el comando plockstat, usa dtrace internamente, de forma que podemos medir el impacto en la performance. En la página man encontraremos explicadas las distintas opciones, nosotros usamos las opciones -A para que nos reporte todos los eventos, con la opción -p podemos monitorizar a un pid existente.

plockstat -A cat /etc/passwd
[...]

Mutex hold

Count     nsec Lock                         Caller

    1    70200 libc.so.1`_uberdata+0xfc0    cat`_start+0x110
    1    40900 libc.so.1`__sbrk_lock        libc.so.1`_smalloc+0x4c
    1    39400 libc.so.1`_uberdata+0x40     LM1`ld.so.1`call_init+0x70
    1    34300 libc.so.1`_uberdata+0x40	    LM1`ld.so.1`call_init+0x70
    1    27600 libc.so.1`_uberdata+0xfc0    cat`_start+0xac
    1    24700 libc.so.1`_uberdata+0x40     cat`main+0x24
    1    23100 libc.so.1`_uberdata+0x40     cat`main+0x24
    1     4900 libc.so.1`_uberdata+0xfc0    cat`_start+0xb8

La salida es casi autoexplicativa:

  • Count: número de veces que se ha producido el evento
  • nsec: duración media en nanosegundos del bloqueo
  • Lock: nombre del bloqueo
  • Caller: función mas offset que ha llamado al bloqueo.

Estos datos pueden ser de una gran ayuda para que nuestros desarrolladores mejoren la performance de sus aplicaciones.


Posted by Roger Jordan | Categories: Opensolaris
hi
ylv494hlfekyhidt
good luck
Lamont Ramirez, 09.01.2009, 5:10am #
hi
ylv494hlfekyhidt
good luck
Clark Dennis, 10.01.2009, 6:05pm #
Add comment here
name:
e-mail:
website:
spam-protection, please enter code: captcha, sorry
comment: