Job queue simplificaiton

This commit is contained in:
JoelKatz
2013-03-06 19:30:08 -08:00
parent dc3d82272e
commit 0007d76923
6 changed files with 18 additions and 23 deletions

View File

@@ -26,7 +26,6 @@ JobQueue::JobQueue() : mLastJob(0), mThreadCount(0), mShuttingDown(false)
mJobLoads[jtCLIENT].setTargetLatency(2000, 5000);
mJobLoads[jtPEER].setTargetLatency(200, 1250);
mJobLoads[jtDISK].setTargetLatency(500, 1000);
mJobLoads[jtRPC].setTargetLatency(1250, 1750);
mJobLoads[jtACCEPTLEDGER].setTargetLatency(1000, 2500);
}
@@ -53,7 +52,6 @@ const char* Job::toString(JobType t)
case jtPEER: return "peerCommand";
case jtDISK: return "diskAccess";
case jtRPC: return "rpc";
case jtACCEPTLEDGER: return "acceptLedger";
case jtTXN_PROC: return "processTransaction";
case jtOB_SETUP: return "orderBookSetup";

View File

@@ -39,11 +39,10 @@ enum JobType
// special types not dispatched by the job pool
jtPEER = 24,
jtDISK = 25,
jtRPC = 26,
jtACCEPTLEDGER = 27,
jtTXN_PROC = 28,
jtOB_SETUP = 29,
jtPATH_FIND = 30
jtACCEPTLEDGER = 26,
jtTXN_PROC = 27,
jtOB_SETUP = 28,
jtPATH_FIND = 29
}; // CAUTION: If you add new types, add them to JobType.cpp too
#define NUM_JOB_TYPES 32
@@ -66,7 +65,7 @@ public:
Job(JobType type, const std::string& name, uint64 index, LoadMonitor& lm, const boost::function<void(Job&)>& job)
: mType(type), mJobIndex(index), mJob(job), mName(name)
{
mLoadMonitor = boost::make_shared<LoadEvent>(boost::ref(lm), name, false, 1);
mLoadMonitor = boost::make_shared<LoadEvent>(boost::ref(lm), name, false);
}
JobType getType() const { return mType; }
@@ -112,9 +111,9 @@ public:
void setThreadCount(int c = 0);
LoadEvent::pointer getLoadEvent(JobType t, const std::string& name)
{ return boost::make_shared<LoadEvent>(boost::ref(mJobLoads[t]), name, true, 1); }
{ return boost::make_shared<LoadEvent>(boost::ref(mJobLoads[t]), name, true); }
LoadEvent::autoptr getLoadEventAP(JobType t, const std::string& name)
{ return LoadEvent::autoptr(new LoadEvent(mJobLoads[t], name, true, 1)); }
{ return LoadEvent::autoptr(new LoadEvent(mJobLoads[t], name, true)); }
int isOverloaded();
Json::Value getJson(int c = 0);

View File

@@ -30,12 +30,12 @@ void LoadMonitor::update()
} while (mLastUpdate < now);
}
void LoadMonitor::addCount(int counts)
void LoadMonitor::addCount()
{
boost::mutex::scoped_lock sl(mLock);
update();
mCounts += counts;
++mCounts;
}
void LoadMonitor::addLatency(int latency)
@@ -55,7 +55,7 @@ void LoadMonitor::addLatency(int latency)
mLatencyMSPeak = lp;
}
void LoadMonitor::addCountAndLatency(const std::string& name, int counts, int latency)
void LoadMonitor::addCountAndLatency(const std::string& name, int latency)
{
if (latency > 500)
{
@@ -63,10 +63,11 @@ void LoadMonitor::addCountAndLatency(const std::string& name, int counts, int la
}
if (latency == 1)
latency = 0;
boost::mutex::scoped_lock sl(mLock);
update();
mCounts += counts;
++mCounts;
++mLatencyEvents;
mLatencyMSAvg += latency;
mLatencyMSPeak += latency;

View File

@@ -30,9 +30,9 @@ public:
mTargetLatencyAvg(0), mTargetLatencyPk(0)
{ mLastUpdate = upTime(); }
void addCount(int counts);
void addCount();
void addLatency(int latency);
void addCountAndLatency(const std::string& name, int counts, int latency);
void addCountAndLatency(const std::string& name, int latency);
void setTargetLatency(uint64 avg, uint64 pk)
{
@@ -59,13 +59,12 @@ public:
protected:
LoadMonitor& mMonitor;
bool mRunning;
int mCount;
std::string mName;
boost::posix_time::ptime mStartTime;
public:
LoadEvent(LoadMonitor& monitor, const std::string& name, bool shouldStart, int count) :
mMonitor(monitor), mRunning(false), mCount(count), mName(name)
LoadEvent(LoadMonitor& monitor, const std::string& name, bool shouldStart) :
mMonitor(monitor), mRunning(false), mName(name)
{
mStartTime = boost::posix_time::microsec_clock::universal_time();
if (shouldStart)
@@ -93,7 +92,7 @@ public:
{
assert(mRunning);
mRunning = false;
mMonitor.addCountAndLatency(mName, mCount,
mMonitor.addCountAndLatency(mName,
static_cast<int>((boost::posix_time::microsec_clock::universal_time() - mStartTime).total_milliseconds()));
}
};

View File

@@ -913,7 +913,7 @@ static void checkPropose(Job& job, boost::shared_ptr<ripple::TMProposeSet> packe
memcpy(prevLedger.begin(), set.previousledger().data(), 256 / 8);
if (!proposal->checkSign(set.signature()))
{
cLog(lsWARNING) << "proposal with previous ledger fails signature check";
cLog(lsWARNING) << "proposal with previous ledger fails signature check: " << getIP();
Peer::punishPeer(peer, LT_InvalidSignature);
return;
}

View File

@@ -2893,8 +2893,6 @@ Json::Value RPCHandler::doCommand(const Json::Value& jvRequest, int iRole)
cLog(lsTRACE) << "COMMAND:" << strCommand;
cLog(lsTRACE) << "REQUEST:" << jvRequest;
LoadEvent::autoptr le(theApp->getJobQueue().getLoadEventAP(jtRPC, "RPC"));
mRole = iRole;
static struct {