4 votos

Utilidad de Linux para registrar estadísticas de IO (azar/secuencial, tamaños de bloque, relación de lectura/escritura)

Como parte de aprovisionamiento de nuestro nuevo servidor (ver otras SF) me gustaría encontrar los siguientes:

  • relación de azar secuencial lee y escribe
  • cantidad de datos de lectura y escrito en un tiempo (pref en forma de histograma)

Ya puedo averiguar nuestro lee/escribe en cada operación y en general el nivel de datos usando iostat y dstat, pero me gustaría saber más. Por ejemplo, me gustaría saber que estamos más que nada al azar 16kb lee, o un montón de secuencial de 64kb lee con escrituras aleatorias.

Estamos (en la actualidad) en un Ubuntu 10.04 VM.

Hay una utilidad que puede ejecutar para registrar y presentar esta información para mí?

2voto

Tina Puntos 21

Me gusta el uso de la collectl utilidad para este propósito. He mencionado esto en otra respuesta para alguien que busca específicos de estadísticas de e/S de salida para la reproducción. Usted debe ser capaz de adaptar la salida a sus necesidades específicas. Con Ubuntu, esto debería estar disponible a través de la normal de repositorios. La advertencia es que usted no verá los porcentajes que usted está buscando.

nmon es también una buena herramienta que puede proporcionar la mayor parte de la información que usted está buscando en una interfaz de fácil.

Si ya estás familiarizado con iostat, lo que las banderas están utilizando actualmente?

Si eres hardcore y perfiles de una aplicación específica, SystemTap podría ser una opción, pero no estoy seguro de si se trata de la coincidencia. Se puede trabajar más de lo necesario.

Es muy fácil obtener esta información a partir de Solaris Dtrace (en ZFS de sistemas - NexentaStor captura de pantalla de abajo), pero para profundizar un poco en el lado Linux... Así que usted podría considerar la posibilidad de Dtrace para Linux.

enter image description here

1voto

user713303 Puntos 133

He seguido el camino de este post, el uso de SystemTap herramienta.

Primero, instalar systemtap. Para Debian/Ubuntu:

apt-get install systemtap linux-image-$(uname -r)-dbg linux-headers-$(uname -r)

Crear systemtap guión, guardar como blockio.stp:

global writes
global reads

probe ioblock.request {
    if(bio_rw_num(rw) == BIO_WRITE)
        writes[devname] <<< size
    if(bio_rw_num(rw) == BIO_READ)
        reads[devname] <<< size
}

probe end {
    printf("\n")
    # foreach([devname] in writes-) {
    #     printf("Device: %s\n", devname)
    #     println(@hist_log(writes[devname]))
    # }
    printf("WRITE\n")
    println(@hist_log(writes["sda1"]))
    printf("READ\n")
    println(@hist_log(reads["sda1"]))
}

Reemplazar sda1 con la unidad o el uso de método foreach como en el post original para mostrar estadísticas para todas las unidades.

Iniciar el monitoreo. Ejecutar como root

stap -v blockio.stp

Basta con Ctrl+C cuando desee finalizar el seguimiento. La salida será como

Pass 1: parsed user script and 95 library script(s) using 84064virt/25528res/2408shr/23916data kb, in 160usr/0sys/164real ms.
Pass 2: analyzed script: 3 probe(s), 21 function(s), 2 embed(s), 4 global(s) using 297648virt/205248res/86464shr/119268data kb, in 1750usr/60sys/1815real ms.
Pass 3: using cached /root/.systemtap/cache/ea/stap_ea33aaf95086fa562bb720d36fca7504_12821.c
Pass 4: using cached /root/.systemtap/cache/ea/stap_ea33aaf95086fa562bb720d36fca7504_12821.ko
Pass 5: starting run.
^C
WRITE
  value |-------------------------------------------------- count
      0 |@@@@@@@@@@@@@@@@@@@@@@@@                           191952
      1 |                                                        0
      2 |                                                        0
        ~
   1024 |                                                        0
   2048 |                                                        0
   4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  395272
   8192 |@@                                                  16273
  16384 |@                                                   12799
  32768 |                                                     4908
  65536 |                                                     4170
 131072 |                                                     2159
 262144 |                                                     6546
 524288 |                                                     4587
1048576 |                                                        0
2097152 |                                                        0

READ
  value |-------------------------------------------------- count
    128 |                                                       0
    256 |                                                       0
    512 |                                                       2
   1024 |                                                       0
   2048 |                                                       0
   4096 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  38229
   8192 |@@                                                  1550
  16384 |@@@                                                 2525
  32768 |@@                                                  1692
  65536 |@@                                                  1693
 131072 |@@@@@@@@@@@@@@@@@@                                 14455
 262144 |                                                     217
 524288 |                                                       0
1048576 |                                                       0

Pass 5: run completed in 140usr/720sys/3662349real ms.

0voto

chendo Puntos 1

iopatternen OSX no % aleatorio y secuencial por ciento, y iopending en OSX muestra un histograma pero yo no estoy seguro de lo que de. Ésos sin embargo son secuencias de comandos de Dtrace, así que no sería super útiles para usted.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: