Dan Kenigsberg has posted comments on this change.
Change subject: BZ#720385 - Report disk latency (read , write & flush ) for
each storage device.
......................................................................
Patch Set 4: I would prefer that you didn't submit this
(4 inline comments)
....................................................
File vdsm/libvirtvm.py
Line 134: for item in devList['return']:
Line 135: fullDevName = item['device']
Line 136: alias = fullDevName[len('drive-'):].strip()
Line 137: devStats = item['stats']
Line 138: stats[alias] = dict(rd_op=devStats['rd_operations'],
{} is 3 times quicker than dict()
Line 139: wr_op=devStats['wr_operations'],
Line 140:
flush_op=devStats['flush_operations'],
Line 141:
rd_total_time_ns=devStats['rd_total_time_ns'],
Line 142:
wr_total_time_ns=devStats['wr_total_time_ns'],
Line 148: cmd = json.dumps({ "execute" : "query-blockstats" })
Line 149: res = libvirt_qemu.qemuMonitorCommand(self._vm._dom, cmd,
Line 150:
libvirt_qemu.VIR_DOMAIN_QEMU_MONITOR_COMMAND_DEFAULT)
Line 151: out = json.loads(res)
Line 152:
evil whitespace
Line 153: stats = _blockstatsParses(out)
Line 154: for vmDrive in self._vm._drives:
Line 155: try:
Line 156: diskLatency[vmDrive.name] = stats[vmDrive.alias]
Line 232: stats[dName] = dStats
Line 233:
Line 234: def _getDiskLatency(self, stats):
Line 235: sInfo, eInfo, sampleInterval =
self.sampleDiskLatency.getStats()
Line 236:
evil
Line 237: def _avgLatencyCalc(sData, eData):
Line 238: try:
Line 239: readLatency = (eData['rd_total_time_ns'] -
sData['rd_total_time_ns']) / \
Line 240: (eData['rd_op'] - sData['rd_op'])
Line 241: writeLatency = (eData['wr_total_time_ns'] -
sData['wr_total_time_ns']) / \
Line 242: (eData['wr_op'] - sData['wr_op'])
Line 243: flushLatency = (eData['flush_total_time_ns'] -
sData['flush_total_time_ns']) / \
Line 244: (eData['flush_op'] - sData['flush_op'])
Line 245: except ZeroDivisionError:
this should be per-value, since a guest may have 0 flushes in the last 10
seconds, but several reads.
also please consider avoiding ZeroDivisionError,
readLatency = 0 if (eData['rd_op'] - sData['rd_op']) else
(eData['rd_total_time_ns'] - sData['rd_total_time_ns']) / (eData['rd_op'] -
sData['rd_op'])
it seems faster and cleaner to me.
Line 246: self._log.debug("Disk latency not available")
Line 247: readLatency, writeLatency, flushLatency = (0, 0, 0)
Line 248:
Line 249: return str(readLatency), str(writeLatency),
str(flushLatency)
--
To view, visit http://gerrit.usersys.redhat.com/935
To unsubscribe, visit http://gerrit.usersys.redhat.com/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Id0d3d4869bcf35ed4d2ff72a5e1ef7aa21fe3455
Gerrit-PatchSet: 4
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Igor Lvovsky <[email protected]>
Gerrit-Reviewer: Dan Kenigsberg <[email protected]>
Gerrit-Reviewer: Federico Simoncelli <[email protected]>
Gerrit-Reviewer: Igor Lvovsky <[email protected]>
Gerrit-Reviewer: Rami Vaknin <[email protected]>
_______________________________________________
vdsm-patches mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/vdsm-patches