make install
\endverbatim
-If at some point, something fails, you can report me this problem but,
-please, avoid sending a laconic mail like "There is a problem. Is it
-normal?". Send me the config.log file which is automatically
-generated by configure. Try to capture both the standard output and
-the error output of the <tt>make</tt> command. There is no way for me
-to help you if you do not give me a little bit of information.
+If at some point, something fails, you can report this problem to the list
+but, please, avoid sending a laconic mail like "There is a problem. Is it
+normal?". Send the config.log file which is automatically generated by
+configure. Try to capture both the standard output and the error output of
+the <tt>make</tt> command with <tt>script</tt>. There is no way for us to
+help you without the relevant bits of information.
Now, the following directory should have been created :
As usual, you're welcome to participate.
-\section faq_questions How to ....? Is there a function in the API to simply ....?
+\section faq_MIA How to ....? Is there a function in the API to simply ....?
Here is the deal. The whole SimGrid project (MSG, SURF, GRAS, ...) is
meant to be kept as simple and generic as possible. We cannot add
people have asked about it and we have given hints on how to simply do
it with MSG. Feel free to contribute...
-\subsection faq_examples I want some more complex examples!
+\subsection faq_MIA_examples I want some more complex examples!
Many people have come to ask me a more complex example and each time,
they have realized afterward that the basics were in the previous three
us if something is not clear and once again feel free to participate!
:)
-\subsection faq_examples_MIA_taskdup Missing in action: Task duplication/replication
+\subsection faq_MIA_taskdup Missing in action: Task duplication/replication
There is no task duplication in MSG. When you create a task, you can
process it or send it somewhere else. As soon as a process has sent
You could use a dictionnary (#xbt_dict_t) of dynars (#xbt_dict_t). If
you still don't see how to do it, please come back to us...
-\subsection faq_examples_MIA_asynchronous I want to do asynchronous communications.
+\subsection faq_MIA_asynchronous I want to do asynchronous communications.
Up until now, there is no asynchronous communications in MSG. However,
you can create as many process as you want so you should be able to do
process only to handle communications may be problematic in term of
performance at some point). I'll add it in the distribution asap.
-\subsection faq_examples_MIA_thread_synchronization I need to synchronize my process
+\subsection faq_MIA_thread_synchronization I need to synchronize my processes
You obviously cannot use pthread_mutexes of pthread_conds. The best
thing would be to propose similar structures. Unfortunately, we
synchronization with fake communications (using MSG_task_get(),
MSG_task_put() and MSG_task_Iprobe()).
-\subsection faq_examples_MIA_host_load Where is the get_host_load function hidden in MSG?
+\subsection faq_MIA_host_load Where is the get_host_load function hidden in MSG?
There is no such thing because its semantic wouldn't be really
clear. Of course, it is something about the amount of host throughput,
case, please detail what you mean on the mailing list, and we will extend
this FAQ section to fit your taste if possible.
-\subsection faq_examples_MIA_batch_scheduler Is there a native support for batch schedulers in SimGrid ?
+\subsection faq_MIA_batch_scheduler Is there a native support for batch schedulers in SimGrid ?
No, there is no native support for batch schedulers and none is
planned because this is a very specific need (and doing it in a
and put his code in the contrib directory of our CVS so that other can
keep working on it. You may find inspinring ideas in it.
+\subsection faq_MIA_checkpointing I need a checkpointing thing
+
+Actually, it depends on whether you want to checkpoint the simulation, or to
+simulate checkpoints.
+
+The first one could help if your simulation is a long standing process you
+want to keep running even on hardware issues. It could also help to
+<i>rewind</i> the simulation by jumping sometimes on an old checkpoint to
+cancel recent calculations.\n
+Unfortunately, such thing will probably never exist in SG. One would have to
+duplicate all data structures because doing a rewind at the simulator level
+is very very hard (not talking about the malloc free operations that might
+have been done in between). Instead, you may be interested in the Libckpt
+library (http://www.cs.utk.edu/~plank/plank/www/libckpt.html). This is the
+checkpointing solution used in the condor project, for example. It makes it
+easy to create checkpoints (at the OS level, creating something like core
+files), and rerunning them on need.
+
+If you want to simulate checkpoints instead, it means that you want the
+state of an executing task (in particular, the progress made towards
+completion) to be saved somewhere. So if a host (and the task executing on
+it) fails (cf. #MSG_HOST_FAILURE), then the task can be restarted
+from the last checkpoint.\n
+
+Actually, such a thing does not exists in SimGrid either, but it's just
+because we don't think it is fundamental and it may be done in the user code
+at relatively low cost. You could for example use a watcher that
+periodically get the remaining amount of things to do (using
+MSG_task_get_remaining_computation()), or fragment the task in smaller
+subtasks.
+
\section faq_SG Where has SG disappeared?!?
OK, it's time to explain what's happening to the SimGrid project. Let's
\section faq_troubleshooting Troubleshooting
+\subsection faq_distcheck_fails Dude! "make check" fails on my machine!
+
+Don't assume we never run this target, because we do. Really. Promise!
+
+There is several reasons which may cause the make check to fail on your
+machine:
+
+ - <b>You are using a borken compiler</b>.\n
+ The symptom may be that the "make check" fails within testsuite/gras
+ directory.\n
+ For example, the breezy release of Ubuntu comes with a prerelease of the
+ 4.0 gcc compiler. This version happens to be completely unusable, and you
+ should install a gcc-3.4 compiler and change the /usr/bin/gcc link to let
+ it point on /usr/bin/gcc-3.4.
+ - <b>You are using a borken build environment</b>\n
+ If symptom is that configure complains about gcc not being able to build
+ executables, you are probably missing the libc6-dev package. Damn Ubuntu.
+ - <b>You are using a borken libc (probably concerning the contextes)</b>.\n
+ The symptom is that the "make check" fails within the examples/msg directory.\n
+ By default, SimGrid uses something called ucontexts. This is part of the
+ libc, but it's quite undertested. For example, some (old) versions of the
+ glibc on alpha do not implement these functions, but provide the stubs
+ (which return ENOSYS: not implemented). It fools our detection mecanism
+ and leads to segfaults.\n
+ On some x86_64, the pointer to function is stored into a integer, but int
+ are 32bits only on this arch while pointers are 64bits. Our detection
+ mecanism also fails to detect the problem, which leads to segfaults.\n
+ In both cases, there is not much we can do to fix the bug. We are working
+ on a workaround for x86_64 machines, but in the meanwhile, you can
+ compile with --with-context=pthread to avoid ucontext completely. You'll
+ be a bit more limitated in the number of simulated processes you can start
+ concurently, but 5000 processes is still enough for most purposes, isn't
+ it?\n
+ This limitation is the reason why we insist on using this piece of ...
+ software even if it's so troublesome.
+ - <b>There is a bug in SimGrid we aren't aware of</b>.\n
+ If none of the above apply, please drop us a mail on the mailing list so
+ that we can check it out.
+
\subsection faq_context_1000 I want thousands of simulated processes
SimGrid can use either pthreads library or the UNIX98 contextes. On most
adapted version is picked up.
We experienced some issues with contextes on some rare systems (solaris 8
-and lower comes to mind). The main problem is that the configure script
-detect the contextes as being functional when it's not true. If you happen
-to use such a system, switch manually to the pthread version, and provide us
-with a good patch for the configure script so that it is done automatically ;)
+and lower or old alpha linuxes comes to mind). The main problem is that the
+configure script detect the contextes as being functional when it's not
+true. If you happen to use such a system, switch manually to the pthread
+version, and provide us with a good patch for the configure script so that
+it is done automatically ;)
\subsection faq_context_10000 I want hundred thousands of simulated processes