Make job times include time waiting in the queue.

This is a temporary fix. The real fix will track wait time and run time both.
This commit is contained in:
JoelKatz
2013-07-22 00:40:45 -07:00
parent 5eae0b4005
commit 0e787747d3
3 changed files with 11 additions and 8 deletions

View File

@@ -40,15 +40,9 @@ JobType Job::getType () const
void Job::doJob ()
{
m_loadEvent->start ();
m_loadEvent->reName (mName);
mJob (*this);
// VFALCO TODO Isn't there a way to construct the load event with
// the proper name? This way the load event object
// can have the invariant "name is always set"
//
m_loadEvent->reName (mName);
}
void Job::rename (std::string const& newName)
@@ -61,6 +55,11 @@ int Job::getLimit () const
return m_limit;
}
LoadEvent& Job::peekEvent() const
{
return *m_loadEvent;
}
const char* Job::toString (JobType t)
{
switch (t)

View File

@@ -81,6 +81,8 @@ public:
int getLimit () const;
LoadEvent& peekEvent() const;
// These comparison operators make the jobs sort in priority order in the job set
bool operator< (const Job& j) const;
bool operator> (const Job& j) const;

View File

@@ -44,7 +44,9 @@ void JobQueue::addLimitJob (JobType type, const std::string& name, int limit, co
if (type != jtCLIENT) // FIXME: Workaround incorrect client shutdown ordering
assert (mThreadCount != 0); // do not add jobs to a queue with no threads
mJobSet.insert (Job (type, name, limit, ++mLastJob, mJobLoads[type], jobFunc));
std::pair< std::set <Job>::iterator, bool > it =
mJobSet.insert (Job (type, name, limit, ++mLastJob, mJobLoads[type], jobFunc));
it.first->peekEvent().start(); // start timing how long it stays in the queue
++mJobCounts[type].first;
mJobCond.notify_one ();
}