Skip to content
Snippets Groups Projects
Commit 467c94f3 authored by Le Van Truong's avatar Le Van Truong
Browse files

Issue about infinity loop and Round Robin

parent d96cdfd1
No related branches found
No related tags found
2 merge requests!251Revert c7faf42b,!250Issue about infinity loop and Round Robin
...@@ -97,13 +97,7 @@ TMLTime RRScheduler::schedule(TMLTime iEndSchedule){ ...@@ -97,13 +97,7 @@ TMLTime RRScheduler::schedule(TMLTime iEndSchedule){
} }
} }
} }
if (aSourcePast==0){
_nextTransaction=(aSourceFuture==0)? 0 : aSourceFuture->getNextTransaction(iEndSchedule);
_lastSource=aSourceFuture;
}else{
_nextTransaction=aSourcePast->getNextTransaction(iEndSchedule);
_lastSource=aSourcePast;
}
if (aSameTaskFound){ if (aSameTaskFound){
//std::cout << _name << ": Same source found " << _lastSource->toString() << "\n"; //std::cout << _name << ": Same source found " << _lastSource->toString() << "\n";
//if (_nextTransaction!=anOldTransaction){ //if (_nextTransaction!=anOldTransaction){
...@@ -112,6 +106,28 @@ TMLTime RRScheduler::schedule(TMLTime iEndSchedule){ ...@@ -112,6 +106,28 @@ TMLTime RRScheduler::schedule(TMLTime iEndSchedule){
//_elapsedTime += anOldTransaction->getBranchingPenalty() + anOldTransaction->getOperationLength(); //_elapsedTime += anOldTransaction->getBranchingPenalty() + anOldTransaction->getOperationLength();
_elapsedTime += anOldTransaction->getOperationLength(); _elapsedTime += anOldTransaction->getOperationLength();
} }
for(WorkloadList::iterator i=_workloadList.begin(); i != _workloadList.end(); ++i){
(*i)->schedule(iEndSchedule);
//std::cout << _name << " schedules, before getCurrTransaction " << std::endl;
aTempTrans=(*i)->getNextTransaction(iEndSchedule);
//std::cout << "after getCurrTransaction " << std::endl;
if (aTempTrans!=0 && aTempTrans->getVirtualLength()!=0){
aRunnableTime=aTempTrans->getRunnableTime();
if (aRunnableTime<=iEndSchedule){
//Past
if (aRunnableTime<aLowestRunnableTimePast){
aLowestRunnableTimePast=aRunnableTime;
aSourcePast=*i;
}
}else{
//Future
if(aRunnableTime<aLowestRunnableTimeFuture){
aLowestRunnableTimeFuture=aRunnableTime;
aSourceFuture=*i;
}
}
}
}
//std::cout << "Not crashed\n" ; //std::cout << "Not crashed\n" ;
}else{ }else{
//if (_lastSource==0) //if (_lastSource==0)
...@@ -120,6 +136,13 @@ TMLTime RRScheduler::schedule(TMLTime iEndSchedule){ ...@@ -120,6 +136,13 @@ TMLTime RRScheduler::schedule(TMLTime iEndSchedule){
//std::cout << _name << ": New source found " << _lastSource->toString() << "\n"; //std::cout << _name << ": New source found " << _lastSource->toString() << "\n";
_elapsedTime=0; _elapsedTime=0;
} }
if (aSourcePast==0){
_nextTransaction=(aSourceFuture==0)? 0 : aSourceFuture->getNextTransaction(iEndSchedule);
_lastSource=aSourceFuture;
}else{
_nextTransaction=aSourcePast->getNextTransaction(iEndSchedule);
_lastSource=aSourcePast;
}
//if (_nextTransaction!=0){ //if (_nextTransaction!=0){
// _nextTransaction->setLength(min(_nextTransaction->getOperationLength(), _timeSlice-_elapsedTime)); // _nextTransaction->setLength(min(_nextTransaction->getOperationLength(), _timeSlice-_elapsedTime));
//} //}
......
...@@ -30,14 +30,14 @@ public class DiplodocusSimulatorTest extends AbstractUITest { ...@@ -30,14 +30,14 @@ public class DiplodocusSimulatorTest extends AbstractUITest {
//final String [] MODELS = {"scp"}; //final String [] MODELS = {"scp"};
final String [] MODELS = {"scp", "ssdf"}; final String [] MODELS = {"scp", "ssdf"};
final String DIR_GEN = "test_diplo_simulator/"; final String DIR_GEN = "test_diplo_simulator/";
final int [] NB_Of_STATES = {173, 1824}; final int [] NB_Of_STATES = {422, 1824};
final int [] NB_Of_TRANSTIONS = {172, 1823}; final int [] NB_Of_TRANSTIONS = {421, 1823};
final int [] MIN_CYCLES = {210, 4106}; final int [] MIN_CYCLES = {209, 4106};
final int [] MAX_CYCLES = {315, 4106}; final int [] MAX_CYCLES = {864, 4106};
//model for daemon task //model for daemon task
final String [] MODELS_DAEMON = {"daemontest1", "daemontest2"}; final String [] MODELS_DAEMON = {"daemontest1", "daemontest2"};
final int [] NB_Of_DAEMON_STATES = {12, 124}; final int [] NB_Of_DAEMON_STATES = {12, 114};
final int [] NB_Of_DAEMON_TRANSTIONS = {11, 123}; final int [] NB_Of_DAEMON_TRANSTIONS = {11, 113};
final int [] MIN_DAEMON_CYCLES = {181, 2743}; final int [] MIN_DAEMON_CYCLES = {181, 2743};
final int [] MAX_DAEMON_CYCLES = {181, 2743}; final int [] MAX_DAEMON_CYCLES = {181, 2743};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment