refactor get_latency
diff --git a/sensors/io_sensors.py b/sensors/io_sensors.py
index 219a48f..615d381 100644
--- a/sensors/io_sensors.py
+++ b/sensors/io_sensors.py
@@ -47,22 +47,26 @@
def get_latency(stat1, stat2):
- disks = set([ i.split('.')[0] for i in stat1 ])
+ disks = set(i.split('.', 1)[0] for i in stat1)
results = {}
+
for disk in disks:
- rdc = disk+'.reads_completed'
- wrc = disk+'.writes_completed'
- rdt = disk+'.rtime'
- wrt = disk+'.wtime'
- if all(i in stat1 for i in [rdc, wrc, rdt, wrt]) and \
- all(i in stat2 for i in [rdc, wrc, rdt, wrt]):
- lat = 0.0
- if abs((stat1[rdc].value + stat1[wrc].value) - \
- (stat2[rdc].value + stat2[wrc].value)) > 0:
- lat = abs(float((stat1[rdt].value + stat1[wrt].value) - \
- (stat2[rdt].value + stat2[wrt].value)) / \
- (stat1[rdc].value + stat1[wrc].value) - \
- (stat2[rdc].value + stat2[wrc].value))
- results[disk+'.latence'] = SensorInfo(lat, False)
+ rdc = disk + '.reads_completed'
+ wrc = disk + '.writes_completed'
+ rdt = disk + '.rtime'
+ wrt = disk + '.wtime'
+ lat = 0.0
+
+ io_ops1 = stat1[rdc].value + stat1[wrc].value
+ io_ops2 = stat2[rdc].value + stat2[wrc].value
+
+ diops = io_ops2 - io_ops1
+
+ if diops != 0:
+ io1 = stat1[rdt].value + stat1[wrt].value
+ io2 = stat2[rdt].value + stat2[wrt].value
+ lat = abs(float(io1 - io2)) / diops
+
+ results[disk + '.latence'] = SensorInfo(lat, False)
return results