diff options
author | Eoghan Glynn <eglynn@redhat.com> | 2014-04-14 12:51:20 +0000 |
---|---|---|
committer | Eoghan Glynn <eglynn@redhat.com> | 2014-04-15 16:19:51 +0000 |
commit | 1bbf17650f9d94a22256f356abf84cc71c831f1f (patch) | |
tree | 86d8c8ae1278883dbca068c3ffc160c32eff6508 | |
parent | cd13ec0f71c2745d8e740652ec4703962d491ba5 (diff) | |
download | ceilometer-1bbf17650f9d94a22256f356abf84cc71c831f1f.tar.gz |
More accurate meter name and unit for host load averages2014.1.rc32014.1
Fixes bug 1307482
Previously, the SNMP reported load averages were misleadingly metered
as percentage utilizations.
Now, these samples include a meter name and unit that more accurately
reflect their true meaning - i.e. an exponentially-damped moving average
of the number of running or runnable processes.
Change-Id: I5dbc6f7886ed9a451926b502365ec80322f6b458
(cherry picked from commit 5872c6fd12bbd3711f8a9e68adcfa70e8f8d80bc)
-rw-r--r-- | ceilometer/hardware/pollsters/cpu.py | 18 | ||||
-rw-r--r-- | ceilometer/tests/hardware/pollsters/base.py | 4 | ||||
-rw-r--r-- | ceilometer/tests/hardware/pollsters/test_cpu.py | 21 | ||||
-rw-r--r-- | setup.cfg | 6 |
4 files changed, 27 insertions, 22 deletions
diff --git a/ceilometer/hardware/pollsters/cpu.py b/ceilometer/hardware/pollsters/cpu.py index 5505eb8e..2d3b00c5 100644 --- a/ceilometer/hardware/pollsters/cpu.py +++ b/ceilometer/hardware/pollsters/cpu.py @@ -30,37 +30,37 @@ class _Base(plugin.HardwarePollster): INSPECT_METHOD = 'inspect_cpu' -class CPUUtil1MinPollster(_Base): +class CPULoad1MinPollster(_Base): @staticmethod def generate_one_sample(host, c_data): return util.make_sample_from_host(host, - name='cpu.util.1min', + name='cpu.load.1min', type=sample.TYPE_GAUGE, - unit='%', + unit='process', volume=c_data.cpu_1_min, ) -class CPUUtil5MinPollster(_Base): +class CPULoad5MinPollster(_Base): @staticmethod def generate_one_sample(host, c_data): return util.make_sample_from_host(host, - name='cpu.util.5min', + name='cpu.load.5min', type=sample.TYPE_GAUGE, - unit='%', + unit='process', volume=c_data.cpu_5_min, ) -class CPUUtil15MinPollster(_Base): +class CPULoad15MinPollster(_Base): @staticmethod def generate_one_sample(host, c_data): return util.make_sample_from_host(host, - name='cpu.util.15min', + name='cpu.load.15min', type=sample.TYPE_GAUGE, - unit='%', + unit='process', volume=c_data.cpu_15_min, ) diff --git a/ceilometer/tests/hardware/pollsters/base.py b/ceilometer/tests/hardware/pollsters/base.py index 99fab030..d1412e4c 100644 --- a/ceilometer/tests/hardware/pollsters/base.py +++ b/ceilometer/tests/hardware/pollsters/base.py @@ -65,7 +65,7 @@ class TestPollsterBase(test_base.BaseTestCase): @mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock()) def _check_get_samples(self, factory, name, - expected_value, expected_type): + expected_value, expected_type, expected_unit=None): mgr = manager.AgentManager() pollster = factory() cache = {} @@ -80,3 +80,5 @@ class TestPollsterBase(test_base.BaseTestCase): match = [s for s in samples if s.name == name] self.assertEqual(expected_value, match[0].volume) self.assertEqual(expected_type, match[0].type) + if expected_unit: + self.assertEqual(expected_unit, match[0].unit) diff --git a/ceilometer/tests/hardware/pollsters/test_cpu.py b/ceilometer/tests/hardware/pollsters/test_cpu.py index 0f13638d..63aa7184 100644 --- a/ceilometer/tests/hardware/pollsters/test_cpu.py +++ b/ceilometer/tests/hardware/pollsters/test_cpu.py @@ -23,16 +23,19 @@ from ceilometer.tests.hardware.pollsters import base class TestCPUPollsters(base.TestPollsterBase): def test_1min(self): - self._check_get_samples(cpu.CPUUtil1MinPollster, - 'hardware.cpu.util.1min', - 0.99, sample.TYPE_GAUGE) + self._check_get_samples(cpu.CPULoad1MinPollster, + 'hardware.cpu.load.1min', + 0.99, sample.TYPE_GAUGE, + expected_unit='process') def test_5min(self): - self._check_get_samples(cpu.CPUUtil5MinPollster, - 'hardware.cpu.util.5min', - 0.77, sample.TYPE_GAUGE) + self._check_get_samples(cpu.CPULoad5MinPollster, + 'hardware.cpu.load.5min', + 0.77, sample.TYPE_GAUGE, + expected_unit='process') def test_15min(self): - self._check_get_samples(cpu.CPUUtil15MinPollster, - 'hardware.cpu.util.15min', - 0.55, sample.TYPE_GAUGE) + self._check_get_samples(cpu.CPULoad15MinPollster, + 'hardware.cpu.load.15min', + 0.55, sample.TYPE_GAUGE, + expected_unit='process') @@ -122,9 +122,9 @@ ceilometer.poll.central = switch.flow.duration.nanoseconds = ceilometer.network.statistics.flow:FlowPollsterDurationNanoseconds switch.flow.duration.seconds = ceilometer.network.statistics.flow:FlowPollsterDurationSeconds switch.flow.packets = ceilometer.network.statistics.flow:FlowPollsterPackets - hardware.cpu.util.1min = ceilometer.hardware.pollsters.cpu:CPUUtil1MinPollster - hardware.cpu.util.5min = ceilometer.hardware.pollsters.cpu:CPUUtil5MinPollster - hardware.cpu.util.15min = ceilometer.hardware.pollsters.cpu:CPUUtil15MinPollster + hardware.cpu.load.1min = ceilometer.hardware.pollsters.cpu:CPULoad1MinPollster + hardware.cpu.load.5min = ceilometer.hardware.pollsters.cpu:CPULoad5MinPollster + hardware.cpu.load.15min = ceilometer.hardware.pollsters.cpu:CPULoad15MinPollster hardware.disk.size.total = ceilometer.hardware.pollsters.disk:DiskTotalPollster hardware.disk.size.used = ceilometer.hardware.pollsters.disk:DiskUsedPollster hardware.network.bandwidth.bytes = ceilometer.hardware.pollsters.net:BandwidthBytesPollster |