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

Reply via email to