summaryrefslogtreecommitdiff
path: root/ceilometer/compute
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-08-29 17:15:07 +0000
committerGerrit Code Review <review@openstack.org>2017-08-29 17:15:07 +0000
commitf69f7711342995c74d9cc4cd4ce392668a1e591c (patch)
tree4b38a9490e9976f2d220529a6e9d3e8aba7b049a /ceilometer/compute
parent1c8c30ddb5eb7d3e65ea52302afd57a98b53fbc8 (diff)
parented67c2bd3a5e1c4034a1f8a59761861f6eb0fc7d (diff)
downloadceilometer-f69f7711342995c74d9cc4cd4ce392668a1e591c.tar.gz
Merge "Add disk total duration of reads/writes metric"
Diffstat (limited to 'ceilometer/compute')
-rw-r--r--ceilometer/compute/pollsters/disk.py14
-rw-r--r--ceilometer/compute/virt/hyperv/inspector.py2
-rw-r--r--ceilometer/compute/virt/inspector.py3
-rw-r--r--ceilometer/compute/virt/libvirt/inspector.py7
4 files changed, 23 insertions, 3 deletions
diff --git a/ceilometer/compute/pollsters/disk.py b/ceilometer/compute/pollsters/disk.py
index 8a190141..c3074309 100644
--- a/ceilometer/compute/pollsters/disk.py
+++ b/ceilometer/compute/pollsters/disk.py
@@ -237,3 +237,17 @@ class PerDevicePhysicalPollster(PerDeviceDiskPollster):
sample_name = 'disk.device.usage'
sample_unit = 'B'
sample_stats_key = 'physical'
+
+
+class PerDeviceDiskReadLatencyPollster(PerDeviceDiskPollster):
+ sample_name = 'disk.device.read.latency'
+ sample_type = sample.TYPE_CUMULATIVE
+ sample_unit = 'ms'
+ sample_stats_key = 'rd_total_times'
+
+
+class PerDeviceDiskWriteLatencyPollster(PerDeviceDiskPollster):
+ sample_name = 'disk.device.write.latency'
+ sample_type = sample.TYPE_CUMULATIVE
+ sample_unit = 'ms'
+ sample_stats_key = 'wr_total_times'
diff --git a/ceilometer/compute/virt/hyperv/inspector.py b/ceilometer/compute/virt/hyperv/inspector.py
index 8771e8d5..f1819f22 100644
--- a/ceilometer/compute/virt/hyperv/inspector.py
+++ b/ceilometer/compute/virt/hyperv/inspector.py
@@ -132,7 +132,7 @@ class HyperVInspector(virt_inspector.Inspector):
read_bytes=disk_metrics['read_mb'] * units.Mi,
write_requests=0,
write_bytes=disk_metrics['write_mb'] * units.Mi,
- errors=0)
+ errors=0, wr_total_times=0, rd_total_times=0)
def inspect_disk_latency(self, instance, duration):
instance_name = util.instance_name(instance)
diff --git a/ceilometer/compute/virt/inspector.py b/ceilometer/compute/virt/inspector.py
index 7f6f5174..eb705168 100644
--- a/ceilometer/compute/virt/inspector.py
+++ b/ceilometer/compute/virt/inspector.py
@@ -112,7 +112,8 @@ DiskStats = collections.namedtuple('DiskStats',
['device',
'read_bytes', 'read_requests',
'write_bytes', 'write_requests',
- 'errors'])
+ 'errors', 'wr_total_times',
+ 'rd_total_times'])
# Named tuple representing disk rate statistics.
#
diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py
index 3c2d3023..eaf4d575 100644
--- a/ceilometer/compute/virt/libvirt/inspector.py
+++ b/ceilometer/compute/virt/libvirt/inspector.py
@@ -121,12 +121,17 @@ class LibvirtInspector(virt_inspector.Inspector):
[target.get("dev")
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])
+ errors=block_stats[4],
+ wr_total_times=wr_times,
+ rd_total_times=rd_times)
@libvirt_utils.retry_on_disconnect
def inspect_disk_info(self, instance, duration):