2010-07-25 7 views
5

me gustaría controlar la carga del sistema IO de un programa de pitón, acceder a estadísticas similares a las previstas en /proc/diskstats en Linux (aunque, obviamente, una biblioteca multiplataforma sería genial). ¿Existe una biblioteca de python existente que pueda usar para consultar las estadísticas de IO de disco en Linux?Biblioteca de Python para monitoreo/proc/diskstats?

Respuesta

10

En el caso de cualquier otra persona está tratando de analizar/proc/diskstats con Python como Alex sugirió:

def diskstats_parse(dev=None): 
    file_path = '/proc/diskstats' 
    result = {} 

    # ref: http://lxr.osuosl.org/source/Documentation/iostats.txt 
    columns_disk = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors', 
        'ms_reading', 'writes', 'wr_mrg', 'wr_sectors', 
        'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted'] 

    columns_partition = ['m', 'mm', 'dev', 'reads', 'rd_sectors', 'writes', 'wr_sectors'] 

    lines = open(file_path, 'r').readlines() 
    for line in lines: 
     if line == '': continue 
     split = line.split() 
     if len(split) == len(columns_disk): 
      columns = columns_disk 
     elif len(split) == len(columns_partition): 
      columns = columns_partition 
     else: 
      # No match 
      continue 

     data = dict(zip(columns, split)) 
     if dev != None and dev != data['dev']: 
      continue 
     for key in data: 
      if key != 'dev': 
       data[key] = int(data[key]) 
     result[data['dev']] = data 

    return result 
2

¿Qué pasa con sólo leer periódicamente /proc/diskstats, por ejemplo, usando sched para repetir la operación cada minuto o lo que sea? El procfs de Linux es bueno porque proporciona una manera textual para que el kernel suministre información a los programas de usuario y tierra, ya que el texto es más fácil de leer y usar en una gran variedad de idiomas ...!

1

No he visto una biblioteca, pero es posible que desee comprobar hacia fuera la herramienta de Python llamado "dstat" [1] para la lectura de las estadísticas del núcleo de Linux.

[1] - http://dag.wieers.com/home-made/dstat/

5

PSUtil proporciona una serie de estadísticas de disco y fs y es también multiplataforma.

Usted debe mirar psutil.disk_io_counters(perdisk=True) que devuelve un número de métricas útiles:

 
read_count: number of reads 
write_count: number of writes 
read_bytes: number of bytes read 
write_bytes: number of bytes written 
read_time: time spent reading from disk (in milliseconds) 
write_time: time spent writing to disk (in milliseconds) 

Estas métricas provienen de /proc/diskstats (en Linux)

+0

aunque psutil puede utilizar '/ proc/diskstats' tiene mucho menos métricas que raw '/ proc/diskstats'. Personalmente me encontré con esta pregunta, porque ya usamos psutil, pero lamentablemente omitimos algunas partes importantes. –