Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Make SIMIX_process_from_PID much faster
authorMartin Quinson <martin.quinson@loria.fr>
Thu, 19 Jan 2017 01:43:58 +0000 (02:43 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Thu, 19 Jan 2017 01:44:03 +0000 (02:44 +0100)
commitdbef7c255d1e1bebb88d6986817557648289aec8
tree02e7730f029b6d3d8602a70dd5253c006dfd8de9
parent9f0ad29ba4ccab06ecae9ea34a2e78898a7188ad
Make SIMIX_process_from_PID much faster

It was a linear search in a swag, that's now using a std::map that are
usually implemented with Red/Black trees.

This patch is more complex that it should because currently, the
model-checker needs to read the list of processes from the remote
process. We cannot do that from a std::map because it would require to
understand the private implementation of the std::map, which is
system/compiler dependent.

Instead, in MC mode, we copy the whole list of processes from the map
into a dynar that is easier to read remotely. This hack should
obviously not remain as is.

Instead, we should make sure that the MCer does not need to have the
whole list of processes (even if it could read one or two given
processes on need). It seems that this list is mainly used for the
computation of the list of enabled transitions. A promising idea is to
move that computation to the MCed that has all needed information. The
precomputed data could be made available to the MCer that would only
have to read the result, which constitutes much less info to read
remotely.
src/mc/Process.cpp
src/mc/mc_base.cpp
src/mc/mc_global.cpp
src/mc/mc_smx.cpp
src/mc/remote/Channel.cpp
src/mc/remote/Channel.hpp
src/mc/remote/Client.cpp
src/simix/ActorImpl.cpp
src/simix/smx_global.cpp
src/simix/smx_private.h