forked from lix-project/hydra
hydra-queue-runner: More stats
This commit is contained in:
parent
62b53a0a47
commit
41ba7418e2
|
@ -248,6 +248,8 @@ private:
|
||||||
counter nrStepsBuilding{0};
|
counter nrStepsBuilding{0};
|
||||||
counter nrRetries{0};
|
counter nrRetries{0};
|
||||||
counter maxNrRetries{0};
|
counter maxNrRetries{0};
|
||||||
|
counter totalStepTime{0}; // total time for steps, including closure copying
|
||||||
|
counter totalStepBuildTime{0}; // total build time for steps
|
||||||
counter nrQueueWakeups{0};
|
counter nrQueueWakeups{0};
|
||||||
counter nrDispatcherWakeups{0};
|
counter nrDispatcherWakeups{0};
|
||||||
|
|
||||||
|
@ -1040,7 +1042,7 @@ bool State::doBuildStep(std::shared_ptr<StoreAPI> store, Step::ptr step,
|
||||||
possibility, we retry this step (putting it back in
|
possibility, we retry this step (putting it back in
|
||||||
the runnable queue). If there are really no strong
|
the runnable queue). If there are really no strong
|
||||||
pointers to the step, it will be deleted. */
|
pointers to the step, it will be deleted. */
|
||||||
printMsg(lvlInfo, format("cancelling build step ‘%1%’") % step->drvPath);
|
printMsg(lvlInfo, format("maybe cancelling build step ‘%1%’") % step->drvPath);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1059,7 +1061,7 @@ bool State::doBuildStep(std::shared_ptr<StoreAPI> store, Step::ptr step,
|
||||||
BuildResult res;
|
BuildResult res;
|
||||||
int stepNr = 0;
|
int stepNr = 0;
|
||||||
|
|
||||||
result.startTime = time(0);
|
time_t stepStartTime = result.startTime = time(0);
|
||||||
|
|
||||||
/* If any of the outputs have previously failed, then don't bother
|
/* If any of the outputs have previously failed, then don't bother
|
||||||
building again. */
|
building again. */
|
||||||
|
@ -1091,7 +1093,8 @@ bool State::doBuildStep(std::shared_ptr<StoreAPI> store, Step::ptr step,
|
||||||
if (result.status == RemoteResult::rrSuccess) res = getBuildResult(store, step->drv);
|
if (result.status == RemoteResult::rrSuccess) res = getBuildResult(store, step->drv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result.stopTime) result.stopTime = time(0);
|
time_t stepStopTime = time(0);
|
||||||
|
if (!result.stopTime) result.stopTime = stepStopTime;
|
||||||
|
|
||||||
/* Asynchronously compress the log. */
|
/* Asynchronously compress the log. */
|
||||||
if (result.logFile != "") {
|
if (result.logFile != "") {
|
||||||
|
@ -1151,7 +1154,6 @@ bool State::doBuildStep(std::shared_ptr<StoreAPI> store, Step::ptr step,
|
||||||
meantime or be added afterwards. */
|
meantime or be added afterwards. */
|
||||||
if (direct.empty()) {
|
if (direct.empty()) {
|
||||||
printMsg(lvlDebug, format("finishing build step ‘%1%’") % step->drvPath);
|
printMsg(lvlDebug, format("finishing build step ‘%1%’") % step->drvPath);
|
||||||
nrStepsDone++;
|
|
||||||
steps_->erase(step->drvPath);
|
steps_->erase(step->drvPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1222,7 +1224,6 @@ bool State::doBuildStep(std::shared_ptr<StoreAPI> store, Step::ptr step,
|
||||||
if (indirect.empty()) {
|
if (indirect.empty()) {
|
||||||
for (auto & s : steps) {
|
for (auto & s : steps) {
|
||||||
printMsg(lvlDebug, format("finishing build step ‘%1%’") % step->drvPath);
|
printMsg(lvlDebug, format("finishing build step ‘%1%’") % step->drvPath);
|
||||||
nrStepsDone++;
|
|
||||||
steps_->erase(s->drvPath);
|
steps_->erase(s->drvPath);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1298,6 +1299,10 @@ bool State::doBuildStep(std::shared_ptr<StoreAPI> store, Step::ptr step,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nrStepsDone++;
|
||||||
|
totalStepTime += stepStopTime - stepStartTime;
|
||||||
|
totalStepBuildTime += result.stopTime - result.startTime;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1444,6 +1449,12 @@ void State::dumpStatus(Connection & conn, bool log)
|
||||||
root.attr("nrStepsDone", nrStepsDone);
|
root.attr("nrStepsDone", nrStepsDone);
|
||||||
root.attr("nrRetries", nrRetries);
|
root.attr("nrRetries", nrRetries);
|
||||||
root.attr("maxNrRetries", maxNrRetries);
|
root.attr("maxNrRetries", maxNrRetries);
|
||||||
|
root.attr("totalStepTime", totalStepTime);
|
||||||
|
root.attr("totalStepBuildTime", totalStepBuildTime);
|
||||||
|
if (nrStepsDone) {
|
||||||
|
root.attr("avgStepTime"); out << (float) totalStepTime / nrStepsDone;
|
||||||
|
root.attr("avgStepBuildTime"); out << (float) totalStepBuildTime / nrStepsDone;
|
||||||
|
}
|
||||||
root.attr("nrQueueWakeups", nrQueueWakeups);
|
root.attr("nrQueueWakeups", nrQueueWakeups);
|
||||||
root.attr("nrDispatcherWakeups", nrDispatcherWakeups);
|
root.attr("nrDispatcherWakeups", nrDispatcherWakeups);
|
||||||
root.attr("nrDbConnections", dbPool.count());
|
root.attr("nrDbConnections", dbPool.count());
|
||||||
|
|
Loading…
Reference in a new issue