# Frequently Asked Questions (FAQ) # Maintained by Anthony Sulistio # $Id: faq.txt,v 1.7 2007/09/01 02:46:01 anthony Exp $ Please read this document, FAQ, examples, API, etc before contacting us. Moreover, look at the previous questions at the below website: http://sourceforge.net/mail/?group_id=94592 Send any queries and feedbacks to gridsim-users @ lists.sourceforge.net --------------------------------------------------------- Q: Where can I find gridbroker, visual modeler, ... ? A: If you are looking for applications or programs built on top of GridSim, such as gridbroker or Visual Modeler, they can be found below: http://www.gridbus.org/gridsim/release.html --------------------------------------------------------- Q: I want to run the gridsim simulation on my computer but i can't because Jcreator don't see the gridsim package. Please send to me the steps of how compile and run the simulation. A: Go to GridSim website and there is an instruction on how to use it with JCreator. http://www.gridbus.org/gridsim/paper/jcreator.pdf If you use JBuilder or Eclipse, the instructions can be found below: http://www.gridbus.org/gridsim/paper/jbuilder.pdf http://www.gridbus.org/gridsim/paper/eclipse.pdf --------------------------------------------------------- Q: I would like to do some experiments for my research work on grid computing using the simulator package that you have. Using the simulator, can I simulate a grid environment with service providers requestors, administartors etc. on a PC environment? Please pass on some resources, links, and white papers and links where from I should download. Q: please help me by sending GridSim Package, give instructions and also technical help to complete my project successfully. A: The best way to learn GridSim is by downloading it from below: http://www.gridbus.org/gridsim/ Go through the provided examples. In the website, it contains links to papers about GridSim. As long as you have JDK version 1.4 onwards, you can run GridSim on a PC. However, if you run a huge simulation, you'd probably needs bigger RAM and CPU. --------------------------------------------------------- Q: Will GridSim require Globus? A: Why don't you download the GridSim toolkit and have a try? Also, please read the README file. --------------------------------------------------------- Q: How do you compile and run GridSim application? A: For example, if you want to run Example1 In Unix/Linux: * go to the directory of where Example1 resides, i.e. at command prompt type: cd $GRIDSIM/examples/Example01 * to compile type: javac -classpath $GRIDSIM/gridsim.jar:. Example1.java * to run type: java -classpath gridsim.jar:. Example1 In Windows: * go to the directory of where Example1 resides, i.e. at command prompt type: cd %GRIDSIM%\examples\Example01 * to compile type: javac -classpath %GRIDSIM%\gridsim.jar;. Example1.java * to run type: java -classpath gridsim.jar;. Example1 The main difference is the use of ":" for Unix/Linux, and ";" for Windows NOTE: $GRIDSIM or %GRIDSIM% is the location of the GridSim Toolkit package. Also, inside gridsim.jar contains SimJava v2.0 classes. Hence, you do not need to install SimJava libraries. --------------------------------------------------------- Q: When I run GridSim application, I have the following error message: Exception in thread "main" java.lang.NoClassDefFoundError: Example1 A: You need the classpath to refer to the directory where Example1.java located. For Example, to run in Windows: java -classpath gridsim.jar;. Example1 where Example1 is the classname you want to execute --------------------------------------------------------- Q: My GridSim application runs perfectly, however, after the end of simulation it just hang without exiting properly. A: The problem may be caused by not closing GridSim entities, such as GridStatistics, I/O ports, etc. Each class that extends GridSim with a networked I/O ports must use terminate the I/O entities by using terminateIOEntities() before exiting body() method. Another cause for this problem is the number of Grid user entities. Before the start of a GridSim application, you need to intialize the GridSim package using GridSim.init(). The method requires to have the number of Grid user entities. If the number is different from the actual Grid user entities, your GridSim application will hang or can't exit properly. --------------------------------------------------------- Q: I am creating a network topology using GridSim. When I run the experiment, I have the following exception message: java.lang.NullPointerException at gridsim.net.RIPRouter.getScheduler(RIPRouter.java:451) at gridsim.net.RIPRouter.getScheduler(RIPRouter.java:401) at gridsim.net.RIPRouter.processNetPacket(RIPRouter.java:302) at gridsim.net.RIPRouter.processEvent(RIPRouter.java:270) at gridsim.net.Router.body(Router.java:267) at eduni.simjava.Sim_entity.run(Sim_entity.java:603) A: Network exception message is generally caused by 2 things: - If you created a new router or link entity, it hasn't been registered to GridInformationService class; OR - GridSim needs few seconds for all network entities to be registered and for the network entity to fill in its routing table dynamically. Currently, GridSim uses a flooding approach for locating the neighbour routers. Hence, these routers need time to receive all the replies. I think this could be the main cause of the exception message. --------------------------------------------------------- Q: When running GridSim Example 4, 5 and 6 I got an infinite loop saying: "Waiting to get list of resources". A: In GridSim 2.1, GridSim.getGridResourceList() uses a message event to tell GIS (GridInformationService) entity to send the GridResource list. This causes a significant delay and a bit redundant. In GridSim 2.2, GridSim.getGridResourceList() directly uses a method call to GIS entity rather than a message passing. This makes the operation a lot faster. However, during the early stage of simulation, a GridResource might be slow in registering its service to GIS. Hence, the GridResource list is always empty and causing an infinite loop. To solve this problem, inside the while() loop, put the following code: // need to pause for a while to wait GridResources finish // registering to GIS super.gridSimHold(1.0); // hold by 1 second So, you wait 1 second later to get GridResource list. --------------------------------------------------------- Q: When I tried to run GridSim Example4, I have the following error message: java.lang.IncompatibleClassChangeError at Example4.body(Example4.java:70) at eduni.simjava.Sim_entity.run(Sim_entity.java:603) A: I am not sure what is the exact problem. However, this is mainly caused by older release of SimJava. GridSim Toolkit 2.2 and above now use SimJava2. Simply recompile the Example4.java will solve this problem. NOTE: This problem is also effected GridSim Example6. --------------------------------------------------------- Q: When I tried to run GridSim Example1, I have the following error message: Exception in thread "main" eduni.simjava.Sim_exception: Sim_entity: Entity names can't contain spaces. at eduni.simjava.Sim_entity.(Sim_entity.java:154) at gridsim.GridSim.(GridSim.java:149) at gridsim.GridResource.(GridResource.java:93) at Example1.createGridResource(Example1.java:188) at Example1.main(Example1.java:57) A: GridSim Toolkit 2.2 and above now use SimJava2. SimJava2 is more strict about a valid entity name compare to previous release. Hence, to fix this problem is to remove the unnecessary empty space, i.e. "GridResource 0" becomes "GridResource_0" --------------------------------------------------------- Q: Are there any type of applications that I can simulate with GridSim? A: GridSim provides the grid simulation environment (with resources and users), but you need to write codes specifically for the application you want to simulate, e.g. a resource broker Nimrod/G is written to call GridSim classes. --------------------------------------------------------- Q: How do I create Gridlets with compute I/O requirements? A: Gridlets with compute I/O requirements are simulated through their file sizes (input) and output sizez (output) parameters. See Figure 16 of the GridSim paper. --------------------------------------------------------- Q: I have a question on network simulation in Gridsim. In my understanding, entities with networking capability must define input and output port. Both ports are "connected" to a simulated network. How does Gridsim models network link and its characteristics, especially bandwidth, since I couldn't find class that models this network link? Does Gridsim also simulate bandwidth-sharing if there are several IOdata are sent using the same link? A: Not supported in the older versions. Currently GridSim uses very simple network model. Since GridSim ver3.1, it has a realistic network model. However, advanced network features are not supported. --------------------------------------------------------- Q: Is GridSim tool kit provides any help in solving problems for dynamical resource allocation upon failure? A: GridSim provides mechanism to reserve, but policy of reservation and how to handle failures etc. is up to server's provider and consumers to define. --------------------------------------------------------- Q: How do you model the gridlet execution in time_shared resource? A: Just creating a Gridlet is sufficient. It runs on both time and space shared machines. --------------------------------------------------------- Q: Does each gridlet can only be processed by only one PE? A: For older GridSim versions, it runs one PE. Since GridSim ver3.0, each Gridlet can ask to be run on multiple PEs. However, it is up to the scheduler to handle this. At the moment, by default, TimeShared and SpaceShared scheduler executes an incoming Gridlet to only 1 PE. --------------------------------------------------------- Q: Is the model for parallel job included inside the GridSim? A: It is up users to model parallel application job at the higher level (develop on top of gridsim). --------------------------------------------------------- Q: When I run GridSim, I have the following error message: Sim_system:Error - past event detected! Time: 0.0, event time: -XXXXX.X event type: 1 Where XXXXX.X is a negative number that varies. A: It appears like this error comes up for one of the following scenarios: - an entity or object waits for a specific event. However, the response event type is different. - some events are not captured. - GridSim runs under multi-threaded environment. Hence, some events might be accidentally deleted or being changed by other thread to wait for a different response that doesn't exist, etc ... --------------------------------------------------------- Q: Does GridSim currently support the usage of any wireless network standard when specifying network topology? A: No. We have NOT done so much about wireless network support in GridSim. But if you are willing, we could explore this with you. --------------------------------------------------------- Q: Does GridSim support multiple simulations or runs in a single program? A: No. Currently, GridSim only allows a single experiment to run in a main() method. Hence, to calculate a confidence interval, you need to do this manually. --------------------------------------------------------- Q: Does GridSim run in a cluster or a PC? A: GridSim runs in a PC as a stand-alone program with multiple threads. This means if you want to run in a cluster, you just need to request 1 node. --------------------------------------------------------- Q: I came across three variables: peak load, off-peak load and holiday load. I understand from the study I have done that these variables represent the load factor. I do not fully get what this means and was hoping that you could help me out so I can progress further with my work. A: These load factors are influencing the total execution time of a job in a given resource. If you set these loads to zero, means this resource is idle / free. If you want to write a resource scheduler, like SpaceShared or TimeShared then these load factors are important. --------------------------------------------------------- Q: for the Gridlet class, what are the units of file size, length, and output? A: the unit of file size and output is in byte. For the Gridlet length, the unit is in MI (Millions Instructions). A CPU clock is measured in MIPS (Millions Instructions Per Second) as suggested by SPEC. --------------------------------------------------------- Q: In the previous releases of GridSim you had to use GridSim class to send messages to other entities. The provided "send" methods included a parameter to indicate the sender of the request. It is no clear how to indicate this with the "send" methods provided by the GridSimCore class. The lack of ID information in the event raises an exception in the GridResource class. Reading the source code of the GridResource class I've realized that the way to send the ID of the sender could be the following: super.send(resourceId, GridSimTags.SCHEDULE_NOW, GridSimTags.RESOURCE_CHARACTERISTICS, new Integer(this.get_id())); This solves the first problem but generates a new exception in other class: Exception in thread "Thread-7" java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.ArrayList.get(ArrayList.java:323) at eduni.simjava.Sim_system.send(Sim_system.java:600) at eduni.simjava.Sim_entity.sim_schedule(Sim_entity.java:342) at gridsim.net.Output.defaultSend(Unknown Source) at gridsim.net.Output.body(Unknown Source) at eduni.simjava.Sim_entity.run(Sim_entity.java:603) I've read the source of the Output class, but I've not found a solution to the problem. Do you know where can be the problem? A: The problem was in the "baudRate" attribute that wasn't initialized. So using GridSim(String name, double baudRate) the problem was solved. --------------------------------------------------------- Questions related to GridBroker =============================== Q: How do you compile and run GridBroker application? A: Similar to compile and to run GridSim. Instead of using gridsim.jar, you use gridbroker.jar. Inside this jar file, it contains GridBroker, GridSim and SimJava classes. Please do not use recent GridSim release jar file when running this broker (see the below question). --------------------------------------------------------- Q: I have executed all gridsim examples. But while executing gridbroker i.e C:\gridsimtoolkit-4.0\application\gridbroker\example\Example1.java it gives following error after initializing gridsim: Initialising... Starting GridSim version 4.0 Entities started. java.lang.IncompatibleClassChangeError at gridbroker.Broker.body( Broker.java:649) at eduni.simjava.Sim_entity.run(Sim_entity.java:603) A: read the README.txt file located under $GRIDSIM/application/gridbroker. ./gridbroker.jar - A jar file containing GridBroker, GridSim v2.1, and SimJava v1.2 classes. NOTE: No updates or improvements on GridBroker package since GridSim v2.1, hence, it is more stable under GridSim v2.1 and SimJava v1.2 release. You cant mixed up jars from different class versions. That's why you have this error message. --------------------------------------------------------- Q: I want to create a specific application. Is it necessary to build on top of GridBroker? A: You are expected to develop an application on top of GridSim, instead of GridBroker. GridBroker is included to demonstrate the capability of GridSim in simulating the Grid environment and a Nimrod/G like deadline and budget constraint scheduling system. --------------------------------------------------------- Q: The application generates the files: tracefile, stat.txt, g14.sched1, g14.sched2, g14.sched3, g14.sched31, g14.sched4, g14.sched5, g14.sched6. What are the meaning of these files? A: These files contains statistical results of the simulation that are of interest to the GridSim user (ie. you). When running a GridBroker application, it will produce the following files: stat.txt -> created by GridSim class during GridSim.init() to create a GridStatistics object for statistical purposes tracefile -> created by the SimJava package to trace every events that are performed by SimJava, GridSim and GridBroker during the simulation. g14.sched* -> All of these files are created by Broker class. When we create an UserEntity object, it will automatically creates a Broker object. Description on the g14.sched* files: g14.sched1 is about Gridlets finished report. g14.sched2 is about Gridlets processing expenses report. g14.sched3 is about Gridlets on resource report. g14.sched31 is about Gridlets committed for resource report. g14.sched4 is same as g14.sched1, however this file only displays the overall result or summary of g14.sched1 file. g14.sched5 is same as g14.sched2, however this file only displays the overall result or summary of g14.sched2 file. g14.sched6 is same as g14.sched3, however this file only displays the overall result or summary of g14.sched3 file. NOTE: Explanations about the content of each file are mentioned in GridBroker example section. --------------------------------------------------------- Questions related to VisualModeler ================================== Q: What is VisualModeler (VM)? A: It is a program that generates GridBroker source code. With VM, you can specify how many grid users and resources for your simulation. After finish generating the GridBroker source code, you can then compile and run the program using the GridBroker jar file. --------------------------------------------------------- Q: How do I run VisualModeler? A: To run it, just type: java -jar visualmodeler.jar --------------------------------------------------------- Q: I have the following warning message when trying to run VisualModeler. Jun 29, 2003 5:36:56 PM java.util.prefs.FileSystemPreferences$3 run WARNING: Could not create system preferences directory. System preferences are unusable. A: That's the JDK1.4 Preferences API, used to manage system-wide and per-user preferences. On Windows, the implementation uses the Windows Registry; on Unix/Linux, it uses the file system. The warning means Java (used under a user) tries to write preference files in the root-owned directory that contains Java. This may be caused by the way Java installed. To solve this problem is run VisualModeler under root. Java will automatically creates system preferences directory. Possibly in /etc/.java/.systemPrefs Go to the following website to know more about this: http://java.sun.com/j2se/1.4.1/install-linux.html --------------------------------------------------------- Q: When I tried to run code generated from VisualModeler, I have the following error message: Exception in thread "main" eduni.simjava.Sim_exception: Sim_entity: Entity names can't contain spaces. at eduni.simjava.Sim_entity.(Sim_entity.java:154) at gridsim.GridSim.(GridSim.java:149) at gridsim.GridResource.(GridResource.java:93) at Example1.createGridResource(Example1.java:188) at Example1.main(Example1.java:57) A: GridSim Toolkit 2.2 and above now use SimJava2. SimJava2 is more strict about a valid entity name compare to the previous release. Hence, to fix this problem is to remove the unnecessary empty space, i.e. "GridResource 0" becomes "GridResource_0"