Merge pull request 'fixed and improved' (#4) from planner_improve into main
Reviewed-on: http://alex-freenas.ddns.net:3000/M/VisualSapfor/pulls/4
This commit was merged in pull request #4.
This commit is contained in:
@@ -8,6 +8,7 @@ public:
|
||||
CompilationSupervisor() {
|
||||
this->init("compilationTasks", 4);
|
||||
}
|
||||
|
||||
CompilationTask* getTaskById(long task_id) {
|
||||
for (long i = 0; i < getLength(); ++i) {
|
||||
CompilationTask* task = get(i);
|
||||
@@ -16,7 +17,8 @@ public:
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
virtual String getStatePrefix() {
|
||||
|
||||
String getStatePrefix() override {
|
||||
return String("Compilation");
|
||||
}
|
||||
};
|
||||
@@ -19,7 +19,8 @@ public:
|
||||
task->printState().getCharArray());
|
||||
}
|
||||
}
|
||||
virtual String getStatePrefix() {
|
||||
|
||||
String getStatePrefix() override {
|
||||
return String("Running");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -11,7 +11,7 @@ class RunTask : public Task {
|
||||
String args;
|
||||
CompilationTask* parent;
|
||||
public:
|
||||
virtual void print() const {
|
||||
void print() const override {
|
||||
printf("id=%ld; maxtime=%d; testcompilationtask_id=%ld; matrix=%s; environments=%s; usr_par=%s; args=%s kernels=%d\n",
|
||||
id,
|
||||
maxtime,
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
setKernels(lines->get(offset + 7));
|
||||
}
|
||||
|
||||
virtual String getLaunchScriptText() {
|
||||
String getLaunchScriptText() override {
|
||||
String modules = userWorkspace + "/modules";
|
||||
String starterCall = modules + "/starter";
|
||||
String launcherCall = modules + "/launcher";
|
||||
@@ -77,7 +77,8 @@ public:
|
||||
String::DQuotes("killall -SIGKILL " + binary_name) + " " +
|
||||
dvm_start;
|
||||
}
|
||||
virtual void prepareWorkspace() {
|
||||
|
||||
void prepareWorkspace() override {
|
||||
String binary_src = parent->getWorkspace() + "/0";
|
||||
String binary_dst = workspace + "/" + binary_name;
|
||||
Utils::Copy(binary_src, binary_dst);
|
||||
@@ -86,14 +87,16 @@ public:
|
||||
File parFile = File(parPath, usr_par);
|
||||
}
|
||||
}
|
||||
virtual String getStartCommand() {
|
||||
|
||||
String getStartCommand() override {
|
||||
String res = workspace + "/run";
|
||||
if (!environments.isEmpty())
|
||||
res = environments + " " + res;
|
||||
printf("START %ld: %s\n", id, res.getCharArray());
|
||||
return res;
|
||||
}
|
||||
virtual String copyResults(const String& pathRes) {
|
||||
|
||||
String copyResults(const String& pathRes) override {
|
||||
String resultPath = Task::copyResults(pathRes);
|
||||
if (Utils::Exists(workspace + "/sts.gz+")) {
|
||||
String stsPath(resultPath + "/statistic.txt");
|
||||
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
const char* getCharArray() const { return body.c_str(); }
|
||||
const string& getBody() const { return body; }
|
||||
size_t getLength() const { return body.size(); }
|
||||
bool isEmpty() const { return body.size() != 0; }
|
||||
bool isEmpty() const { return body.size() == 0; }
|
||||
bool contains(const String& s) const { return body.find(s.getBody()) != string::npos; }
|
||||
bool operator==(const String& s) const { return body == s.getBody(); }
|
||||
|
||||
|
||||
@@ -124,9 +124,13 @@ public:
|
||||
Utils::Mkdir(pathRes);
|
||||
string buf;
|
||||
|
||||
vector<int> emptyKeys;
|
||||
vector<T*> toDel;
|
||||
|
||||
while (activeTasks) {
|
||||
long oldActiveTasks = activeTasks;
|
||||
vector<int> emptyKeys;
|
||||
emptyKeys.clear();
|
||||
toDel.clear();
|
||||
|
||||
//ставим задачи от больших к меньшему по ядрам
|
||||
for (auto& elem : sortedByKernelNeeds) {
|
||||
@@ -157,7 +161,6 @@ public:
|
||||
for (auto& empty : emptyKeys)
|
||||
sortedByKernelNeeds.erase(empty);
|
||||
|
||||
vector<T*> toDel;
|
||||
// проверяем нет ли завершившихся задач
|
||||
for (auto& task : activeTaskSet)
|
||||
{
|
||||
@@ -173,6 +176,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
// очищаем завершенные задачи
|
||||
for (auto& del : toDel)
|
||||
activeTaskSet.erase(del);
|
||||
|
||||
|
||||
@@ -42,8 +42,12 @@ public:
|
||||
|
||||
//https://stackoverflow.com/questions/230062/whats-the-best-way-to-check-if-a-file-exists-in-c
|
||||
static bool Exists(const String& path) {
|
||||
#if __cplusplus >= 201703L
|
||||
return std::filesystem::exists(path.getCharArray());
|
||||
#else
|
||||
struct stat buffer;
|
||||
return (stat(path.getCharArray(), &buffer) == 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
//in seconds
|
||||
|
||||
Reference in New Issue
Block a user