Hi Dear all,
This is a recent problem that I didn't notice before. I m running Grid5000
grid archive data (1% load of original submitted jobs) on my simulation,
which means I have more than 10'000 jobs scheduled by my scheduler and
submitted to 26 simulated resources. So far, the simulation can finish in
reasonable time. (I am still working on GridSim 4.1)
Now, I wanna increase the job load by simply increasing job estimated time
(because it seems increasing job amount consumes a lot memory in my case),
then the job size can be enlarged due to: jobSize = Math.round(estimatedSec
* estimatedMachine);
However, when I increase the estimate time of each job from 1000 to 100'000,
the simulation took rather a long time to get finished. Is that normal in
GridSim? There is no events happening in my meta-scheduler but the gridsim
simulation-clock still ticks.
----
The following is a simple demonstration of the code, each node(cluster)
meta-scheduler has a class "S" extended from GridSim to deal with
scheduling, job submission and job return events in its "run()" method.
In the following code, the LOOP "while (Sim_system.running())" is seldom
visited but the simulation is somehow suspending. Is it waiting for
information from GridResource to get the job done? Is it the reason why
large job size takes more execution time because the GridResource needs more
time to get the job done? I thought it should not matter.
Help is highly appreciated!
Best Regards,
Ye
-----
public void body() {
// some work to prepare resource
// The loop to handler gridsim events
while (Sim_system.running()) {
// scheduler approach
super.sim_get_next(ev);
if (ev.get_tag() == Message.JobToMatchMaker) {
continue;
}
...
if (ev.get_tag() == Message.ScheduleMadeByMatchMaker) {
Job receivedJob = (Job) getData;
// get target resource ID
resourceID = ....
super.send(resourceID, 0.0, GridSimTags.GRIDLET_SUBMIT,
receivedJob);
continue;
}
if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){
this.onJobReturnFromResource(ev.get_data());
continue;
}
// ye: if the simulation finishes then exit the loop
if (ev.get_tag() == GridSimTags.END_OF_SIMULATION) {
// if a continuous envrionment, the simulation may never be
halted.
break;
}
}
this.terminateMaGate();
// CHECK for ANY INTERNAL EVENTS WAITING TO BE PROCESSED
while (super.sim_waiting() > 0) {
// wait for event
super.sim_get_next(ev);
log.warn("unexpected internal events received.");
}
// system monitoring
this.maGateMonitor.routineCheck();
}
|