From: Gabriel Corona Date: Thu, 21 Jul 2016 11:37:45 +0000 (+0200) Subject: [mc] More documentation X-Git-Tag: v3_14~737^2~1 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/16e96f6198cfb5b9ca15fa2bb92534935d1ac682?hp=cda7600c05eaa0eb26fc870b911703f806bdaea2 [mc] More documentation --- diff --git a/doc/doxygen/community_giveback.doc b/doc/doxygen/community_giveback.doc index a1e8a61abc..7f08d50630 100644 --- a/doc/doxygen/community_giveback.doc +++ b/doc/doxygen/community_giveback.doc @@ -265,6 +265,35 @@ It is in need or an overhaul: a freed block until there is no blocks pointing to it anymore using some sort of basic garbage-collector. +@subsubsection contributing_todo_state_hashing Hasing the states + +In order to speed up the state comparison an idea was to create a hash of the +state. Only states with the same hash would need to be compared using the +state comparison algorithm. Some information should not be inclueded in the +hash in order to avoid considering different states which would otherwise +would have been considered equal. + +The stated could be indexed by their hash. Currently they are indexed +by the number of processes and the amount of heap currently allocated +(see `DerefAndCompareByNbProcessesAndUsedHeap`). + +Good candidate informations for the state hashing: + + - number of processes; + + - their backtraces (instruction addresses); + + - their current simcall numbers; + + - some simcall arguments (eg. number of elements in a waitany); + + - number of pending communications; + + - etc. + +Some basic infrastructure for this is already in the code (see `mc_hash.cpp`) +but it is currently disabled. + @subsubsection contributing_todo_mc_separation Separate the model-checker code from libsimgrid @subsubsection contributing_todo_mc_mced_interface Interface with the model-checked processes diff --git a/doc/doxygen/uhood.doc b/doc/doxygen/uhood.doc index be3ce71027..7a750df1fb 100644 --- a/doc/doxygen/uhood.doc +++ b/doc/doxygen/uhood.doc @@ -205,7 +205,7 @@ The current implementation of the model-checker uses two distinct processes: - the SimGrid model-checker (`simgrid-mc`) itself lives in the parent process; - - it spaws a child process for the SimGrid simulator/mastro and the simulated + - it spaws a child process for the SimGrid simulator/maestro and the simulated processes. They communicate using a `AF_UNIX` `SOCK_DGRAM` socket and exchange messages @@ -215,15 +215,15 @@ set to the file descriptor of this socket in the child process. The model-checker analyzes, saves and restores the state of the model-checked process using the following techniques: -* the model-checker reads and writes in the model-checked address space; +- the model-checker reads and writes in the model-checked address space; -* the model-cheker `ptrace()`s the model-checked process and is thus able to +- the model-cheker `ptrace()`s the model-checked process and is thus able to know the state of the model-checked process if it crashes; -* DWARF debug informations are used to unwind the stack and identify local +- DWARF debug informations are used to unwind the stack and identify local variables; -* a custom heap is enabled in the model-checked process which allows the model +- a custom heap is enabled in the model-checked process which allows the model checker to know which chunks are allocated and which are freed. \subsection simgrid_uhood_mc_address_space Address space