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:
parent
f69f771134
commit
0d4eb0bb86
@ -242,12 +242,12 @@ class PerDevicePhysicalPollster(PerDeviceDiskPollster):
|
|||||||
class PerDeviceDiskReadLatencyPollster(PerDeviceDiskPollster):
|
class PerDeviceDiskReadLatencyPollster(PerDeviceDiskPollster):
|
||||||
sample_name = 'disk.device.read.latency'
|
sample_name = 'disk.device.read.latency'
|
||||||
sample_type = sample.TYPE_CUMULATIVE
|
sample_type = sample.TYPE_CUMULATIVE
|
||||||
sample_unit = 'ms'
|
sample_unit = 'ns'
|
||||||
sample_stats_key = 'rd_total_times'
|
sample_stats_key = 'rd_total_times'
|
||||||
|
|
||||||
|
|
||||||
class PerDeviceDiskWriteLatencyPollster(PerDeviceDiskPollster):
|
class PerDeviceDiskWriteLatencyPollster(PerDeviceDiskPollster):
|
||||||
sample_name = 'disk.device.write.latency'
|
sample_name = 'disk.device.write.latency'
|
||||||
sample_type = sample.TYPE_CUMULATIVE
|
sample_type = sample.TYPE_CUMULATIVE
|
||||||
sample_unit = 'ms'
|
sample_unit = 'ns'
|
||||||
sample_stats_key = 'wr_total_times'
|
sample_stats_key = 'wr_total_times'
|
||||||
|
@ -122,16 +122,13 @@ class LibvirtInspector(virt_inspector.Inspector):
|
|||||||
for target in tree.findall('devices/disk/target')]):
|
for target in tree.findall('devices/disk/target')]):
|
||||||
block_stats = domain.blockStats(device)
|
block_stats = domain.blockStats(device)
|
||||||
block_stats_flags = domain.blockStatsFlags(device, 0)
|
block_stats_flags = domain.blockStatsFlags(device, 0)
|
||||||
wr_times = block_stats_flags['wr_total_times']*1.0/1000
|
yield virt_inspector.DiskStats(
|
||||||
rd_times = block_stats_flags['rd_total_times']*1.0/1000
|
device=device,
|
||||||
yield virt_inspector.DiskStats(device=device,
|
read_requests=block_stats[0], read_bytes=block_stats[1],
|
||||||
read_requests=block_stats[0],
|
write_requests=block_stats[2], write_bytes=block_stats[3],
|
||||||
read_bytes=block_stats[1],
|
errors=block_stats[4],
|
||||||
write_requests=block_stats[2],
|
wr_total_times=block_stats_flags['wr_total_times'],
|
||||||
write_bytes=block_stats[3],
|
rd_total_times=block_stats_flags['rd_total_times'])
|
||||||
errors=block_stats[4],
|
|
||||||
wr_total_times=wr_times,
|
|
||||||
rd_total_times=rd_times)
|
|
||||||
|
|
||||||
@libvirt_utils.retry_on_disconnect
|
@libvirt_utils.retry_on_disconnect
|
||||||
def inspect_disk_info(self, instance, duration):
|
def inspect_disk_info(self, instance, duration):
|
||||||
|
@ -305,8 +305,8 @@ class TestLibvirtInspection(base.BaseTestCase):
|
|||||||
self.assertEqual(2, disks[0].read_bytes)
|
self.assertEqual(2, disks[0].read_bytes)
|
||||||
self.assertEqual(3, disks[0].write_requests)
|
self.assertEqual(3, disks[0].write_requests)
|
||||||
self.assertEqual(4, disks[0].write_bytes)
|
self.assertEqual(4, disks[0].write_bytes)
|
||||||
self.assertEqual(91752302.267, disks[0].wr_total_times)
|
self.assertEqual(91752302267, disks[0].wr_total_times)
|
||||||
self.assertEqual(29142253.616, disks[0].rd_total_times)
|
self.assertEqual(29142253616, disks[0].rd_total_times)
|
||||||
|
|
||||||
def test_inspect_disks_with_domain_shutoff(self):
|
def test_inspect_disks_with_domain_shutoff(self):
|
||||||
domain = mock.Mock()
|
domain = mock.Mock()
|
||||||
|
Loading…
Reference in New Issue
Block a user