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, check the section "\ref
+faq_compil_trouble". If it does not help, you can report this problem to the
+list but, please, avoid sending a laconic mail like "There is a problem. Is it
+okay?". 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_compil_trouble ./configure fails!
+
+We now only one reason for the configure to fail:
+
+ - <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.
+
+If you experience other kind of issue, please get in touch with us. We are
+always interested in improving our portability to new systems.
+
\subsection faq_distcheck_fails Dude! "make check" fails on my machine!
Don't assume we never run this target, because we do. Really. Promise!
low, you'll get a segfault. The token ring example, which is quite simple,
runs with 40kb stacks.
+\subsection faq_longjmp longjmp madness
+
+This is when valgrind starts complaining about longjmp things, just like:
+
+\verbatim ==21434== Conditional jump or move depends on uninitialised value(s)
+==21434== at 0x420DBE5: longjmp (longjmp.c:33)
+==21434==
+==21434== Use of uninitialised value of size 4
+==21434== at 0x420DC3A: __longjmp (__longjmp.S:48)
+\endverbatim
+
+or even when it reports scary things like:
+
+\verbatim ==24023== Warning: client switching stacks? SP change: 0xBE3FF618 --> 0xBE7FF710
+x86->IR: unhandled instruction bytes: 0xF4 0xC7 0x83 0xD0
+==24023== to suppress, use: --max-stackframe=4194552 or greater
+==24023== Your program just tried to execute an instruction that Valgrind
+==24023== did not recognise. There are two possible reasons for this.
+==24023== 1. Your program has a bug and erroneously jumped to a non-code
+==24023== location. If you are running Memcheck and you just saw a
+==24023== warning about a bad jump, it's probably your program's fault.
+==24023== 2. The instruction is legitimate but Valgrind doesn't handle it,
+==24023== i.e. it's Valgrind's fault. If you think this is the case or
+==24023== you are not sure, please let us know.
+==24023== Either way, Valgrind will now raise a SIGILL signal which will
+==24023== probably kill your program.
+==24023==
+==24023== Process terminating with default action of signal 4 (SIGILL)
+==24023== Illegal opcode at address 0x420D234
+==24023== at 0x420D234: abort (abort.c:124)
+\endverbatim
+
+This is the sign that you didn't used the exception mecanism well. Most
+probably, you have a <tt>return;</tt> somewhere within a <tt>TRY{}</tt>
+block. This is <b>evil</b>, and you must not do this. Did you read the section
+about \ref XBT_ex??
+
\subsection faq_flexml_limit I get the message "surf_parse_lex: Assertion `next<limit' failed."
This is because your platform file is too big for the parser.