From: Jeyarani R. <sym...@gm...> - 2009-02-09 17:09:11
|
Hi Friends, I am using GridSim4.0 and I have created new internal policy instead of FCFS. I get the following error. Please help me to correct the problem JR I have submitted 4 gridlets and the fourth gridlet is small compared to rest. Sim_system: No more future events Gathering simulation data. GridResource_0: Warning - Gridlet #3 owned by User_0 is already completed/finish ed.Exception in thread "Thread-9" java.lang.NullPointerExceptionTherefore, it is not being executed again at Example8.body(Example8.java:107) at eduni.simjava.Sim_entity.run(Sim_entity.java:603) |
From: ye h. <hua...@gm...> - 2009-02-09 23:42:37
|
Hi, Actually, I think the problem also exists upon gridsim itself (or i haven't understood it well so far). I encountered a similar problem by extend the Example code of gridsim itself, which i had also submitted to the maillist. Unfortunately, no one replied that last time. The following is the details: --- ---- [start] -------------- However, I find another confusing "bug", it's about the way of receiving gridlet sent back from resources. Here i am going to explain it using a demo from GridSim's official example file: Example 04: Starting from line 109 of Example 04, submitting and receiving gridlets are finished in one loop as follows: --- code snippet 1 --- for (int i = 0; i < this.list_.size(); i++) { gridlet = (Gridlet) this.list_.get(i); info = "Gridlet_" + gridlet.getGridletID(); super.gridletSubmit(gridlet, resourceID); gridlet = super.gridletReceive(); this.receiveList_.add(gridlet); } In my scenario, in order the decouple the behavior, I split the procedure into two parts as follows: --- code snippet 2 --- // part 1: submit gridlet for (int i = 0; i < this.list_.size(); i++) { gridlet = (Gridlet) this.list_.get(i); info = "Gridlet_" + gridlet.getGridletID(); super.send(resourceID, GridSimTags.SCHEDULE_NOW, GridSimTags.GRIDLET_SUBMIT, gridlet); } // part 2: receive gridlet from gridresource Sim_event ev = new Sim_event(); while (Sim_system.running()) { super.sim_get_next(ev); if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ gridlet = (Gridlet) ev.get_data(); // stores the received Gridlet into a new GridletList object this.receiveList_.add(gridlet); } } // part 3, print the received gridlet list printGridletList(this.receiveList_); --- Then, during the execution, I got the prompted warning : Resource_0: Warning - Gridlet #2 owned by Example4 is already completed/finished. The more gridlets were submitted, the more warning will be prompted. I have to say, it seems there is no mistake caused by this warning. But to understand the infrastructure better, is there anyone could help me about why it appears and how to avoid it? --- ---- [end] -------------- Regards ye On 9 Feb, 2009, at 6:09 PM, Jeyarani Rajarathinam wrote: > Hi Friends, > I am using GridSim4.0 and I have created new internal policy > instead > of FCFS. I get the following error. Please help me to correct the > problem > > JR > I have submitted 4 gridlets and the fourth gridlet is small > compared to > rest. > > Sim_system: No more future events > Gathering simulation data. > GridResource_0: Warning - Gridlet #3 owned by User_0 is already > completed/finish > ed.Exception in thread "Thread-9" > java.lang.NullPointerExceptionTherefore, it is not being executed > again > > at Example8.body(Example8.java:107) > > at eduni.simjava.Sim_entity.run(Sim_entity.java:603) > ------------------------------------------------------------------------------ > Create and Deploy Rich Internet Apps outside the browser with > Adobe(R)AIR(TM) > software. With Adobe AIR, Ajax developers can use existing skills > and code to > build responsive, highly engaging applications that combine the > power of local > resources and data with the reach of the web. Download the Adobe AIR > SDK and > Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com > _______________________________________________ > Gridsim-developers mailing list > Gri...@li... > https://lists.sourceforge.net/lists/listinfo/gridsim-developers -- Ye Huang, Department of Informatics University of Fribourg / Pérolles 2 - Bld de Pérolles 90 1700 Fribourg, Switzerland e-mail: ye....@he..., ye....@un... http://diuf.unifr.ch/people/huangy/ Office: +41 26 429 65 95 |
From: Marcos D. de A. <ma...@cs...> - 2009-02-14 03:36:28
|
Dear Ye, The snippets of code seem ok. Please make sure that you are shutting down the user entities and have provided the correct number of users in the initialisation of GridSim. If that does not work, I am just wondering if you could provide us with more details about the code? Regards, Marcos On 10/02/2009, at 8:40 AM, ye huang wrote: > Hi, > Actually, I think the problem also exists upon gridsim itself (or i > haven't understood it well so far). > > I encountered a similar problem by extend the Example code of > gridsim itself, which i had also submitted to the maillist. > Unfortunately, no one replied that last time. The following is the > details: > > --- ---- [start] -------------- > However, I find another confusing "bug", it's about the way of > receiving gridlet sent back from resources. Here i am going to > explain it using a demo from GridSim's official example file: > Example 04: > > Starting from line 109 of Example 04, submitting and receiving > gridlets are finished in one loop as follows: > --- code snippet 1 --- > > for (int i = 0; i < this.list_.size(); i++) > { > gridlet = (Gridlet) this.list_.get(i); > info = "Gridlet_" + gridlet.getGridletID(); > > super.gridletSubmit(gridlet, resourceID); > > gridlet = super.gridletReceive(); > this.receiveList_.add(gridlet); > } > > In my scenario, in order the decouple the behavior, I split the > procedure into two parts as follows: > > --- code snippet 2 --- > > // part 1: submit gridlet > for (int i = 0; i < this.list_.size(); i++) > { > gridlet = (Gridlet) this.list_.get(i); > info = "Gridlet_" + gridlet.getGridletID(); > > super.send(resourceID, GridSimTags.SCHEDULE_NOW, > GridSimTags.GRIDLET_SUBMIT, gridlet); > > } > > // part 2: receive gridlet from gridresource > Sim_event ev = new Sim_event(); > while (Sim_system.running()) { > super.sim_get_next(ev); > > if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ > gridlet = (Gridlet) ev.get_data(); > > // stores the received Gridlet into a new GridletList object > this.receiveList_.add(gridlet); > } > > } > > // part 3, print the received gridlet list > printGridletList(this.receiveList_); > > --- > > Then, during the execution, I got the prompted warning : > Resource_0: Warning - Gridlet #2 owned by Example4 is already > completed/finished. > > The more gridlets were submitted, the more warning will be prompted. > > I have to say, it seems there is no mistake caused by this warning. > But to understand the infrastructure better, is there anyone could > help me about why it appears and how to avoid it? > > --- ---- [end] -------------- > > Regards > ye > > > On 9 Feb, 2009, at 6:09 PM, Jeyarani Rajarathinam wrote: > >> Hi Friends, >> I am using GridSim4.0 and I have created new internal policy >> instead >> of FCFS. I get the following error. Please help me to correct the >> problem >> >> JR >> I have submitted 4 gridlets and the fourth gridlet is small >> compared to >> rest. >> >> Sim_system: No more future events >> Gathering simulation data. >> GridResource_0: Warning - Gridlet #3 owned by User_0 is already >> completed/finish >> ed.Exception in thread "Thread-9" >> java.lang.NullPointerExceptionTherefore, it is not being executed >> again >> >> at Example8.body(Example8.java:107) >> >> at eduni.simjava.Sim_entity.run(Sim_entity.java:603) >> --------------------------------------------------------------------- >> --------- >> Create and Deploy Rich Internet Apps outside the browser with Adobe >> (R)AIR(TM) >> software. With Adobe AIR, Ajax developers can use existing skills >> and code to >> build responsive, highly engaging applications that combine the >> power of local >> resources and data with the reach of the web. Download the Adobe >> AIR SDK and >> Ajax docs to start building applications today-http://p.sf.net/sfu/ >> adobe-com >> _______________________________________________ >> Gridsim-developers mailing list >> Gri...@li... >> https://lists.sourceforge.net/lists/listinfo/gridsim-developers > > > -- > > Ye Huang, Department of Informatics > University of Fribourg / Pérolles 2 - Bld de Pérolles 90 > 1700 Fribourg, Switzerland > > e-mail: ye....@he..., ye....@un... > http://diuf.unifr.ch/people/huangy/ > Office: +41 26 429 65 95 > > > > > ---------------------------------------------------------------------- > -------- > Create and Deploy Rich Internet Apps outside the browser with Adobe > (R)AIR(TM) > software. With Adobe AIR, Ajax developers can use existing skills > and code to > build responsive, highly engaging applications that combine the > power of local > resources and data with the reach of the web. Download the Adobe > AIR SDK and > Ajax docs to start building applications today-http://p.sf.net/sfu/ > adobe-com_______________________________________________ > Gridsim-users mailing list > Gri...@li... > https://lists.sourceforge.net/lists/listinfo/gridsim-users Marcos Dias de Assuncao Grid Computing and Distributed Systems (GRIDS) Laboratory Department of Computer Science and Software Engineering The University of Melbourne, Australia Email: ma...@cs... ------------- "It is well enough that people of the nation do not understand our banking and monetary system, for if they did, I believe there would be a revolution before tomorrow morning." Henry Ford |
From: Marcos D. de A. <ma...@cs...> - 2009-02-14 03:43:39
|
Dear Jeyarani, please note that as the entities in a simulation are threads, sometimes you get an error message that is not very related to what is actually causing the problem. So, it is difficult to say what might be causing the problem in your case. Please check if in the policy you implemented you are setting the status of the gridlets properly before returning them to the user entity. Also, check if the user entity waits for the return of the gridlets before shutting the simulation down. Regards, Marcos On 10/02/2009, at 4:09 AM, Jeyarani Rajarathinam wrote: > Hi Friends, > I am using GridSim4.0 and I have created new internal policy > instead of FCFS. I get the following error. Please help me to > correct the problem > > JR > I have submitted 4 gridlets and the fourth gridlet is small > compared to rest. > > Sim_system: No more future events > Gathering simulation data. > GridResource_0: Warning - Gridlet #3 owned by User_0 is already > completed/finish > ed.Exception in thread "Thread-9" > java.lang.NullPointerExceptionTherefore, it is not being executed > again > > at Example8.body(Example8.java:107) > > at eduni.simjava.Sim_entity.run(Sim_entity.java:603) > ---------------------------------------------------------------------- > -------- > Create and Deploy Rich Internet Apps outside the browser with Adobe > (R)AIR(TM) > software. With Adobe AIR, Ajax developers can use existing skills > and code to > build responsive, highly engaging applications that combine the > power of local > resources and data with the reach of the web. Download the Adobe > AIR SDK and > Ajax docs to start building applications today-http://p.sf.net/sfu/ > adobe-com_______________________________________________ > Gridsim-users mailing list > Gri...@li... > https://lists.sourceforge.net/lists/listinfo/gridsim-users Marcos Dias de Assuncao Grid Computing and Distributed Systems (GRIDS) Laboratory Department of Computer Science and Software Engineering The University of Melbourne, Australia Email: ma...@cs... ------------- "It is well enough that people of the nation do not understand our banking and monetary system, for if they did, I believe there would be a revolution before tomorrow morning." Henry Ford |
From: ye h. <hua...@gm...> - 2009-02-14 09:38:57
|
Hi, Marcos: Thanks for reply! Since I am using Example04 from Grdisim sample package to demonstrate the issue. It seems that the number of users in the initialization is remained the same. I attached the file with the mail. For simple, actually it's just one class without much modification from Example04. Hope it helps! Regards ye On 14 Feb, 2009, at 4:35 AM, Marcos Dias de Assuncao wrote: > > Dear Ye, > > The snippets of code seem ok. Please make sure that you are shutting > down the user entities and have provided the correct number of users > in the initialisation of GridSim. > > If that does not work, I am just wondering if you could provide us > with more details about the code? > > Regards, > > Marcos > > > On 10/02/2009, at 8:40 AM, ye huang wrote: > >> Hi, >> Actually, I think the problem also exists upon gridsim itself (or i >> haven't understood it well so far). >> >> I encountered a similar problem by extend the Example code of >> gridsim itself, which i had also submitted to the maillist. >> Unfortunately, no one replied that last time. The following is the >> details: >> >> --- ---- [start] -------------- >> However, I find another confusing "bug", it's about the way of >> receiving gridlet sent back from resources. Here i am going to >> explain it using a demo from GridSim's official example file: >> Example 04: >> >> Starting from line 109 of Example 04, submitting and receiving >> gridlets are finished in one loop as follows: >> --- code snippet 1 --- >> >> for (int i = 0; i < this.list_.size(); i++) >> { >> gridlet = (Gridlet) this.list_.get(i); >> info = "Gridlet_" + gridlet.getGridletID(); >> >> super.gridletSubmit(gridlet, resourceID); >> >> gridlet = super.gridletReceive(); >> this.receiveList_.add(gridlet); >> } >> >> In my scenario, in order the decouple the behavior, I split the >> procedure into two parts as follows: >> >> --- code snippet 2 --- >> >> // part 1: submit gridlet >> for (int i = 0; i < this.list_.size(); i++) >> { >> gridlet = (Gridlet) this.list_.get(i); >> info = "Gridlet_" + gridlet.getGridletID(); >> >> super.send(resourceID, GridSimTags.SCHEDULE_NOW, >> GridSimTags.GRIDLET_SUBMIT, gridlet); >> >> } >> >> // part 2: receive gridlet from gridresource >> Sim_event ev = new Sim_event(); >> while (Sim_system.running()) { >> super.sim_get_next(ev); >> >> if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ >> gridlet = (Gridlet) ev.get_data(); >> >> // stores the received Gridlet into a new GridletList object >> this.receiveList_.add(gridlet); >> } >> >> } >> >> // part 3, print the received gridlet list >> printGridletList(this.receiveList_); >> >> --- >> >> Then, during the execution, I got the prompted warning : >> Resource_0: Warning - Gridlet #2 owned by Example4 is already >> completed/finished. >> >> The more gridlets were submitted, the more warning will be prompted. >> >> I have to say, it seems there is no mistake caused by this warning. >> But to understand the infrastructure better, is there anyone could >> help me about why it appears and how to avoid it? >> >> --- ---- [end] -------------- >> >> Regards >> ye >> >> >> On 9 Feb, 2009, at 6:09 PM, Jeyarani Rajarathinam wrote: >> >>> Hi Friends, >>> I am using GridSim4.0 and I have created new internal policy >>> instead >>> of FCFS. I get the following error. Please help me to correct the >>> problem >>> >>> JR >>> I have submitted 4 gridlets and the fourth gridlet is small >>> compared to >>> rest. >>> >>> Sim_system: No more future events >>> Gathering simulation data. >>> GridResource_0: Warning - Gridlet #3 owned by User_0 is already >>> completed/finish >>> ed.Exception in thread "Thread-9" >>> java.lang.NullPointerExceptionTherefore, it is not being executed >>> again >>> >>> at Example8.body(Example8.java:107) >>> >>> at eduni.simjava.Sim_entity.run(Sim_entity.java:603) >>> ------------------------------------------------------------------------------ >>> Create and Deploy Rich Internet Apps outside the browser with >>> Adobe(R)AIR(TM) >>> software. With Adobe AIR, Ajax developers can use existing skills >>> and code to >>> build responsive, highly engaging applications that combine the >>> power of local >>> resources and data with the reach of the web. Download the Adobe >>> AIR SDK and >>> Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com >>> _______________________________________________ >>> Gridsim-developers mailing list >>> Gri...@li... >>> https://lists.sourceforge.net/lists/listinfo/gridsim-developers >> >> >> -- >> >> Ye Huang, Department of Informatics >> University of Fribourg / Pérolles 2 - Bld de Pérolles 90 >> 1700 Fribourg, Switzerland >> >> e-mail: ye....@he..., ye....@un... >> http://diuf.unifr.ch/people/huangy/ >> Office: +41 26 429 65 95 >> >> >> >> >> ------------------------------------------------------------------------------ >> Create and Deploy Rich Internet Apps outside the browser with >> Adobe(R)AIR(TM) >> software. With Adobe AIR, Ajax developers can use existing skills >> and code to >> build responsive, highly engaging applications that combine the >> power of local >> resources and data with the reach of the web. Download the Adobe >> AIR SDK and >> Ajax docs to start building applications today-http://p.sf.net/sfu/adobe-com_______________________________________________ >> Gridsim-users mailing list >> Gri...@li... >> https://lists.sourceforge.net/lists/listinfo/gridsim-users > > Marcos Dias de Assuncao > Grid Computing and Distributed Systems (GRIDS) Laboratory > Department of Computer Science and Software Engineering > The University of Melbourne, Australia > Email: ma...@cs... > > ------------- > "It is well enough that people of the nation do not understand our > banking and monetary system, for if they did, I believe there would > be a revolution before tomorrow morning." > > Henry Ford > -- Ye Huang, Department of Informatics University of Fribourg / Pérolles 2 - Bld de Pérolles 90 1700 Fribourg, Switzerland e-mail: ye....@he..., ye....@un... http://diuf.unifr.ch/people/huangy/ Office: +41 26 429 65 95 |
From: Marcos D. de A. <ma...@cs...> - 2009-02-15 23:10:41
|
Hi Ye, I am sorry, but I didn't receive any attachment. Cheers, Marcos On 14/02/2009, at 8:38 PM, ye huang wrote: > Hi, Marcos: > Thanks for reply! Since I am using Example04 from Grdisim sample > package to demonstrate the issue. It seems that the number of users in > the initialization is remained the same. > > I attached the file with the mail. For simple, actually it's just one > class without much modification from Example04. Hope it helps! > > Regards > ye > > > > On 14 Feb, 2009, at 4:35 AM, Marcos Dias de Assuncao wrote: > >> >> Dear Ye, >> >> The snippets of code seem ok. Please make sure that you are shutting >> down the user entities and have provided the correct number of users >> in the initialisation of GridSim. >> >> If that does not work, I am just wondering if you could provide us >> with more details about the code? >> >> Regards, >> >> Marcos >> >> >> On 10/02/2009, at 8:40 AM, ye huang wrote: >> >>> Hi, >>> Actually, I think the problem also exists upon gridsim itself (or i >>> haven't understood it well so far). >>> >>> I encountered a similar problem by extend the Example code of >>> gridsim itself, which i had also submitted to the maillist. >>> Unfortunately, no one replied that last time. The following is the >>> details: >>> >>> --- ---- [start] -------------- >>> However, I find another confusing "bug", it's about the way of >>> receiving gridlet sent back from resources. Here i am going to >>> explain it using a demo from GridSim's official example file: >>> Example 04: >>> >>> Starting from line 109 of Example 04, submitting and receiving >>> gridlets are finished in one loop as follows: >>> --- code snippet 1 --- >>> >>> for (int i = 0; i < this.list_.size(); i++) >>> { >>> gridlet = (Gridlet) this.list_.get(i); >>> info = "Gridlet_" + gridlet.getGridletID(); >>> >>> super.gridletSubmit(gridlet, resourceID); >>> >>> gridlet = super.gridletReceive(); >>> this.receiveList_.add(gridlet); >>> } >>> >>> In my scenario, in order the decouple the behavior, I split the >>> procedure into two parts as follows: >>> >>> --- code snippet 2 --- >>> >>> // part 1: submit gridlet >>> for (int i = 0; i < this.list_.size(); i++) >>> { >>> gridlet = (Gridlet) this.list_.get(i); >>> info = "Gridlet_" + gridlet.getGridletID(); >>> >>> super.send(resourceID, GridSimTags.SCHEDULE_NOW, >>> GridSimTags.GRIDLET_SUBMIT, gridlet); >>> >>> } >>> >>> // part 2: receive gridlet from gridresource >>> Sim_event ev = new Sim_event(); >>> while (Sim_system.running()) { >>> super.sim_get_next(ev); >>> >>> if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ >>> gridlet = (Gridlet) ev.get_data(); >>> >>> // stores the received Gridlet into a new GridletList object >>> this.receiveList_.add(gridlet); >>> } >>> >>> } >>> >>> // part 3, print the received gridlet list >>> printGridletList(this.receiveList_); >>> >>> --- >>> >>> Then, during the execution, I got the prompted warning : >>> Resource_0: Warning - Gridlet #2 owned by Example4 is already >>> completed/finished. >>> >>> The more gridlets were submitted, the more warning will be prompted. >>> >>> I have to say, it seems there is no mistake caused by this warning. >>> But to understand the infrastructure better, is there anyone could >>> help me about why it appears and how to avoid it? >>> >>> --- ---- [end] -------------- >>> >>> Regards >>> ye >>> >>> >>> On 9 Feb, 2009, at 6:09 PM, Jeyarani Rajarathinam wrote: >>> >>>> Hi Friends, >>>> I am using GridSim4.0 and I have created new internal policy >>>> instead >>>> of FCFS. I get the following error. Please help me to correct the >>>> problem >>>> >>>> JR >>>> I have submitted 4 gridlets and the fourth gridlet is small >>>> compared to >>>> rest. >>>> >>>> Sim_system: No more future events >>>> Gathering simulation data. >>>> GridResource_0: Warning - Gridlet #3 owned by User_0 is already >>>> completed/finish >>>> ed.Exception in thread "Thread-9" >>>> java.lang.NullPointerExceptionTherefore, it is not being executed >>>> again >>>> >>>> at Example8.body(Example8.java:107) >>>> >>>> at eduni.simjava.Sim_entity.run(Sim_entity.java:603) >>>> ------------------------------------------------------------------- >>>> ----------- >>>> Create and Deploy Rich Internet Apps outside the browser with >>>> Adobe(R)AIR(TM) >>>> software. With Adobe AIR, Ajax developers can use existing skills >>>> and code to >>>> build responsive, highly engaging applications that combine the >>>> power of local >>>> resources and data with the reach of the web. Download the Adobe >>>> AIR SDK and >>>> Ajax docs to start building applications today-http://p.sf.net/ >>>> sfu/adobe-com >>>> _______________________________________________ >>>> Gridsim-developers mailing list >>>> Gri...@li... >>>> https://lists.sourceforge.net/lists/listinfo/gridsim-developers >>> >>> >>> -- >>> >>> Ye Huang, Department of Informatics >>> University of Fribourg / Pérolles 2 - Bld de Pérolles 90 >>> 1700 Fribourg, Switzerland >>> >>> e-mail: ye....@he..., ye....@un... >>> http://diuf.unifr.ch/people/huangy/ >>> Office: +41 26 429 65 95 >>> >>> >>> >>> >>> -------------------------------------------------------------------- >>> ---------- >>> Create and Deploy Rich Internet Apps outside the browser with >>> Adobe(R)AIR(TM) >>> software. With Adobe AIR, Ajax developers can use existing skills >>> and code to >>> build responsive, highly engaging applications that combine the >>> power of local >>> resources and data with the reach of the web. Download the Adobe >>> AIR SDK and >>> Ajax docs to start building applications today-http://p.sf.net/ >>> sfu/adobe-com_______________________________________________ >>> Gridsim-users mailing list >>> Gri...@li... >>> https://lists.sourceforge.net/lists/listinfo/gridsim-users >> >> Marcos Dias de Assuncao >> Grid Computing and Distributed Systems (GRIDS) Laboratory >> Department of Computer Science and Software Engineering >> The University of Melbourne, Australia >> Email: ma...@cs... >> >> ------------- >> "It is well enough that people of the nation do not understand our >> banking and monetary system, for if they did, I believe there would >> be a revolution before tomorrow morning." >> >> Henry Ford >> > > > -- > > Ye Huang, Department of Informatics > University of Fribourg / Pérolles 2 - Bld de Pérolles 90 > 1700 Fribourg, Switzerland > > e-mail: ye....@he..., ye....@un... > http://diuf.unifr.ch/people/huangy/ > Office: +41 26 429 65 95 > > > > > ---------------------------------------------------------------------- > -------- > Open Source Business Conference (OSBC), March 24-25, 2009, San > Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the > Enterprise > -Strategies to boost innovation and cut costs with open source > participation > -Receive a $600 discount off the registration fee with the source > code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Gridsim-developers mailing list > Gri...@li... > https://lists.sourceforge.net/lists/listinfo/gridsim-developers Marcos Dias de Assuncao Grid Computing and Distributed Systems (GRIDS) Laboratory Department of Computer Science and Software Engineering The University of Melbourne, Australia Email: ma...@cs... ------------- "It is well enough that people of the nation do not understand our banking and monetary system, for if they did, I believe there would be a revolution before tomorrow morning." Henry Ford |
From: ye <hua...@gm...> - 2009-02-16 08:40:54
Attachments:
Example041.java
|
Hi, Marcos: That's wired... Anyway, let me try the attachment again, together with the original code pasted. Hope it works! Regards ye On Mon, Feb 16, 2009 at 12:09 AM, Marcos Dias de Assuncao < ma...@cs...> wrote: > > Hi Ye, > > I am sorry, but I didn't receive any attachment. > > Cheers, > > Marcos > > > --- --- --- --- --- package Example04; /* * Author Anthony Sulistio * Date: April 2003 * Description: A simple program to demonstrate of how to use GridSim package. * This example shows how a grid user submits its Gridlets or * tasks to one grid resource entity. * * NOTE: The values used from this example are taken from the GridSim paper. * http://www.gridbus.org/gridsim/ * $Id: Example4.java,v 1.10 2005/09/19 06:04:21 anthony Exp $ */ import java.util.*; import eduni.simjava.Sim_event; import eduni.simjava.Sim_system; import gridsim.*; /** * Example4 class creates Gridlets and sends them to a grid resource entity */ class Example041 extends GridSim { private Integer ID_; private String name_; private GridletList list_; private GridletList receiveList_; /** * Allocates a new Example4 object * @param name the Entity name of this object * @param baud_rate the communication speed * @throws Exception This happens when creating this entity before * initializing GridSim package or the entity name is * <tt>null</tt> or empty * @see gridsim.GridSim#Init(int, Calendar, boolean, String[], String[], * String) */ Example041(String name, double baud_rate) throws Exception { super(name, baud_rate); this.name_ = name; this.receiveList_ = new GridletList(); // Gets an ID for this entity this.ID_ = new Integer( getEntityId(name) ); System.out.println("Creating a grid user entity with name = " + name + ", and id = " + this.ID_); // Creates a list of Gridlets or Tasks for this grid user this.list_ = createGridlet( this.ID_.intValue() ); System.out.println("Creating " + this.list_.size() + " Gridlets"); } /** * The core method that handles communications among GridSim entities. */ public void body() { int resourceID = 0; String resourceName; LinkedList resList; ResourceCharacteristics resChar; while (true) { super.gridSimHold(1.0); // hold by 1 second resList = super.getGridResourceList(); if (resList.size() > 0) { // in this example, we know that we only create one resource. // Resource list contains list of resource IDs not grid // resource objects. Integer num = (Integer) resList.get(0); resourceID = num.intValue(); // Requests to resource entity to send its characteristics super.send(resourceID, GridSimTags.SCHEDULE_NOW, GridSimTags.RESOURCE_CHARACTERISTICS, this.ID_); // waiting to get a resource characteristics resChar = (ResourceCharacteristics) super.receiveEventObject(); resourceName = resChar.getResourceName(); System.out.println(" >>> >>> >>> Received ResourceCharacteristics from " + resourceName + ", with id = " + resourceID + " and cost per second is " + resChar.getCostPerSec()); break; } else System.out.println("Waiting to get list of resources ..."); } Gridlet gridlet; String info; boolean resubmit = true; // a loop to get one Gridlet at one time and sends it to a grid // resource entity. Then waits for a reply for (int i = 0; i < this.list_.size(); i++) { gridlet = (Gridlet) this.list_.get(i); info = "Gridlet_" + gridlet.getGridletID(); System.out.println("Sending: " + info + " to " + resourceName + " with id = " + resourceID); // Sends one Gridlet to a grid resource specified in "resourceID" // super.gridletSubmit(gridlet, resourceID); // OR another approach to send a gridlet to a grid resource entity super.send(resourceID, GridSimTags.SCHEDULE_NOW, GridSimTags.GRIDLET_SUBMIT, gridlet); if(resubmit) { LinkedList ll = createGridlet( this.ID_.intValue() ); for(int k = 0; k < ll.size(); k++) { this.list_.addLast(ll.get(k)); } resubmit = false; } // // waiting to receive a Gridlet back from resource entity // gridlet = super.gridletReceive(); // System.out.println("Receiving Gridlet " + gridlet.getGridletID()); // // // Recods this event into "GridSim_stat.txt" file for statistical // // purposes // super.recordStatistics("\"Received " + info + " from " + // resourceName + "\"", gridlet.getProcessingCost()); // // // stores the received Gridlet into a new GridletList object // this.receiveList_.add(gridlet); } System.out.println("... ... ... exit gridlet submiting loop"); Sim_event ev = new Sim_event(); while (Sim_system.running()) { super.sim_get_next(ev); if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ gridlet = (Gridlet) ev.get_data(); super.recordStatistics("[ticking]: Received grildet: " + gridlet.getGridletID() + " from " + resourceName + "\"", gridlet.getProcessingCost()); // stores the received Gridlet into a new GridletList object this.receiveList_.add(gridlet); } if (ev.get_tag() == GridSimTags.END_OF_SIMULATION) { // if a continuous envrionment, the simulation may never be halted. } // process other event tags } System.out.println("... ... ... to exit gridsim"); printGridletList(this.receiveList_); // shut down all the entities, including GridStatistics entity since // we used it to record certain events. // super.shutdownGridStatisticsEntity(); super.shutdownUserEntity(); super.terminateIOEntities(); } /** * Gets the list of Gridlets * @return a list of Gridlets */ public GridletList getGridletList() { return this.receiveList_; } /** * This method will show you how to create Gridlets with and without * GridSimRandom class. * @param userID the user entity ID that owns these Gridlets * @return a GridletList object */ private GridletList createGridlet(int userID) { // Creates a container to store Gridlets GridletList list = new GridletList(); // We create three Gridlets or jobs/tasks manually without the help // of GridSimRandom int id = 0; double length = 3500.0; long file_size = 300; long output_size = 300; Gridlet gridlet1 = new Gridlet(id, length, file_size, output_size); id++; Gridlet gridlet2 = new Gridlet(id, 5000, 500, 500); id++; Gridlet gridlet3 = new Gridlet(id, 9000, 900, 900); // setting the owner of these Gridlets gridlet1.setUserID(userID); gridlet2.setUserID(userID); gridlet3.setUserID(userID); // Store the Gridlets into a list list.add(gridlet1); list.add(gridlet2); list.add(gridlet3); // // We create 5 Gridlets with the help of GridSimRandom and // // GriSimStandardPE class // long seed = 11L*13*17*19*23+1; // Random random = new Random(seed); // // // sets the PE MIPS Rating // GridSimStandardPE.setRating(100); // // // creates 5 Gridlets // int count = 5; // for (int i = 1; i < count+1; i++) // { // // the Gridlet length determines from random values and the // // current MIPS Rating for a PE // length = GridSimStandardPE.toMIs(random.nextDouble()*50); // // // determines the Gridlet file size that varies within the range // // 100 + (10% to 40%) // file_size = (long) GridSimRandom.real(100, 0.10, 0.40, // random.nextDouble()); // // // determines the Gridlet output size that varies within the range // // 250 + (10% to 50%) // output_size = (long) GridSimRandom.real(250, 0.10, 0.50, // random.nextDouble()); // // // creates a new Gridlet object // Gridlet gridlet = new Gridlet(id + i, length, file_size, // output_size); // // gridlet.setUserID(userID); // // // add the Gridlet into a list // list.add(gridlet); // } return list; } ////////////////////////// STATIC METHODS /////////////////////// /** * Creates main() to run this example */ public static void main(String[] args) { System.out.println("Starting Example4"); try { // First step: Initialize the GridSim package. It should be called // before creating any entities. We can't run this example without // initializing GridSim first. We will get run-time exception // error. int num_user = 1; // number of grid users Calendar calendar = Calendar.getInstance(); boolean trace_flag = true; // mean trace GridSim events // list of files or processing names to be excluded from any // statistical measures String[] exclude_from_file = { "" }; String[] exclude_from_processing = { "" }; // the name of a report file to be written. We don't want to write // anything here. See other examples of using the ReportWriter // class String report_name = null; // Initialize the GridSim package System.out.println("Initializing GridSim package"); GridSim.init(num_user, calendar, trace_flag, exclude_from_file, exclude_from_processing, report_name); // Second step: Creates one GridResource object String name = "Resource_0"; GridResource resource = createGridResource(name); // Third step: Creates the Example4 object Example041 obj = new Example041("Example041", 560.00); // Fourth step: Starts the simulation GridSim.startGridSimulation(); // Final step: Prints the Gridlets when simulation is over GridletList newList = obj.getGridletList(); printGridletList(newList); System.out.println("Finish Example4"); } catch (Exception e) { e.printStackTrace(); System.out.println("Unwanted errors happen"); } } /** * Creates one Grid resource. A Grid resource contains one or more * Machines. Similarly, a Machine contains one or more PEs (Processing * Elements or CPUs). * <p> * In this simple example, we are simulating one Grid resource with three * Machines that contains one or more PEs. * @param name a Grid Resource name * @return a GridResource object */ private static GridResource createGridResource(String name) { System.out.println(); System.out.println("Starting to create one Grid resource with " + "3 Machines"); // Here are the steps needed to create a Grid resource: // 1. We need to create an object of MachineList to store one or more // Machines MachineList mList = new MachineList(); System.out.println("Creates a Machine list"); // 2. A Machine contains one or more PEs or CPUs. Therefore, should // create an object of PEList to store these PEs before creating // a Machine. PEList peList1 = new PEList(); System.out.println("Creates a PE list for the 1st Machine"); // 3. Create PEs and add these into an object of PEList. // In this example, we are using a resource from // hpc420.hpcc.jp, AIST, Tokyo, Japan // Note: these data are taken the from GridSim paper, page 25. // In this example, all PEs has the same MIPS (Millions // Instruction Per Second) Rating for a Machine. peList1.add( new PE(0, 377) ); // need to store PE id and MIPS Rating peList1.add( new PE(1, 377) ); peList1.add( new PE(2, 377) ); peList1.add( new PE(3, 377) ); System.out.println("Creates 4 PEs with same MIPS Rating and put them"+ " into the PE list"); // 4. Create one Machine with its id and list of PEs or CPUs mList.add( new Machine(0, peList1) ); // First Machine System.out.println("Creates the 1st Machine that has 4 PEs and " + "stores it into the Machine list"); System.out.println(); // 5. Repeat the process from 2 if we want to create more Machines // In this example, the AIST in Japan has 3 Machines with same // MIPS Rating but different PEs. // NOTE: if you only want to create one Machine for one Grid resource, // then you could skip this step. PEList peList2 = new PEList(); System.out.println("Creates a PE list for the 2nd Machine"); peList2.add( new PE(0, 377) ); peList2.add( new PE(1, 377) ); peList2.add( new PE(2, 377) ); peList2.add( new PE(3, 377) ); System.out.println("Creates 4 PEs with same MIPS Rating and put them"+ " into the PE list"); mList.add( new Machine(1, peList2) ); // Second Machine System.out.println("Creates the 2nd Machine that has 4 PEs and " + "stores it into the Machine list"); System.out.println(); PEList peList3 = new PEList(); System.out.println("Creates a PE list for the 3rd Machine"); peList3.add( new PE(0, 377) ); peList3.add( new PE(1, 377) ); System.out.println("Creates 2 PEs with same MIPS Rating and put them"+ " into the PE list"); mList.add( new Machine(2, peList3) ); // Third Machine System.out.println("Creates the 3rd Machine that has 2 PEs and " + "stores it into the Machine list"); System.out.println(); // 6. Create a ResourceCharacteristics object that stores the // properties of a Grid resource: architecture, OS, list of // Machines, allocation policy: time- or space-shared, time zone // and its price (G$/PE time unit). String arch = "Sun Ultra"; // system architecture String os = "Solaris"; // operating system double time_zone = 9.0; // time zone this resource located double cost = 3.0; // the cost of using this resource ResourceCharacteristics resConfig = new ResourceCharacteristics( arch, os, mList, ResourceCharacteristics.TIME_SHARED, time_zone, cost); System.out.println("Creates the properties of a Grid resource and " + "stores the Machine list"); // 7. Finally, we need to create a GridResource object. double baud_rate = 100.0; // communication speed long seed = 11L*13*17*19*23+1; double peakLoad = 0.0; // the resource load during peak hour double offPeakLoad = 0.0; // the resource load during off-peak hr double holidayLoad = 0.0; // the resource load during holiday // incorporates weekends so the grid resource is on 7 days a week LinkedList Weekends = new LinkedList(); Weekends.add(new Integer(Calendar.SATURDAY)); Weekends.add(new Integer(Calendar.SUNDAY)); // incorporates holidays. However, no holidays are set in this example LinkedList Holidays = new LinkedList(); GridResource gridRes = null; try { gridRes = new GridResource(name, baud_rate, seed, resConfig, peakLoad, offPeakLoad, holidayLoad, Weekends, Holidays); } catch (Exception e) { e.printStackTrace(); } System.out.println("Finally, creates one Grid resource and stores " + "the properties of a Grid resource"); System.out.println(); return gridRes; } /** * Prints the Gridlet objects * @param list list of Gridlets */ private static void printGridletList(GridletList list) { int size = list.size(); Gridlet gridlet; String indent = " "; System.out.println(); System.out.println("========== [OUTPUT] =========="); System.out.println("Gridlet ID" + indent + "STATUS" + indent + "Resource ID" + indent + "Cost"); for (int i = 0; i < size; i++) { gridlet = (Gridlet) list.get(i); System.out.print(indent + gridlet.getGridletID() + indent + indent); if (gridlet.getGridletStatus() == Gridlet.SUCCESS) System.out.print("SUCCESS"); System.out.println( indent + indent + gridlet.getResourceID() + indent + indent + gridlet.getProcessingCost() ); } } } // end class |
From: Marcos D. de A. <ma...@cs...> - 2009-02-16 12:24:02
|
Hi Ye, Please change this part of the code: --------------------------------- if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ gridlet = (Gridlet) ev.get_data(); super.recordStatistics("[ticking]: Received grildet: " + gridlet.getGridletID() + " from " + resourceName + "\"", gridlet.getProcessingCost()); // stores the received Gridlet into a new GridletList object this.receiveList_.add(gridlet); } --------------------------------- to: --------------------------------- if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ gridlet = (Gridlet) ev.get_data(); super.recordStatistics("[ticking]: Received grildet: " + gridlet.getGridletID() + " from " + resourceName + "\"", gridlet.getProcessingCost()); // stores the received Gridlet into a new GridletList object this.receiveList_.add(gridlet); if(receiveList_.size() == list_.size()) { break; } } --------------------------------- Otherwise your simulation will never end and you will get those errors. Also, I am sorry, but I could not understand what you want to do in this part of the code: ------------------------------- boolean resubmit = true; // a loop to get one Gridlet at one time and sends it to a grid // resource entity. Then waits for a reply for (int i = 0; i < this.list_.size(); i++) { gridlet = (Gridlet) this.list_.get(i); info = "Gridlet_" + gridlet.getGridletID(); System.out.println("Sending: " + info + " to " + resourceName + " with id = " + resourceID); // Sends one Gridlet to a grid resource specified in "resourceID" // super.gridletSubmit(gridlet, resourceID); // OR another approach to send a gridlet to a grid resource entity super.send(resourceID, GridSimTags.SCHEDULE_NOW, GridSimTags.GRIDLET_SUBMIT, gridlet); if(resubmit) { LinkedList ll = createGridlet( this.ID_.intValue() ); for(int k = 0; k < ll.size(); k++) { this.list_.addLast(ll.get(k)); } resubmit = false; } ---------------------- resubmit will be true initially, which will make "inkedList ll = createGridlet( this.ID_.intValue() );" create a new list of gridlets with the same ids of the gridlets that are already in list_. Regards, Marcos On 16/02/2009, at 7:40 PM, ye wrote: > <Example041.java> Marcos Dias de Assuncao Grid Computing and Distributed Systems (GRIDS) Laboratory Department of Computer Science and Software Engineering The University of Melbourne, Australia Email: ma...@cs... ------------- "It is well enough that people of the nation do not understand our banking and monetary system, for if they did, I believe there would be a revolution before tomorrow morning." Henry Ford |
From: ye h. <hua...@gm...> - 2009-02-16 13:01:41
|
Hi, Marcos: Thanks for help! I am sorry, the "resubmit" should be erased from the demo, so do the following code: --- --- --- if(resubmit) { LinkedList ll = createGridlet( this.ID_.intValue() ); for(int k = 0; k < ll.size(); k++) { this.list_.addLast(ll.get(k)); } resubmit = false; } --- --- --- they are not the point. You are right, the LOOP while should be finished with the following code to exit properly. --- --- --- if(receiveList_.size() == list_.size()) { break; } --- --- --- However, I mean to ignore the code to check the wired print result. If the above loop-exit code is NOT attached, I understand the while() could exit properly, but why I got the following print: --- --- --- ... ... ... exit gridlet submiting loop Sim_system: No more future events Gathering simulation data. ... ... ... to exit gridsim ========== [OUTPUT:] ========== Gridlet ID STATUS Resource ID Cost 0 SUCCESS 5 27.851458885941653 1 SUCCESS 5 39.787798408488065 2 SUCCESS 5 71.61803713527851 2 SUCCESS 5 71.61803713527851 Resource_0: Warning - Gridlet #2 owned by Example041 is already completed/finished. Therefore, it is not being executed again --- --- --- It seems the gridlet #2 is resubmitted again to the GridResource after its status had been changed to "Success". Also, you can see the Sim_system.running() has caught the duplicate returned Gridlet and prints two lines: 2 SUCCESS 5 71.61803713527851 I mean, even the while() loop can't exit properly(keep monitoring incoming events), why there is a duplicate gridlet submit/return message? Regards ye On 16 Feb, 2009, at 1:23 PM, Marcos Dias de Assuncao wrote: > > Hi Ye, > > Please change this part of the code: > > --------------------------------- > if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ > gridlet = (Gridlet) ev.get_data(); > super.recordStatistics("[ticking]: Received grildet: " + > gridlet.getGridletID() + " from " + > resourceName + "\"", > gridlet.getProcessingCost()); > > // stores the received Gridlet into a new GridletList > object > this.receiveList_.add(gridlet); > } > --------------------------------- > to: > --------------------------------- > if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ > gridlet = (Gridlet) ev.get_data(); > super.recordStatistics("[ticking]: Received grildet: " + > gridlet.getGridletID() + " from " + > resourceName + "\"", > gridlet.getProcessingCost()); > > // stores the received Gridlet into a new GridletList > object > this.receiveList_.add(gridlet); > > if(receiveList_.size() == list_.size()) { > break; > } > } > --------------------------------- > > Otherwise your simulation will never end and you will get those > errors. Also, I am sorry, but I could not understand what you want > to do in this part of the code: > > ------------------------------- > boolean resubmit = true; > > // a loop to get one Gridlet at one time and sends it to a grid > // resource entity. Then waits for a reply > for (int i = 0; i < this.list_.size(); i++) > { > gridlet = (Gridlet) this.list_.get(i); > info = "Gridlet_" + gridlet.getGridletID(); > > System.out.println("Sending: " + info + " to " + > resourceName + > " with id = " + resourceID); > > // Sends one Gridlet to a grid resource specified in > "resourceID" > // super.gridletSubmit(gridlet, resourceID); > > // OR another approach to send a gridlet to a grid > resource entity > super.send(resourceID, GridSimTags.SCHEDULE_NOW, > GridSimTags.GRIDLET_SUBMIT, gridlet); > > if(resubmit) { > LinkedList ll = createGridlet( this.ID_.intValue() ); > for(int k = 0; k < ll.size(); k++) { > this.list_.addLast(ll.get(k)); > } > > resubmit = false; > } > > ---------------------- > > resubmit will be true initially, which will make "inkedList ll = > createGridlet( this.ID_.intValue() );" create a new list of gridlets > with the same ids of the gridlets that are already in list_. > > Regards, > > Marcos > > > On 16/02/2009, at 7:40 PM, ye wrote: > >> <Example041.java> > > Marcos Dias de Assuncao > Grid Computing and Distributed Systems (GRIDS) Laboratory > Department of Computer Science and Software Engineering > The University of Melbourne, Australia > Email: ma...@cs... > > ------------- > "It is well enough that people of the nation do not understand our > banking and monetary system, for if they did, I believe there would > be a revolution before tomorrow morning." > > Henry Ford > -- Ye Huang, Department of Informatics University of Fribourg / Pérolles 2 - Bld de Pérolles 90 1700 Fribourg, Switzerland e-mail: ye....@he..., ye....@un... http://diuf.unifr.ch/people/huangy/ Office: +41 26 429 65 95 |
From: Marcos D. de A. <ma...@cs...> - 2009-02-17 06:21:21
|
Hi Ye, As I said in another e-mail, if you don't finalise the simulation properly, the error messages you get may not have anything to do with the actual mistake. In fact, SimJava2 has a strange design in which they made all the entities as threads, it simplifies the programming but compromises debugging and troubleshooting. By the way, Sim_system.running() will always be true if you don't shutdown all the user entities. Regards, Marcos On 17/02/2009, at 12:01 AM, ye huang wrote: > Hi, Marcos: > Thanks for help! > > I am sorry, the "resubmit" should be erased from the demo, so do the > following code: > --- --- --- > if(resubmit) { > LinkedList ll = createGridlet( this.ID_.intValue() ); > for(int k = 0; k < ll.size(); k++) { > this.list_.addLast(ll.get(k)); > } > > resubmit = false; > } > --- --- --- > they are not the point. > > > You are right, the LOOP while should be finished with the following > code to exit properly. > --- --- --- > if(receiveList_.size() == list_.size()) { > break; > } > --- --- --- > > > However, I mean to ignore the code to check the wired print result. If > the above loop-exit code is NOT attached, I understand the while() > could exit properly, but why I got the following print: > > --- --- --- > ... ... ... exit gridlet submiting loop > Sim_system: No more future events > Gathering simulation data. > ... ... ... to exit gridsim > > ========== [OUTPUT:] ========== > Gridlet ID STATUS Resource ID Cost > 0 SUCCESS 5 27.851458885941653 > 1 SUCCESS 5 39.787798408488065 > 2 SUCCESS 5 71.61803713527851 > 2 SUCCESS 5 71.61803713527851 > Resource_0: Warning - Gridlet #2 owned by Example041 is already > completed/finished. > Therefore, it is not being executed again > > --- --- --- > > It seems the gridlet #2 is resubmitted again to the GridResource after > its status had been changed to "Success". > Also, you can see the Sim_system.running() has caught the duplicate > returned Gridlet and prints two lines: > > 2 SUCCESS 5 71.61803713527851 > > > I mean, even the while() loop can't exit properly(keep monitoring > incoming events), why there is a duplicate gridlet submit/return > message? > > Regards > ye > > On 16 Feb, 2009, at 1:23 PM, Marcos Dias de Assuncao wrote: > >> >> Hi Ye, >> >> Please change this part of the code: >> >> --------------------------------- >> if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ >> gridlet = (Gridlet) ev.get_data(); >> super.recordStatistics("[ticking]: Received grildet: " + >> gridlet.getGridletID() + " from " + >> resourceName + "\"", >> gridlet.getProcessingCost()); >> >> // stores the received Gridlet into a new GridletList >> object >> this.receiveList_.add(gridlet); >> } >> --------------------------------- >> to: >> --------------------------------- >> if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ >> gridlet = (Gridlet) ev.get_data(); >> super.recordStatistics("[ticking]: Received grildet: " + >> gridlet.getGridletID() + " from " + >> resourceName + "\"", >> gridlet.getProcessingCost()); >> >> // stores the received Gridlet into a new GridletList >> object >> this.receiveList_.add(gridlet); >> >> if(receiveList_.size() == list_.size()) { >> break; >> } >> } >> --------------------------------- >> >> Otherwise your simulation will never end and you will get those >> errors. Also, I am sorry, but I could not understand what you want >> to do in this part of the code: >> >> ------------------------------- >> boolean resubmit = true; >> >> // a loop to get one Gridlet at one time and sends it to a >> grid >> // resource entity. Then waits for a reply >> for (int i = 0; i < this.list_.size(); i++) >> { >> gridlet = (Gridlet) this.list_.get(i); >> info = "Gridlet_" + gridlet.getGridletID(); >> >> System.out.println("Sending: " + info + " to " + >> resourceName + >> " with id = " + resourceID); >> >> // Sends one Gridlet to a grid resource specified in >> "resourceID" >> // super.gridletSubmit(gridlet, resourceID); >> >> // OR another approach to send a gridlet to a grid >> resource entity >> super.send(resourceID, GridSimTags.SCHEDULE_NOW, >> GridSimTags.GRIDLET_SUBMIT, gridlet); >> >> if(resubmit) { >> LinkedList ll = createGridlet( this.ID_.intValue() ); >> for(int k = 0; k < ll.size(); k++) { >> this.list_.addLast(ll.get(k)); >> } >> >> resubmit = false; >> } >> >> ---------------------- >> >> resubmit will be true initially, which will make "inkedList ll = >> createGridlet( this.ID_.intValue() );" create a new list of gridlets >> with the same ids of the gridlets that are already in list_. >> >> Regards, >> >> Marcos >> >> >> On 16/02/2009, at 7:40 PM, ye wrote: >> >>> <Example041.java> >> >> Marcos Dias de Assuncao >> Grid Computing and Distributed Systems (GRIDS) Laboratory >> Department of Computer Science and Software Engineering >> The University of Melbourne, Australia >> Email: ma...@cs... >> >> ------------- >> "It is well enough that people of the nation do not understand our >> banking and monetary system, for if they did, I believe there would >> be a revolution before tomorrow morning." >> >> Henry Ford >> > > > -- > > Ye Huang, Department of Informatics > University of Fribourg / Pérolles 2 - Bld de Pérolles 90 > 1700 Fribourg, Switzerland > > e-mail: ye....@he..., ye....@un... > http://diuf.unifr.ch/people/huangy/ > Office: +41 26 429 65 95 > > > > > ---------------------------------------------------------------------- > -------- > Open Source Business Conference (OSBC), March 24-25, 2009, San > Francisco, CA > -OSBC tackles the biggest issue in open source: Open Sourcing the > Enterprise > -Strategies to boost innovation and cut costs with open source > participation > -Receive a $600 discount off the registration fee with the source > code: SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Gridsim-developers mailing list > Gri...@li... > https://lists.sourceforge.net/lists/listinfo/gridsim-developers Marcos Dias de Assuncao Grid Computing and Distributed Systems (GRIDS) Laboratory Department of Computer Science and Software Engineering The University of Melbourne, Australia Email: ma...@cs... ------------- "It is well enough that people of the nation do not understand our banking and monetary system, for if they did, I believe there would be a revolution before tomorrow morning." Henry Ford |
From: ye h. <hua...@gm...> - 2009-02-17 10:18:59
|
Hi, Marcos: Thanks a lot, that's clear enough for me now!! Regards ye On 17 Feb, 2009, at 7:20 AM, Marcos Dias de Assuncao wrote: > > Hi Ye, > > As I said in another e-mail, if you don't finalise the simulation > properly, the error messages you get may not have anything to do > with the actual mistake. In fact, SimJava2 has a strange design in > which they made all the entities as threads, it simplifies the > programming but compromises debugging and troubleshooting. > > By the way, Sim_system.running() will always be true if you don't > shutdown all the user entities. > > Regards, > > Marcos > > > On 17/02/2009, at 12:01 AM, ye huang wrote: > >> Hi, Marcos: >> Thanks for help! >> >> I am sorry, the "resubmit" should be erased from the demo, so do the >> following code: >> --- --- --- >> if(resubmit) { >> LinkedList ll = createGridlet( this.ID_.intValue() ); >> for(int k = 0; k < ll.size(); k++) { >> this.list_.addLast(ll.get(k)); >> } >> >> resubmit = false; >> } >> --- --- --- >> they are not the point. >> >> >> You are right, the LOOP while should be finished with the following >> code to exit properly. >> --- --- --- >> if(receiveList_.size() == list_.size()) { >> break; >> } >> --- --- --- >> >> >> However, I mean to ignore the code to check the wired print result. >> If >> the above loop-exit code is NOT attached, I understand the while() >> could exit properly, but why I got the following print: >> >> --- --- --- >> ... ... ... exit gridlet submiting loop >> Sim_system: No more future events >> Gathering simulation data. >> ... ... ... to exit gridsim >> >> ========== [OUTPUT:] ========== >> Gridlet ID STATUS Resource ID Cost >> 0 SUCCESS 5 27.851458885941653 >> 1 SUCCESS 5 39.787798408488065 >> 2 SUCCESS 5 71.61803713527851 >> 2 SUCCESS 5 71.61803713527851 >> Resource_0: Warning - Gridlet #2 owned by Example041 is already >> completed/finished. >> Therefore, it is not being executed again >> >> --- --- --- >> >> It seems the gridlet #2 is resubmitted again to the GridResource >> after >> its status had been changed to "Success". >> Also, you can see the Sim_system.running() has caught the duplicate >> returned Gridlet and prints two lines: >> >> 2 SUCCESS 5 71.61803713527851 >> >> >> I mean, even the while() loop can't exit properly(keep monitoring >> incoming events), why there is a duplicate gridlet submit/return >> message? >> >> Regards >> ye >> >> On 16 Feb, 2009, at 1:23 PM, Marcos Dias de Assuncao wrote: >> >>> >>> Hi Ye, >>> >>> Please change this part of the code: >>> >>> --------------------------------- >>> if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ >>> gridlet = (Gridlet) ev.get_data(); >>> super.recordStatistics("[ticking]: Received grildet: " + >>> gridlet.getGridletID() + " from " + >>> resourceName + "\"", >>> gridlet.getProcessingCost()); >>> >>> // stores the received Gridlet into a new GridletList >>> object >>> this.receiveList_.add(gridlet); >>> } >>> --------------------------------- >>> to: >>> --------------------------------- >>> if (ev.get_tag() == GridSimTags.GRIDLET_RETURN){ >>> gridlet = (Gridlet) ev.get_data(); >>> super.recordStatistics("[ticking]: Received grildet: " + >>> gridlet.getGridletID() + " from " + >>> resourceName + "\"", >>> gridlet.getProcessingCost()); >>> >>> // stores the received Gridlet into a new GridletList >>> object >>> this.receiveList_.add(gridlet); >>> >>> if(receiveList_.size() == list_.size()) { >>> break; >>> } >>> } >>> --------------------------------- >>> >>> Otherwise your simulation will never end and you will get those >>> errors. Also, I am sorry, but I could not understand what you want >>> to do in this part of the code: >>> >>> ------------------------------- >>> boolean resubmit = true; >>> >>> // a loop to get one Gridlet at one time and sends it to a >>> grid >>> // resource entity. Then waits for a reply >>> for (int i = 0; i < this.list_.size(); i++) >>> { >>> gridlet = (Gridlet) this.list_.get(i); >>> info = "Gridlet_" + gridlet.getGridletID(); >>> >>> System.out.println("Sending: " + info + " to " + >>> resourceName + >>> " with id = " + resourceID); >>> >>> // Sends one Gridlet to a grid resource specified in >>> "resourceID" >>> // super.gridletSubmit(gridlet, resourceID); >>> >>> // OR another approach to send a gridlet to a grid >>> resource entity >>> super.send(resourceID, GridSimTags.SCHEDULE_NOW, >>> GridSimTags.GRIDLET_SUBMIT, gridlet); >>> >>> if(resubmit) { >>> LinkedList ll = createGridlet( this.ID_.intValue() ); >>> for(int k = 0; k < ll.size(); k++) { >>> this.list_.addLast(ll.get(k)); >>> } >>> >>> resubmit = false; >>> } >>> >>> ---------------------- >>> >>> resubmit will be true initially, which will make "inkedList ll = >>> createGridlet( this.ID_.intValue() );" create a new list of gridlets >>> with the same ids of the gridlets that are already in list_. >>> >>> Regards, >>> >>> Marcos >>> >>> >>> On 16/02/2009, at 7:40 PM, ye wrote: >>> >>>> <Example041.java> >>> >>> Marcos Dias de Assuncao >>> Grid Computing and Distributed Systems (GRIDS) Laboratory >>> Department of Computer Science and Software Engineering >>> The University of Melbourne, Australia >>> Email: ma...@cs... >>> >>> ------------- >>> "It is well enough that people of the nation do not understand our >>> banking and monetary system, for if they did, I believe there would >>> be a revolution before tomorrow morning." >>> >>> Henry Ford >>> >> >> >> -- >> >> Ye Huang, Department of Informatics >> University of Fribourg / Pérolles 2 - Bld de Pérolles 90 >> 1700 Fribourg, Switzerland >> >> e-mail: ye....@he..., ye....@un... >> http://diuf.unifr.ch/people/huangy/ >> Office: +41 26 429 65 95 >> >> >> >> >> ------------------------------------------------------------------------------ >> Open Source Business Conference (OSBC), March 24-25, 2009, San >> Francisco, CA >> -OSBC tackles the biggest issue in open source: Open Sourcing the >> Enterprise >> -Strategies to boost innovation and cut costs with open source >> participation >> -Receive a $600 discount off the registration fee with the source >> code: SFAD >> http://p.sf.net/sfu/XcvMzF8H >> _______________________________________________ >> Gridsim-developers mailing list >> Gri...@li... >> https://lists.sourceforge.net/lists/listinfo/gridsim-developers > > Marcos Dias de Assuncao > Grid Computing and Distributed Systems (GRIDS) Laboratory > Department of Computer Science and Software Engineering > The University of Melbourne, Australia > Email: ma...@cs... > > ------------- > "It is well enough that people of the nation do not understand our > banking and monetary system, for if they did, I believe there would > be a revolution before tomorrow morning." > > Henry Ford > -- Ye Huang, Department of Informatics University of Fribourg / Pérolles 2 - Bld de Pérolles 90 1700 Fribourg, Switzerland e-mail: ye....@he..., ye....@un... http://diuf.unifr.ch/people/huangy/ Office: +41 26 429 65 95 |