wsd/Admin.cpp | 16 ++++++++-------- wsd/Admin.hpp | 8 ++++++-- 2 files changed, 14 insertions(+), 10 deletions(-)
New commits: commit 292400eeed5393a60345955835dbcc1306a82fde Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Jan 29 14:18:55 2017 -0500 wsd: reuse the timer-based memory stats for admin requests Change-Id: I3778458043174fb5489617d022445205daf91532 Reviewed-on: https://gerrit.libreoffice.org/33673 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/wsd/Admin.cpp b/wsd/Admin.cpp index 7a38723..6cfe993 100644 --- a/wsd/Admin.cpp +++ b/wsd/Admin.cpp @@ -117,7 +117,7 @@ bool AdminRequestHandler::adminCommandHandler(const std::vector<char>& payload) } else if (tokens[0] == "total_mem") { - const auto totalMem = _admin->getTotalMemoryUsage(model); + const auto totalMem = _admin->getTotalMemoryUsage(); sendTextFrame("total_mem " + std::to_string(totalMem)); } else if (tokens[0] == "kill" && tokens.count() == 2) @@ -290,8 +290,8 @@ Admin::Admin() : { Log::info("Admin ctor."); - _memStatsTask = new MemoryStats(this); - _memStatsTimer.schedule(_memStatsTask, _memStatsTaskInterval, _memStatsTaskInterval); + _memStatsTask.reset(new MemoryStats(this)); + _memStatsTimer.schedule(_memStatsTask.get(), _memStatsTaskInterval, _memStatsTaskInterval); _cpuStatsTask = new CpuStats(this); _cpuStatsTimer.schedule(_cpuStatsTask, _cpuStatsTaskInterval, _cpuStatsTaskInterval); @@ -328,7 +328,7 @@ void MemoryStats::run() { std::unique_lock<std::mutex> modelLock(_admin->getLock()); AdminModel& model = _admin->getModel(); - const auto totalMem = _admin->getTotalMemoryUsage(model); + const auto totalMem = model.getTotalMemoryUsage(); if (totalMem != _lastTotalMemory) { @@ -350,8 +350,8 @@ void Admin::rescheduleMemTimer(unsigned interval) { _memStatsTask->cancel(); _memStatsTaskInterval = interval; - _memStatsTask = new MemoryStats(this); - _memStatsTimer.schedule(_memStatsTask, _memStatsTaskInterval, _memStatsTaskInterval); + _memStatsTask.reset(new MemoryStats(this)); + _memStatsTimer.schedule(_memStatsTask.get(), _memStatsTaskInterval, _memStatsTaskInterval); Log::info("Memory stats interval changed - New interval: " + std::to_string(interval)); } @@ -364,10 +364,10 @@ void Admin::rescheduleCpuTimer(unsigned interval) Log::info("CPU stats interval changed - New interval: " + std::to_string(interval)); } -unsigned Admin::getTotalMemoryUsage(AdminModel& model) +unsigned Admin::getTotalMemoryUsage() { unsigned totalMem = Util::getMemoryUsage(_forKitPid); - totalMem += model.getTotalMemoryUsage(); + totalMem += _memStatsTask->getLastTotalMemory(); totalMem += Util::getMemoryUsage(Poco::Process::id()); return totalMem; diff --git a/wsd/Admin.hpp b/wsd/Admin.hpp index 52f0bd8..8da6fb8 100644 --- a/wsd/Admin.hpp +++ b/wsd/Admin.hpp @@ -48,6 +48,8 @@ private: bool _isAuthenticated; }; +class MemoryStats; + /// An admin command processor. class Admin { @@ -60,7 +62,7 @@ public: return admin; } - unsigned getTotalMemoryUsage(AdminModel&); + unsigned getTotalMemoryUsage(); /// Update the Admin Model. void update(const std::string& message); @@ -105,7 +107,7 @@ private: int _forKitPid; Poco::Util::Timer _memStatsTimer; - Poco::Util::TimerTask::Ptr _memStatsTask; + std::unique_ptr<MemoryStats> _memStatsTask; unsigned _memStatsTaskInterval = 5000; Poco::Util::Timer _cpuStatsTimer; @@ -129,6 +131,8 @@ public: Log::debug("Memory stat dtor"); } + long getLastTotalMemory() { return _lastTotalMemory; } + void run() override; private: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits