dstat_disk_tps.py (dstat-0.7.3) | : | dstat_disk_tps.py (dstat-0.7.4) | ||
---|---|---|---|---|
skipping to change at line 28 | skipping to change at line 28 | |||
def discover(self, *objlist): | def discover(self, *objlist): | |||
ret = [] | ret = [] | |||
for l in self.splitlines(): | for l in self.splitlines(): | |||
if len(l) < 13: continue | if len(l) < 13: continue | |||
if l[3:] == ['0',] * 11: continue | if l[3:] == ['0',] * 11: continue | |||
name = l[2] | name = l[2] | |||
ret.append(name) | ret.append(name) | |||
for item in objlist: ret.append(item) | for item in objlist: ret.append(item) | |||
if not ret: | if not ret: | |||
raise Exception, "No suitable block devices found to monitor" | raise Exception('No suitable block devices found to monitor') | |||
return ret | return ret | |||
def vars(self): | def vars(self): | |||
ret = [] | ret = [] | |||
if op.disklist: | if op.disklist: | |||
varlist = op.disklist | varlist = op.disklist | |||
elif not op.full: | elif not op.full: | |||
varlist = ('total',) | varlist = ('total',) | |||
else: | else: | |||
varlist = [] | varlist = [] | |||
for name in self.discover: | for name in self.discover: | |||
if self.diskfilter.match(name): continue | if self.diskfilter.match(name): continue | |||
if name not in blockdevices(): continue | if name not in blockdevices(): continue | |||
varlist.append(name) | varlist.append(name) | |||
# if len(varlist) > 2: varlist = varlist[0:2] | # if len(varlist) > 2: varlist = varlist[0:2] | |||
varlist.sort() | varlist.sort() | |||
for name in varlist: | for name in varlist: | |||
if name in self.discover + ['total'] + op.diskset.keys(): | if name in self.discover + ['total'] or name in op.diskset: | |||
ret.append(name) | ret.append(name) | |||
return ret | return ret | |||
def name(self): | def name(self): | |||
return ['dsk/'+sysfs_dev(name) for name in self.vars] | return ['dsk/'+sysfs_dev(name) for name in self.vars] | |||
def extract(self): | def extract(self): | |||
for name in self.vars: self.set2[name] = (0, 0) | for name in self.vars: self.set2[name] = (0, 0) | |||
for l in self.splitlines(): | for l in self.splitlines(): | |||
if len(l) < 13: continue | if len(l) < 13: continue | |||
if l[3] == '0' and l[7] == '0': continue | if l[3] == '0' and l[7] == '0': continue | |||
if l[3:] == ['0',] * 11: continue | if l[3:] == ['0',] * 11: continue | |||
name = l[2] | name = l[2] | |||
if not self.diskfilter.match(name): | if not self.diskfilter.match(name): | |||
self.set2['total'] = ( self.set2['total'][0] + long(l[3]), self. set2['total'][1] + long(l[7]) ) | self.set2['total'] = ( self.set2['total'][0] + int(l[3]), self.s et2['total'][1] + int(l[7]) ) | |||
if name in self.vars and name != 'total': | if name in self.vars and name != 'total': | |||
self.set2[name] = ( self.set2[name][0] + long(l[3]), self.set2[n ame][1] + long(l[7])) | self.set2[name] = ( self.set2[name][0] + int(l[3]), self.set2[na me][1] + int(l[7])) | |||
for diskset in self.vars: | for diskset in self.vars: | |||
if diskset in op.diskset.keys(): | if diskset in op.diskset: | |||
for disk in op.diskset[diskset]: | for disk in op.diskset[diskset]: | |||
if re.match('^'+disk+'$', name): | if re.match('^'+disk+'$', name): | |||
self.set2[diskset] = ( self.set2[diskset][0] + long( l[3]), self.set2[diskset][1] + long(l[7]) ) | self.set2[diskset] = ( self.set2[diskset][0] + int(l [3]), self.set2[diskset][1] + int(l[7]) ) | |||
for name in self.set2.keys(): | for name in self.set2: | |||
self.val[name] = map(lambda x, y: (y - x) / elapsed, self.set1[name] | self.val[name] = list(map(lambda x, y: (y - x) / elapsed, self.set1[ | |||
, self.set2[name]) | name], self.set2[name])) | |||
if step == op.delay: | if step == op.delay: | |||
self.set1.update(self.set2) | self.set1.update(self.set2) | |||
End of changes. 7 change blocks. | ||||
9 lines changed or deleted | 9 lines changed or added |