summaryrefslogtreecommitdiff
path: root/src/main/command_executor_portfolio.cpp
diff options
context:
space:
mode:
authorKshitij Bansal <kshitij@cs.nyu.edu>2014-02-20 08:57:39 -0500
committerKshitij Bansal <kshitij@cs.nyu.edu>2014-02-20 08:57:39 -0500
commit531ec6e52b75cd2f600a3fc781383e7539f2335a (patch)
tree2a78deb202f6886b6524f3852dc81f46c0eff36a /src/main/command_executor_portfolio.cpp
parent046fd1e02c1330b207bda99f8121b11562dd619c (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.cpp14
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();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback