fix disk total_time metrics

libvirt rd_total_time and wr_total_time metrics are in nanoseconds[1].
the current computation puts it to us not ms as defined. just skip any
conversion completely as we already capture cputime in nanoseconds.

[1] https://linux.die.net/man/1/virsh

Change-Id: I68951a2c7d08c58497952f2f2a448d813e17e2cb
This commit is contained in:
gord chung 2017-08-29 17:54:19 +00:00
parent f69f771134
commit 0d4eb0bb86
3 changed files with 11 additions and 14 deletions

View File

@ -242,12 +242,12 @@ class PerDevicePhysicalPollster(PerDeviceDiskPollster):
class PerDeviceDiskReadLatencyPollster(PerDeviceDiskPollster):
sample_name = 'disk.device.read.latency'
sample_type = sample.TYPE_CUMULATIVE
sample_unit = 'ms'
sample_unit = 'ns'
sample_stats_key = 'rd_total_times'
class PerDeviceDiskWriteLatencyPollster(PerDeviceDiskPollster):
sample_name = 'disk.device.write.latency'
sample_type = sample.TYPE_CUMULATIVE
sample_unit = 'ms'
sample_unit = 'ns'
sample_stats_key = 'wr_total_times'

View File

@ -122,16 +122,13 @@ class LibvirtInspector(virt_inspector.Inspector):
for target in tree.findall('devices/disk/target')]):
block_stats = domain.blockStats(device)
block_stats_flags = domain.blockStatsFlags(device, 0)
wr_times = block_stats_flags['wr_total_times']*1.0/1000
rd_times = block_stats_flags['rd_total_times']*1.0/1000
yield virt_inspector.DiskStats(device=device,
read_requests=block_stats[0],
read_bytes=block_stats[1],
write_requests=block_stats[2],
write_bytes=block_stats[3],
errors=block_stats[4],
wr_total_times=wr_times,
rd_total_times=rd_times)
yield virt_inspector.DiskStats(
device=device,
read_requests=block_stats[0], read_bytes=block_stats[1],
write_requests=block_stats[2], write_bytes=block_stats[3],
errors=block_stats[4],
wr_total_times=block_stats_flags['wr_total_times'],
rd_total_times=block_stats_flags['rd_total_times'])
@libvirt_utils.retry_on_disconnect
def inspect_disk_info(self, instance, duration):

View File

@ -305,8 +305,8 @@ class TestLibvirtInspection(base.BaseTestCase):
self.assertEqual(2, disks[0].read_bytes)
self.assertEqual(3, disks[0].write_requests)
self.assertEqual(4, disks[0].write_bytes)
self.assertEqual(91752302.267, disks[0].wr_total_times)
self.assertEqual(29142253.616, disks[0].rd_total_times)
self.assertEqual(91752302267, disks[0].wr_total_times)
self.assertEqual(29142253616, disks[0].rd_total_times)
def test_inspect_disks_with_domain_shutoff(self):
domain = mock.Mock()