2010-07-25 2 views
5

리눅스에서 /proc/diskstats (분명히 크로스 플랫폼 라이브러리가 좋을지라도)에서 제공되는 것과 비슷한 통계에 액세스하여 파이썬 프로그램에서 시스템 IO로드를 모니터링하고 싶습니다. 리눅스에서 디스크 입출력 통계를 쿼리하는데 사용할 수있는 기존 파이썬 라이브러리가 있습니까?/proc/diskstats를 모니터링하기위한 Python 라이브러리?

답변

10

알렉스 같은 파이썬은/proc/diskstats을 구문 분석하려고 http://dag.wieers.com/home-made/dstat/ 제안 :

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

정기적으로 방금 /proc/diskstats을 읽는 것이 좋습니다. sched을 사용하여 매분 또는 다른 작업을 반복합니까? 리눅스의 procfs은 커널이 사용자 영역 프로그램에 정보를 제공하는 텍스트 방식을 제공하기 때문에 멋지다. 텍스트는 다양한 언어로 읽고 쓰는 것이 가장 쉽다 ...!

1

라이브러리를 보지 못했지만 Linux 커널 통계를 읽는 데 "dstat"[1]라는 Python 도구를 사용해 볼 수 있습니다.

[1] - 경우 다른 사람에

5

PSUtil 디스크와 FS 통계의 번호를 제공하고, 또한 교차 플랫폼.

당신은 유용한 통계의 수를 반환 psutil.disk_io_counters(perdisk=True) 보라 :

 
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) 

이 통계는 (리눅스) /proc/diskstats에서 온

+0

psutil 사용할 수 있지만를'/ proc 디렉토리/훨씬 적은있다 diskstats' 메트릭은 원시'/ proc/diskstats'보다 빠릅니다. 나는 psutil을 이미 사용하고 있기 때문에 개인적으로이 질문을 접하게된다. 그러나 슬픈 듯이 중요한 일부를 놓친다. –

관련 문제