From: ye <hua...@gm...> - 2010-04-08 13:03:43
|
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(); } |