(self)
return result
Create a map of disks in the machine.

        http://www.kernel.org/doc/Documentation/iostats.txt

        Returns:
          (major, minor) -> DiskStatistics(device, ...)
Create a map of disks in the machine.
Create a map of disks in the machine .
def get_disk_statistics(self):
        """
        Create a map of disks in the machine.

        http://www.kernel.org/doc/Documentation/iostats.txt

        Returns:
          (major, minor) -> DiskStatistics(device, ...)
        """
        result = {}

        if os.access('/proc/diskstats', os.R_OK):
            self.proc_diskstats = True
            fp = open('/proc/diskstats')

            try:
                for line in fp:
                    try:
                        columns = line.split()
                        # On early linux v2.6 versions, partitions have only 4
                        # output fields not 11. From linux 2.6.25 partitions
                        # have the full stats set.
                        if len(columns) < 14:
                            continue
                        major = int(columns[0])
                        minor = int(columns[1])
                        device = columns[2]

                        if ((device.startswith('ram') or
                             device.startswith('loop'))):
                            continue

                        result[(major, minor)] = {
                            'device': device,
                            'reads': float(columns[3]),
                            'reads_merged': float(columns[4]),
                            'reads_sectors': float(columns[5]),
                            'reads_milliseconds': float(columns[6]),
                            'writes': float(columns[7]),
                            'writes_merged': float(columns[8]),
                            'writes_sectors': float(columns[9]),
                            'writes_milliseconds': float(columns[10]),
                            'io_in_progress': float(columns[11]),
                            'io_milliseconds': float(columns[12]),
                            'io_milliseconds_weighted': float(columns[13])
                        }
                    except ValueError:
                        continue
            finally:
                fp.close()
        else:
            self.proc_diskstats = False
            if not psutil:
                self.log.error('Unable to import psutil')
                return None

            disks = psutil.disk_io_counters(True)
            sector_size = int(self.config['sector_size'])
            for disk in disks:
                result[(0, len(result))] = {
                    'device': disk,
                    'reads': disks[disk].read_count,
                    'reads_sectors': disks[disk].read_bytes / sector_size,
                    'reads_milliseconds': disks[disk].read_time,
                    'writes': disks[disk].write_count,
                    'writes_sectors': disks[disk].write_bytes / sector_size,
                    'writes_milliseconds': disks[disk].write_time,
                    'io_milliseconds':
                        disks[disk].read_time + disks[disk].write_time,
                    'io_milliseconds_weighted':
                        disks[disk].read_time + disks[disk].write_time
                }

        return result
def get_disk_statistics ( self ) : result = { } if os . access ( '/proc/diskstats' , os . R_OK ) : self . proc_diskstats = True fp = open ( '/proc/diskstats' ) try : for line in fp : try : columns = line . split ( ) # On early linux v2.6 versions, partitions have only 4 # output fields not 11. From linux 2.6.25 partitions # have the full stats set. if len ( columns ) < 14 : continue major = int ( columns [ 0 ] ) minor = int ( columns [ 1 ] ) device = columns [ 2 ] if ( ( device . startswith ( 'ram' ) or device . startswith ( 'loop' ) ) ) : continue result [ ( major , minor ) ] = { 'device' : device , 'reads' : float ( columns [ 3 ] ) , 'reads_merged' : float ( columns [ 4 ] ) , 'reads_sectors' : float ( columns [ 5 ] ) , 'reads_milliseconds' : float ( columns [ 6 ] ) , 'writes' : float ( columns [ 7 ] ) , 'writes_merged' : float ( columns [ 8 ] ) , 'writes_sectors' : float ( columns [ 9 ] ) , 'writes_milliseconds' : float ( columns [ 10 ] ) , 'io_in_progress' : float ( columns [ 11 ] ) , 'io_milliseconds' : float ( columns [ 12 ] ) , 'io_milliseconds_weighted' : float ( columns [ 13 ] ) } except ValueError : continue finally : fp . close ( ) else : self . proc_diskstats = False if not psutil : self . log . error ( 'Unable to import psutil' ) return None disks = psutil . disk_io_counters ( True ) sector_size = int ( self . config [ 'sector_size' ] ) for disk in disks : result [ ( 0 , len ( result ) ) ] = { 'device' : disk , 'reads' : disks [ disk ] . read_count , 'reads_sectors' : disks [ disk ] . read_bytes / sector_size , 'reads_milliseconds' : disks [ disk ] . read_time , 'writes' : disks [ disk ] . write_count , 'writes_sectors' : disks [ disk ] . write_bytes / sector_size , 'writes_milliseconds' : disks [ disk ] . write_time , 'io_milliseconds' : disks [ disk ] . read_time + disks [ disk ] . write_time , 'io_milliseconds_weighted' : disks [ disk ] . read_time + disks [ disk ] . write_time } return result