fixed merge

This commit is contained in:
2023-12-03 17:46:15 +03:00
4 changed files with 97 additions and 11 deletions

7
.idea/workspace.xml generated
View File

@@ -6,12 +6,7 @@
</artifacts-to-build> </artifacts-to-build>
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTests.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />

View File

@@ -7,15 +7,91 @@ using namespace std;
#include "CompilationSupervisor.h" #include "CompilationSupervisor.h"
#include "RunSupervisor.h" #include "RunSupervisor.h"
#include "Global.h" #include "Global.h"
#include <unistd.h>
#include <signal.h>
//https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB_(Unix)
void hdl(int sig)
{
String file_name = "GOT_SIGNAL_AT_"+String(Utils::getAbsoluteTime());
FILE * res = fopen(file_name.getCharArray(),"w");
fprintf(res,"%d\n", sig);
fclose(res);
}
void set_handlers(){
struct sigaction act;
memset(&act, 0, sizeof(act));
act.sa_handler = hdl;
sigset_t set;
sigemptyset(&set);
//---
sigaddset(&set, SIGABRT);
sigaddset(&set, SIGALRM);
sigaddset(&set, SIGBUS);
sigaddset(&set, SIGVTALRM);
sigaddset(&set, SIGFPE);
sigaddset(&set, SIGHUP);
sigaddset(&set, SIGILL);
sigaddset(&set, SIGINT);
sigaddset(&set, SIGPIPE);
sigaddset(&set, SIGQUIT);
sigaddset(&set, SIGSEGV);
sigaddset(&set, SIGTERM);
sigaddset(&set, SIGTSTP);
sigaddset(&set, SIGTTIN);
sigaddset(&set, SIGTTOU);
sigaddset(&set, SIGUSR1);
sigaddset(&set, SIGUSR2);
sigaddset(&set, SIGPOLL);
sigaddset(&set, SIGPROF);
sigaddset(&set, SIGSYS);
sigaddset(&set, SIGTRAP);
//sigaddset(&set, SIGURG);
//sigaddset(&set, SIGCHLD);
//sigaddset(&set, SIGCONT);
sigaddset(&set, SIGVTALRM);
sigaddset(&set, SIGXCPU);
sigaddset(&set, SIGXFSZ);
//---
act.sa_mask = set;
//---
sigaction(SIGABRT, &act, 0);
sigaction(SIGALRM, &act, 0);
sigaction(SIGBUS, &act, 0);
sigaction(SIGVTALRM, &act, 0);
sigaction(SIGFPE, &act, 0);
sigaction(SIGHUP, &act, 0);
sigaction(SIGILL, &act, 0);
sigaction(SIGINT, &act, 0);
sigaction(SIGPIPE, &act, 0);
sigaction(SIGQUIT, &act, 0);
sigaction(SIGSEGV, &act, 0);
sigaction(SIGTERM, &act, 0);
sigaction(SIGTSTP, &act, 0);
sigaction(SIGTTIN, &act, 0);
sigaction(SIGTTOU, &act, 0);
sigaction(SIGUSR1, &act, 0);
sigaction(SIGUSR2, &act, 0);
sigaction(SIGPOLL, &act, 0);
sigaction(SIGPROF, &act, 0);
sigaction(SIGSYS, &act, 0);
sigaction(SIGTRAP, &act, 0);
sigaction(SIGVTALRM, &act, 0);
sigaction(SIGXCPU, &act, 0);
sigaction(SIGXFSZ, &act, 0);
}
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
//+
set_handlers();
//-
userWorkspace = String(argv[1]); userWorkspace = String(argv[1]);
packageWorkspace = String(argv[2]); packageWorkspace = String(argv[2]);
maxKernels = atoi(argv[3]); maxKernels = atoi(argv[3]);
dvm_drv = String(argv[4]); dvm_drv = String(argv[4]);
//-- //--
freeKernels = maxKernels; freeKernels = maxKernels;
busyKernels= 0; busyKernels= 0;
//-- //--
@@ -27,8 +103,16 @@ int main(int argc, char ** argv)
userWorkspace.println(); userWorkspace.println();
packageWorkspace.println(); packageWorkspace.println();
printf("%d\n", maxKernels); printf("%d\n", maxKernels);
int pid = getpid();
printf("PID=%d\n", pid);
File pidFile("PID", String(pid));
pidFile.Close();
//---
File startFile("STARTED", "+");
startFile.Close();
//---
printf(">>>>\n");
CompilationSupervisor * compilationSupervisor = new CompilationSupervisor(); CompilationSupervisor * compilationSupervisor = new CompilationSupervisor();
printf("%ld\n", compilationSupervisor->getLength()); printf("%ld\n", compilationSupervisor->getLength());
compilationSupervisor->Do(); compilationSupervisor->Do();

View File

@@ -161,6 +161,7 @@ public:
map<int, queue<T*>, std::greater<int>> sortedByKernelNeeds; map<int, queue<T*>, std::greater<int>> sortedByKernelNeeds;
long activeTasks = 0; long activeTasks = 0;
long done = 0;
for (auto& task : this->getElements()) { for (auto& task : this->getElements()) {
if (task->getState() == WorkspaceReady) { if (task->getState() == WorkspaceReady) {
activeTasks++; activeTasks++;
@@ -175,6 +176,7 @@ public:
bool ignoreCheck = true; bool ignoreCheck = true;
while (activeTasks) { while (activeTasks) {
long oldActiveTasks = activeTasks;
vector<int> emptyKeys; vector<int> emptyKeys;
//ставим задачи от больших к меньшему по ядрам //ставим задачи от больших к меньшему по ядрам
@@ -215,6 +217,7 @@ public:
it++; it++;
activeTaskSet.erase(task); activeTaskSet.erase(task);
activeTasks--; activeTasks--;
done++;
busyKernels -= task->getKernels(); busyKernels -= task->getKernels();
printf(" done task with %d kernels and id %ld\n", task->getKernels(), task->getId()); printf(" done task with %d kernels and id %ld\n", task->getKernels(), task->getId());
@@ -222,6 +225,9 @@ public:
} }
it++; it++;
} }
if (oldActiveTasks != activeTasks)
printf("done %ld / %ld\n", done, this->getLength());
} }
changeState(); changeState();

View File

@@ -76,6 +76,7 @@ void set_handlers(){
} }
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
//+
set_handlers(); set_handlers();
//- //-
userWorkspace = String(argv[1]); userWorkspace = String(argv[1]);