Repository: mesos Updated Branches: refs/heads/master dda49e688 -> 04b214de8
Added queue size metric for the allocator. Review: https://reviews.apache.org/r/35632 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/04b214de Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/04b214de Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/04b214de Branch: refs/heads/master Commit: 04b214de80dc52d534b87aedbbd4d07016d8c0e5 Parents: dda49e6 Author: Benjamin Mahler <[email protected]> Authored: Thu Jun 18 15:54:35 2015 -0700 Committer: Benjamin Mahler <[email protected]> Committed: Thu Jun 18 16:04:24 2015 -0700 ---------------------------------------------------------------------- src/master/allocator/mesos/hierarchical.hpp | 58 +++++++++++++++--------- src/tests/master_tests.cpp | 4 ++ 2 files changed, 40 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/04b214de/src/master/allocator/mesos/hierarchical.hpp ---------------------------------------------------------------------- diff --git a/src/master/allocator/mesos/hierarchical.hpp b/src/master/allocator/mesos/hierarchical.hpp index c220ea6..646ee8c 100644 --- a/src/master/allocator/mesos/hierarchical.hpp +++ b/src/master/allocator/mesos/hierarchical.hpp @@ -25,8 +25,11 @@ #include <mesos/resources.hpp> #include <mesos/type_utils.hpp> +#include <process/event.hpp> #include <process/delay.hpp> #include <process/id.hpp> +#include <process/metrics/gauge.hpp> +#include <process/metrics/metrics.hpp> #include <process/timeout.hpp> #include <stout/check.hpp> @@ -67,11 +70,18 @@ template <typename RoleSorter, typename FrameworkSorter> class HierarchicalAllocatorProcess : public MesosAllocatorProcess { public: - HierarchicalAllocatorProcess(); + HierarchicalAllocatorProcess() + : ProcessBase(process::ID::generate("hierarchical-allocator")), + initialized(false), + metrics(*this), + roleSorter(NULL) {} - virtual ~HierarchicalAllocatorProcess(); + virtual ~HierarchicalAllocatorProcess() {} - process::PID<HierarchicalAllocatorProcess> self(); + process::PID<HierarchicalAllocatorProcess> self() const + { + return process::PID<Self>(this); + } void initialize( const Duration& allocationInterval, @@ -178,6 +188,24 @@ protected: void(const FrameworkID&, const hashmap<SlaveID, Resources>&)> offerCallback; + struct Metrics + { + explicit Metrics(const Self& process) + : event_queue_dispatches( + "allocator/event_queue_dispatches", + process::defer(process.self(), &Self::_event_queue_dispatches)) + { + process::metrics::add(event_queue_dispatches); + } + + ~Metrics() + { + process::metrics::remove(event_queue_dispatches); + } + + process::metrics::Gauge event_queue_dispatches; + } metrics; + struct Framework { std::string role; @@ -189,6 +217,11 @@ protected: hashset<Filter*> filters; // Active filters for the framework. }; + double _event_queue_dispatches() + { + return static_cast<double>(eventCount<process::DispatchEvent>()); + } + hashmap<FrameworkID, Framework> frameworks; struct Slave @@ -263,25 +296,6 @@ public: template <class RoleSorter, class FrameworkSorter> -HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter>::HierarchicalAllocatorProcess() // NOLINT(whitespace/line_length) - : ProcessBase(process::ID::generate("hierarchical-allocator")), - initialized(false) {} - - -template <class RoleSorter, class FrameworkSorter> -HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter>::~HierarchicalAllocatorProcess() // NOLINT(whitespace/line_length) -{} - - -template <class RoleSorter, class FrameworkSorter> -process::PID<HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter> > -HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter>::self() -{ - return process::PID<HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter> >(this); // NOLINT(whitespace/line_length) -} - - -template <class RoleSorter, class FrameworkSorter> void HierarchicalAllocatorProcess<RoleSorter, FrameworkSorter>::initialize( const Duration& _allocationInterval, http://git-wip-us.apache.org/repos/asf/mesos/blob/04b214de/src/tests/master_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/master_tests.cpp b/src/tests/master_tests.cpp index 62cf87d..962455c 100644 --- a/src/tests/master_tests.cpp +++ b/src/tests/master_tests.cpp @@ -1573,12 +1573,16 @@ TEST_F(MasterTest, MetricsInMetricsEndpoint) EXPECT_EQ(1u, snapshot.values.count("master/disk_used")); EXPECT_EQ(1u, snapshot.values.count("master/disk_percent")); + // Registrar Metrics. EXPECT_EQ(1u, snapshot.values.count("registrar/queued_operations")); EXPECT_EQ(1u, snapshot.values.count("registrar/registry_size_bytes")); EXPECT_EQ(1u, snapshot.values.count("registrar/state_fetch_ms")); EXPECT_EQ(1u, snapshot.values.count("registrar/state_store_ms")); + // Allocator Metrics. + EXPECT_EQ(1u, snapshot.values.count("allocator/event_queue_dispatches")); + Shutdown(); }
