diff options
author | Kshitij Bansal <kshitij@cs.nyu.edu> | 2014-02-20 08:57:39 -0500 |
---|---|---|
committer | Kshitij Bansal <kshitij@cs.nyu.edu> | 2014-02-20 08:57:39 -0500 |
commit | 531ec6e52b75cd2f600a3fc781383e7539f2335a (patch) | |
tree | 2a78deb202f6886b6524f3852dc81f46c0eff36a /src/main/command_executor_portfolio.cpp | |
parent | 046fd1e02c1330b207bda99f8121b11562dd619c (diff) |
portfolio: add stat to track time spent waiting for interrupted threads to stop
Diffstat (limited to 'src/main/command_executor_portfolio.cpp')
-rw-r--r-- | src/main/command_executor_portfolio.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/main/command_executor_portfolio.cpp b/src/main/command_executor_portfolio.cpp index 24469c668..7392b2b62 100644 --- a/src/main/command_executor_portfolio.cpp +++ b/src/main/command_executor_portfolio.cpp @@ -47,12 +47,14 @@ CommandExecutorPortfolio::CommandExecutorPortfolio d_channelsOut(), d_channelsIn(), d_ostringstreams(), - d_statLastWinner("portfolio::lastWinner") + d_statLastWinner("portfolio::lastWinner"), + d_statWaitTime("portfolio::waitTime") { assert(d_threadOptions.size() == d_numThreads); d_statLastWinner.setData(d_lastWinner); d_stats.registerStat_(&d_statLastWinner); + d_stats.registerStat_(&d_statWaitTime); /* Duplication, Individualisation */ d_exprMgrs.push_back(&d_exprMgr); @@ -86,6 +88,9 @@ CommandExecutorPortfolio::~CommandExecutorPortfolio() } d_exprMgrs.clear(); d_smts.clear(); + + d_stats.unregisterStat_(&d_statLastWinner); + d_stats.unregisterStat_(&d_statWaitTime); } void CommandExecutorPortfolio::lemmaSharingInit() @@ -283,6 +288,8 @@ bool CommandExecutorPortfolio::doCommandSingleton(Command* cmd) assert(d_channelsOut.size() == d_numThreads || d_numThreads == 1); assert(d_smts.size() == d_numThreads); + assert( !d_statWaitTime.running() ); + boost::function<void()> smFn = d_numThreads <= 1 ? boost::function<void()>() : boost::bind(sharingManager<ChannelFormat>, @@ -293,7 +300,10 @@ bool CommandExecutorPortfolio::doCommandSingleton(Command* cmd) pair<int, bool> portfolioReturn = runPortfolio(d_numThreads, smFn, fns, - d_options[options::waitToJoin]); + d_options[options::waitToJoin], d_statWaitTime); + + assert( d_statWaitTime.running() ); + d_statWaitTime.stop(); delete d_seq; d_seq = new CommandSequence(); |