# 3.7.{0,1} -> release 3.7, 3.7.1
# 3.8.{0,1} -> release 3.8, 3.8.1
# 3.9.0 -> release 3.9
-
# 3.9.90 -> release 3.10pre1
# 3.10.0 -> release 3.10
set(SIMGRID_VERSION_MAJOR "3")
-set(SIMGRID_VERSION_MINOR "9")
-set(SIMGRID_VERSION_PATCH "90")
+set(SIMGRID_VERSION_MINOR "10")
+set(SIMGRID_VERSION_PATCH "0")
+set(SIMGRID_VERSION_EXTRA "-rc2") # Extra words to add to version string (e.g. -rc1)
+
+set(SIMGRID_VERSION_DATE "2013") # Year for copyright information
if(${SIMGRID_VERSION_PATCH} EQUAL "0")
set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}")
else()
set(release_version "${SIMGRID_VERSION_MAJOR}.${SIMGRID_VERSION_MINOR}.${SIMGRID_VERSION_PATCH}")
endif()
+
+set(SIMGRID_VERSION_STRING
+ "SimGrid version ${release_version}${SIMGRID_VERSION_EXTRA}\\nCopyright (c) ${SIMGRID_VERSION_DATE}. The Simgrid Team.")
+
set(libsimgrid_version "${release_version}")
-set(libsmpi_version "${release_version}")
-set(libSG_java_version "${release_version}")
+set(libsimgrid-java_version "${release_version}")
set(GCC_NEED_VERSION "4.0")
set(APPLE_NEED_GCC_VERSION "4.6")
-SimGrid (3.10pre1) unstable; urgency=low
+SimGrid (3.10-rc2) unstable; urgency=low
+
+ The Clean Diaper Release, a.k.a. SimGrid is leak-free.
Java:
* Reintegrate Java to the main archive as desynchronizing these
package is not acceptable anymore (Java is now considered stable)
* Add explicit synchronization facilities through semaphores
- * Bugfix: Task.setDataSize() only changed the C world, not the value
+ * Bug fix: Task.setDataSize() only changed the C world, not the value
cached in the Java world
MSG:
this part of MSG was not considered as production grade either.
* Add explicit synchronization facilities through semaphores
* Add a new function MSG_host_get_process_list()
- * Preliminary DVFS support (see /examples/msg/energy for details)
+ * Preliminary DVFS support (see examples/msg/energy/ for details)
SMPI:
* SMPI is now included directly in the libsimgrid as the windows
- The replay tool now supports traces produce either by TAU or a modified
version of MPE.
- Bug Fix: the compute part of the reduce action is now taken into account.
- * smpirun generates the hostfile if needed (with given hostcount and platform)
+ - Gatherv collective is now supported
+ - SimGrid (SMPI for now) can generate replay traces as well. Option -trace-ti
+ of smpirun outputs time independent traces for the current run. One file
+ is created per process. If too many processes are simulated, this behavior
+ can be changed to one file for all processes by using the
+ tracing/smpi/format/ti_one_file flag
+ * smpirun generates the host file if needed (with given host count and platform)
* Integration of more than 100 STAR-MPI, MPICH, OpenMPI collective algorithms
- allows to select one in particular with --cfg=smpi/coll_name:algorithm
- allows to use the decision logic of OpenMPI(1.7) or MPICH(3.0.4) by setting
Reduce
* Add a --cfg:tracing/smpi/internals option, to trace internal communications
happening inside a collective SMPI call.
- * Fix the behavior of complex data types handling
- * replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using
+ * Fix the behavior of complex data types handling.
+ * Make MPI_Wtime another synchronization point to take computations into account.
+ * Replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using
enable_smpi_MPICH3_testsuite flag in cmake. Run with ctest.
* Add all missing Fortran bindings, SMPI should work with Fortran 90
(no privatization of global variables yet)
+ * Preliminary DVFS support (see examples/smpi/energy/ for details)
Model-Checking;
* Verification of liveness properties is now available for SMPI applications
* Our own implementation of getline is renamed xbt_getline, and gets
used even if the OS provide a getline(). This should reduce the
configuration complexity by using the same code on all platforms.
- * new xbt_cfg_elm_boolean type
+ * New type: xbt_cfg_elm_boolean.
+ * Allow to use yes/no for boolean configuration options in the command line.
* Allow to disable SimGrid cleanups at exit from command line option.
There are situations where one may want a simulation to end with an exit.
Unfortunately, calling exit may cause SimGrid to segfault, which is quite
annoying when scripting around the simulator. Adding a
- --cfg=clean_atexit:yes allows to circumvent this issue.
+ --cfg=clean_atexit:no allows to circumvent this issue.
+
+ Build System:
+ * Lots of memory leaks were corrected in this release.
+ * New command line option --version, to get SimGrid version information.
+ Packagers may want to add extra words to SIMGRID_VERSION_EXTRA defined in
+ CMakeLists.txt.
+ * Supernovae builds are deprecated, and expected to be removed in the next
+ version of SimGrid.
--- Mon Oct 7 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ -- Fri Nov 8 23:54:56 CET 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
SimGrid (3.9) stable; urgency=low
TRACING:
* Transfer the tracing files into the corresponding modules.
- -- Tue Feb 5 11:31:43 CET 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ -- Tue Feb 5 11:31:43 CET 2013 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
SimGrid (3.8.1) stable; urgency=low
Turn model-checking OFF if simulation performance matters to you.
Not enabling it at runtime is not enough, disable it in cmake.
- -- Tue May 15 11:30:19 UTC 2012 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
+ -- Tue May 15 11:30:19 UTC 2012 Da SimGrid team <simgrid-devel@lists.gforge.inria.fr>
SimGrid (3.6.2) stable; urgency=low
====================
In short, the way to compile SimGrid depends on whether you are compiling a
-tar.gz archive or directly from the SVN.
+tar.gz archive or directly from the Git.
-(1) configure SimGrid (both in SVN and archives)
+(1) configure SimGrid (both in Git and archives)
$ cmake <all options> ./
Main options are:
-DCMAKE_INSTALL_PREFIX=<path>: specify where to install SimGrid
-Denable_maintainer_mode=on/off: get the maintainer files regenerated
automatically
- -Denable_compile_optimizations=on/off: compile or not with -O0 instead of -O3
- -Denable_java=on/off: enable or not binding java
- -Denable_lua=on/off: enable or not binding lua
- -Denable_ruby=on/off: enable or not binding ruby
+ -Denable_compile_optimizations=on/off: compile or not with optimizations
+ -Denable_java=on/off: enable or not the Java bindings
+ -Denable_scala=on/off: enable or not the Scala bindings
+ -Denable_lua=on/off: enable or not the lua bindings
-Denable_smpi=on/off: enable or not smpi
+ -Denable_model-checking=on/off: enable or not the model-checker
See below for other configure options which are common to any project,
not only SimGrid related.
If you want to compile the lua bindings, you have to have lua5.1 executable and
liblua5.1-dev.
-If you want to compile the ruby bindings, you have to install ruby executable
-and ruby-dev version 1.9.
-
-If you want to compile smpi, you should install f2c for use Fortran code.
+If you want to compile smpi, you should install f2c to use Fortran code.
If you want to compile the GTNetS backend, you have to have a patched version of
-GTNetS installed. The patch lives in the contrib section of the SVN.
+GTNetS installed. The patch lives in the contrib section of the Git.
\ V / __/ | \__ \ | (_) | | | | ___) || | |_| |
\_/ \___|_| |___/_|\___/|_| |_| |____(_)_|\___/
-The "to be named" release. Major changes:
+The Clean Diaper Release, a.k.a. SimGrid is leak-free. Major changes:
* Preliminary DVFS support to track the energy consumption
* Java is back in the main package (and is very stable).
* The storage sub-modules is now believed to be usable.
* SMPI is now very stable (we pass most MPICH tests).
- * Verification and model checking further improved:
+ * Lots of memory leaks were corrected in this release.
+ * Verification and model checking further improved:
liveness+SMPI works; reduction through state equality detection
Plus the usual load of bug fixes and small improvements
-
+
_ _____ ___
__ _____ _ __ ___(_) ___ _ __ |___ // _ \
\ \ / / _ \ '__/ __| |/ _ \| '_ \ |_ \ (_) |
ENABLE_TESTING()
if(NOT enable_memcheck)
- ADD_TEST(tesh-self-basic ${TESH_COMMAND} ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" basic.tesh)
+ ADD_TEST(tesh-self-basic ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/basic.tesh)
ADD_TEST(tesh-self-cd ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/cd.tesh)
- ADD_TEST(tesh-self-IO-broken-pipe ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" IO-broken-pipe.tesh)
+ ADD_TEST(tesh-self-IO-broken-pipe ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/IO-broken-pipe.tesh)
ADD_TEST(tesh-self-IO-orders ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/IO-orders.tesh)
- ADD_TEST(tesh-self-IO-bigsize ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" IO-bigsize.tesh)
- ADD_TEST(tesh-self-set-return ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-return.tesh)
- ADD_TEST(tesh-self-set-timeout ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-timeout.tesh)
- ADD_TEST(tesh-self-set-ignore-output ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-ignore-output.tesh)
+ ADD_TEST(tesh-self-IO-bigsize ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/IO-bigsize.tesh)
+ ADD_TEST(tesh-self-set-return ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-return.tesh)
+ ADD_TEST(tesh-self-set-timeout ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-timeout.tesh)
+ ADD_TEST(tesh-self-set-output-ignore ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-output-ignore.tesh)
+ ADD_TEST(tesh-self-set-output-sort ${TESH_COMMAND} ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/bin --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-output-sort.tesh)
ADD_TEST(tesh-self-catch-return ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-return.tesh)
ADD_TEST(tesh-self-catch-timeout ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-timeout.tesh)
ADD_TEST(tesh-self-catch-wrong-output ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-wrong-output.tesh)
- ADD_TEST(tesh-self-bg-basic ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" bg-basic.tesh)
- ADD_TEST(tesh-self-background ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" background.tesh)
+ ADD_TEST(tesh-self-bg-basic ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/bg-basic.tesh)
+ ADD_TEST(tesh-self-background ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/background.tesh)
if(NOT WIN32)
- ADD_TEST(tesh-self-set-signal ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" set-signal.tesh)
- ADD_TEST(tesh-self-bg-set-signal ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_HOME_DIRECTORY}/tools/tesh" bg-set-signal.tesh)
- ADD_TEST(tesh-self-catch-signal ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-signal.tesh)
+ ADD_TEST(tesh-self-set-signal ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/set-signal.tesh)
+ ADD_TEST(tesh-self-bg-set-signal ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/bg-set-signal.tesh)
+ ADD_TEST(tesh-self-catch-signal ${TESH_COMMAND} ${TESH_OPTION} --cd "${CMAKE_BINARY_DIR}/bin" ${CMAKE_HOME_DIRECTORY}/tools/tesh/catch-signal.tesh)
endif()
# BEGIN TESH TESTS
ADD_TEST(tesh-msg-pid-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/pid.tesh)
endif()
-
- IF(enable_debug) # these tests need the assertion mechanism
+ # these tests need the assertion mechanism
+ # exclude them from memcheck, as they normally die, leaving lots of unfree'd objects
+ IF(enable_debug AND NOT enable_memcheck)
ADD_TEST(tesh-simdag-parser-bogus-symmetric ${TESH_COMMAND} ${TESH_OPTION} --setenv bindir=${CMAKE_BINARY_DIR}/teshsuite/simdag/platforms --cd ${CMAKE_HOME_DIRECTORY}/teshsuite/simdag/platforms two_hosts_asymetric.tesh)
ENDIF()
ADD_TEST(msg-masterslave-mailbox-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_mailbox_crosstraffic.tesh)
ADD_TEST(msg-masterslave-cpu-ti-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --cd ${CMAKE_HOME_DIRECTORY}/examples/msg masterslave/masterslave_cpu_ti_crosstraffic.tesh)
- ADD_TEST(msg-masterslave-virtual-machines ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
+ ADD_TEST(msg-masterslave-vivaldi-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
+
+ ADD_TEST(msg-masterslave-virtual-machines-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
- ADD_TEST(msg-energy-pstates ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
- ADD_TEST(msg-energy-consumption ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
- ADD_TEST(msg-energy-concurrent-tasks ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
- ADD_TEST(msg-storage ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
-
if(CONTEXT_UCONTEXT)
ADD_TEST(msg-sendrecv-CLM03-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_CLM03.tesh)
ADD_TEST(msg-sendrecv-Vegas-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/sendrecv/sendrecv_Vegas.tesh)
ADD_TEST(msg-masterslave-mailbox-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_mailbox_crosstraffic.tesh)
ADD_TEST(msg-masterslave-cpu-ti-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --cd ${CMAKE_HOME_DIRECTORY}/examples/msg masterslave/masterslave_cpu_ti_crosstraffic.tesh)
- ADD_TEST(msg-energy-pstates-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
- ADD_TEST(msg-energy-consumption-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
- ADD_TEST(msg-energy-concurrent-tasks-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
+ ADD_TEST(msg-masterslave-vivaldi-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
+ ADD_TEST(msg-masterslave-virtual-machines-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
endif()
if(HAVE_RAWCTX)
ADD_TEST(msg-masterslave-mailbox-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_mailbox_crosstraffic.tesh)
ADD_TEST(msg-masterslave-cpu-ti-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg/masterslave --cd ${CMAKE_HOME_DIRECTORY}/examples/msg masterslave/masterslave_cpu_ti_crosstraffic.tesh)
+ ADD_TEST(msg-masterslave-vivaldi-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
+
+ ADD_TEST(msg-masterslave-virtual-machines-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv bindir=${CMAKE_BINARY_DIR}/examples/msg --cd ${CMAKE_HOME_DIRECTORY}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/cloud/masterslave_virtual_machines.tesh)
+ endif()
+
+ ADD_TEST(msg-energy-pstates-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
+ ADD_TEST(msg-energy-consumption-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
+ ADD_TEST(msg-energy-concurrent-tasks-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
+
+ if(CONTEXT_UCONTEXT)
+ ADD_TEST(msg-energy-pstates-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
+ ADD_TEST(msg-energy-consumption-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
+ ADD_TEST(msg-energy-concurrent-tasks-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
+ endif()
+
+ if(HAVE_RAWCTX)
ADD_TEST(msg-energy-pstates-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e1/pstate.tesh)
ADD_TEST(msg-energy-consumption-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e2/energy_consumption.tesh)
ADD_TEST(msg-energy-concurrent-tasks-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/energy/e3/concurrent_tasks.tesh)
-
endif()
- ADD_TEST(msg-masterslave-vivaldi-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
- ADD_TEST(msg-token-ring-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
+ ADD_TEST(msg-storage-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
+ if(CONTEXT_UCONTEXT)
+ ADD_TEST(msg-storage-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
+ endif()
if(HAVE_RAWCTX)
- ADD_TEST(msg-masterslave-vivaldi-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
- ADD_TEST(msg-token-ring-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
+ ADD_TEST(msg-storage-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/msg/storage/storage.tesh)
endif()
+
+ ADD_TEST(msg-token-ring-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
if(CONTEXT_UCONTEXT)
- ADD_TEST(msg-masterslave-vivaldi-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/masterslave/masterslave_vivaldi.tesh)
ADD_TEST(msg-token-ring-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
endif()
+ if(HAVE_RAWCTX)
+ ADD_TEST(msg-token-ring-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --setenv srcdir=${CMAKE_HOME_DIRECTORY} --cd ${CMAKE_BINARY_DIR}/examples/msg/token_ring ${CMAKE_HOME_DIRECTORY}/examples/msg/token_ring/token_ring.tesh)
+ endif()
ADD_TEST(msg-migration-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/migration/migration.tesh)
ADD_TEST(msg-ptask-thread ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:thread --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/msg --cd ${CMAKE_BINARY_DIR}/examples/msg ${CMAKE_HOME_DIRECTORY}/examples/msg/parallel_task/parallel_task.tesh)
ADD_TEST(smpi-pt2pt-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/pt2pt.tesh)
ADD_TEST(smpi-compute-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/compute.tesh)
if (NOT WIN32)
- ADD_TEST(smpi-shared-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
+ ADD_TEST(smpi-shared-ucontext ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:ucontext --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
endif()
endif()
if(HAVE_RAWCTX)
ADD_TEST(smpi-pt2pt-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/pt2pt.tesh)
ADD_TEST(smpi-compute-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/compute.tesh)
if (NOT WIN32)
- ADD_TEST(smpi-shared-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
+ ADD_TEST(smpi-shared-raw ${TESH_COMMAND} ${TESH_OPTION} --cfg contexts/factory:raw --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/shared.tesh)
endif()
endif()
+
+ ADD_TEST(smpi-energy ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/energy.tesh)
+ if(SMPI_F2C)
+ ADD_TEST(smpi-energy-f77 ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f77/energy.tesh)
+ endif()
+ if(SMPI_F90)
+ ADD_TEST(smpi-energy-f90 ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f90/energy.tesh)
+ endif()
+
if(HAVE_TRACING)
ADD_TEST(smpi-tracing-ptp ${TESH_COMMAND} ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/tracing/smpi_traced.tesh)
ADD_TEST(smpi-replay ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi --cd ${CMAKE_BINARY_DIR}/examples/smpi ${CMAKE_HOME_DIRECTORY}/examples/smpi/replay/smpi_replay.tesh)
+ ADD_TEST(smpi-replay-ti-tracing ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi --cd ${CMAKE_BINARY_DIR}/teshsuite/smpi ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/TI_output.tesh)
endif()
FOREACH (GATHER_COLL default ompi mpich ompi_basic_linear ompi_linear_sync ompi_binomial)
if(SMPI_F2C)
ADD_TEST(smpi-mpich3-thread-f77 ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f77/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f77/ -tests=testlist -execarg=--cfg=contexts/factory:thread -execarg=--cfg=contexts/stack_size:8000)
set_tests_properties(smpi-mpich3-thread-f77 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!")
- if(NOT HAVE_MC)
- ADD_TEST(smpi-mpich3-thread-f90 ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f90/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f90/ -tests=testlist -execarg=--cfg=contexts/factory:thread)
- set_tests_properties(smpi-mpich3-thread-f90 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!")
- endif()
+ endif()
+ if(SMPI_F90)
+ ADD_TEST(smpi-mpich3-thread-f90 ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f90/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f90/ -tests=testlist -execarg=--cfg=contexts/factory:thread)
+ set_tests_properties(smpi-mpich3-thread-f90 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!")
endif()
endif()
if(enable_gtnets)
include(FindGTnets)
endif()
-if(enable_smpi)
- include(FindF2c)
- SET(HAVE_SMPI 1)
-endif()
if(enable_java)
find_package(Java REQUIRED COMPONENTS Runtime Development)
find_package(JNI REQUIRED)
SET(HAVE_MC 1)
SET(MMALLOC_WANT_OVERRIDE_LEGACY 1)
include(FindLibunwind)
+ include(FindLibdw)
else()
SET(HAVE_MC 0)
SET(MMALLOC_WANT_OVERRIDE_LEGACY 0)
endif()
+if(enable_smpi)
+ include(FindF2c)
+ # FindGFortran must come after FindF2C, and after having set HAVE_MC
+ include(FindGFortran)
+ SET(HAVE_SMPI 1)
+endif()
+
#--------------------------------------------------------------------------------------------------
### Check for some architecture dependent values
CHECK_TYPE_SIZE(int SIZEOF_INT)
string(REPLACE "\n" "" GIT_DATE "${GIT_DATE}")
message(STATUS "Git date: ${GIT_DATE}")
string(REGEX REPLACE " .*" "" GIT_VERSION "${GIT_VERSION}")
- STRING(REPLACE " +0000" "" GIT_DATE "${GIT_DATE}")
- STRING(REPLACE " " "~" GIT_DATE "${GIT_DATE}")
- STRING(REPLACE ":" "-" GIT_DATE "${GIT_DATE}")
endif()
endif()
+if(release)
+ set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING}\\nRelease build")
+else()
+ set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING}\\nDevelopment build")
+endif()
+if(GIT_VERSION)
+ set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING} at commit ${GIT_VERSION}")
+endif()
+if(GIT_DATE)
+ set(SIMGRID_VERSION_STRING "${SIMGRID_VERSION_STRING} (${GIT_DATE})")
+endif()
#--------------------------------------------------------------------------------------------------
set(makecontext_CPPFLAGS_2 "")
src/smpi/smpi_c99.c
src/smpi/smpi_coll.c
src/smpi/smpi_comm.c
+ src/smpi/smpi_dvfs.c
src/smpi/smpi_global.c
src/smpi/smpi_group.c
src/smpi/smpi_mpi.c
src/instr/instr_config.c
src/instr/instr_interface.c
src/instr/instr_paje_containers.c
+ src/instr/instr_TI_trace.c
src/instr/instr_paje_trace.c
+ src/instr/instr_trace.c
src/instr/instr_paje_header.c
src/instr/instr_paje_types.c
src/instr/instr_paje_values.c
src/mc/mc_compare.c
src/mc/mc_dpor.c
src/mc/mc_global.c
+ src/mc/mc_dwarf.c
src/mc/mc_liveness.c
src/mc/mc_memory.c
src/mc/mc_private.h
examples/simdag/scheduling/CMakeLists.txt
examples/smpi/CMakeLists.txt
examples/smpi/MM/CMakeLists.txt
+ examples/smpi/energy/CMakeLists.txt
+ examples/smpi/energy/f77/CMakeLists.txt
+ examples/smpi/energy/f90/CMakeLists.txt
examples/xbt/CMakeLists.txt
)
buildtools/Cmake/MakeLib.cmake
buildtools/Cmake/MakeLibWin.cmake
buildtools/Cmake/Modules/FindF2c.cmake
+ buildtools/Cmake/Modules/FindGFortran.cmake
buildtools/Cmake/Modules/FindGTnets.cmake
buildtools/Cmake/Modules/FindGraphviz.cmake
buildtools/Cmake/Modules/FindLibunwind.cmake
+ buildtools/Cmake/Modules/FindLibdw.cmake
buildtools/Cmake/Modules/FindLua51Simgrid.cmake
buildtools/Cmake/Modules/FindNS3.cmake
buildtools/Cmake/Modules/FindRngStream.cmake
endif()
if(enable_java)
- install(TARGETS SG_java
+ install(TARGETS simgrid-java
DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/)
install(FILES ${SIMGRID_JAR}
DESTINATION $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/java/)
endif()
if(enable_compile_warnings)
- set(warnCFLAGS "-fno-common -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wclobbered -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror -Wno-error=clobbered ")
- if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
- set(warnCFLAGS "${warnCFLAGS}-Wno-error=unused-but-set-variable ")
- endif()
- if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
- string(REPLACE "-Wclobbered " "" warnCFLAGS "${warnCFLAGS}")
+ set(warnCFLAGS "-fno-common -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wcomment -Wformat -Wwrite-strings -Wno-unused-function -Wno-unused-parameter -Wno-strict-aliasing -Wno-format-nonliteral -Werror ")
+ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(warnCFLAGS "${warnCFLAGS}-Wclobbered -Wno-error=clobbered ")
+ if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
+ set(warnCFLAGS "${warnCFLAGS}-Wno-error=unused-but-set-variable ")
+ endif()
endif()
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wall") # FIXME: Q&D hack
if(enable_compile_optimizations)
set(optCFLAGS "-O3 -finline-functions -funroll-loops -fno-strict-aliasing ")
- if(WIN32)
- if (COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.7")
- # On windows, we need 4.8 or higher to enable lto because of http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
- set(optCFLAGS "${optCFLAGS} -flto ")
- endif()
- else()
- # On non-windows, 4.6 is enough for that
- if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
- set(optCFLAGS "${optCFLAGS} -flto ")
+ if(CMAKE_COMPILER_IS_GNUCC)
+ if(WIN32)
+ if (COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.7")
+ # On windows, we need 4.8 or higher to enable lto because of http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50293
+ set(optCFLAGS "${optCFLAGS} -flto ")
+ endif()
+ else()
+ # On non-windows, 4.6 is enough for that
+ if(COMPILER_C_VERSION_MAJOR_MINOR STRGREATER "4.5")
+ set(optCFLAGS "${optCFLAGS} -flto ")
+ endif()
endif()
endif()
else()
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/MM)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/energy)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f77)
+add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f90)
add_subdirectory(${CMAKE_HOME_DIRECTORY}/examples/xbt)
include(UseJava)
-# Rules to build libSG_java
+# Rules to build libsimgrid-java
#
-add_library(SG_java SHARED ${JMSG_C_SRC})
-set_target_properties(SG_java PROPERTIES VERSION ${libSG_java_version})
+add_library(simgrid-java SHARED ${JMSG_C_SRC})
+set_target_properties(simgrid-java PROPERTIES VERSION ${libsimgrid-java_version})
if (CMAKE_VERSION VERSION_LESS "2.8.8")
include_directories(${JNI_INCLUDE_DIRS})
message(WARNING "[Java] Try to workaround missing feature in older CMake. You should better update CMake to version 2.8.8 or above.")
get_directory_property(CHECK_INCLUDES INCLUDE_DIRECTORIES)
else()
- get_target_property(COMMON_INCLUDES SG_java INCLUDE_DIRECTORIES)
+ get_target_property(COMMON_INCLUDES simgrid-java INCLUDE_DIRECTORIES)
if (COMMON_INCLUDES)
- set_target_properties(SG_java PROPERTIES
+ set_target_properties(simgrid-java PROPERTIES
INCLUDE_DIRECTORIES "${COMMON_INCLUDES};${JNI_INCLUDE_DIRS}")
else()
- set_target_properties(SG_java PROPERTIES
+ set_target_properties(simgrid-java PROPERTIES
INCLUDE_DIRECTORIES "${JNI_INCLUDE_DIRS}")
endif()
- add_dependencies(SG_java simgrid)
+ add_dependencies(simgrid-java simgrid)
- get_target_property(CHECK_INCLUDES SG_java INCLUDE_DIRECTORIES)
+ get_target_property(CHECK_INCLUDES simgrid-java INCLUDE_DIRECTORIES)
endif()
-message("-- [Java] SG_java includes: ${CHECK_INCLUDES}")
+message("-- [Java] simgrid-java includes: ${CHECK_INCLUDES}")
-target_link_libraries(SG_java simgrid)
+target_link_libraries(simgrid-java simgrid)
message(FATAL_ERROR "Java JVM needs to be 32 bits to be able to run with Simgrid on Windows for now")
endif()
- set_target_properties(SG_java PROPERTIES
+ set_target_properties(simgrid-java PROPERTIES
LINK_FLAGS "-Wl,--subsystem,windows,--kill-at"
PREFIX "")
find_path(PEXPORTS_PATH NAMES pexports.exe PATHS NO_DEFAULT_PATHS)
message(STATUS "pexports: ${PEXPORTS_PATH}")
if(PEXPORTS_PATH)
- add_custom_command(TARGET SG_java POST_BUILD
- COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/SG_java.dll > ${CMAKE_BINARY_DIR}/lib/SG_java.def)
+ add_custom_command(TARGET simgrid-java POST_BUILD
+ COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/simgrid-java.dll > ${CMAKE_BINARY_DIR}/lib/simgrid-java.def)
endif(PEXPORTS_PATH)
endif()
set(MANIFEST_FILE "${CMAKE_HOME_DIRECTORY}/src/bindings/java/MANIFEST.MF")
set(LIBSIMGRID_SO
libsimgrid${CMAKE_SHARED_LIBRARY_SUFFIX})
-set(LIBSG_JAVA_SO
- ${CMAKE_SHARED_LIBRARY_PREFIX}SG_java${CMAKE_SHARED_LIBRARY_SUFFIX})
+set(LIBSIMGRID_JAVA_SO
+ ${CMAKE_SHARED_LIBRARY_PREFIX}simgrid-java${CMAKE_SHARED_LIBRARY_SUFFIX})
## Name of the "NATIVE" folder in simgrid.jar
##
## Here is how to build simgrid.jar
##
-set(CMAKE_JAVA_TARGET_OUTPUT_NAME simgrid)
-add_jar(SG_java_pre_jar ${JMSG_JAVA_SRC})
+if(CMAKE_VERSION VERSION_LESS "2.8.12")
+ set(CMAKE_JAVA_TARGET_OUTPUT_NAME simgrid)
+ add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC})
+else()
+ add_jar(simgrid-java_pre_jar ${JMSG_JAVA_SRC} OUTPUT_NAME simgrid)
+endif()
add_custom_command(
COMMENT "Finalize simgrid.jar..."
OUTPUT ${SIMGRID_JAR}_finalized
- DEPENDS simgrid SG_java SG_java_pre_jar
+ DEPENDS simgrid simgrid-java simgrid-java_pre_jar
${SIMGRID_JAR} ${MANIFEST_FILE}
${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO}
- ${CMAKE_BINARY_DIR}/lib/${LIBSG_JAVA_SO}
+ ${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}
${CMAKE_HOME_DIRECTORY}/COPYING
${CMAKE_HOME_DIRECTORY}/ChangeLog
${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java
COMMAND ${CMAKE_COMMAND} -E make_directory "${JSG_BUNDLE}"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_SO}" "${JSG_BUNDLE}"
COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSIMGRID_SO}"
- COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSG_JAVA_SO}" "${JSG_BUNDLE}"
- COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSG_JAVA_SO}"
+ COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_BINARY_DIR}/lib/${LIBSIMGRID_JAVA_SO}" "${JSG_BUNDLE}"
+ COMMAND ${STRIP_COMMAND} -S "${JSG_BUNDLE}/${LIBSIMGRID_JAVA_SO}"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/COPYING" "${JSG_BUNDLE}"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/ChangeLog" "${JSG_BUNDLE}"
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_HOME_DIRECTORY}/ChangeLog.SimGrid-java" "${JSG_BUNDLE}"
COMMAND ${CMAKE_COMMAND} -E remove ${SIMGRID_JAR}_finalized
COMMAND ${CMAKE_COMMAND} -E touch ${SIMGRID_JAR}_finalized
)
-add_custom_target(SG_java_jar ALL DEPENDS ${SIMGRID_JAR}_finalized)
+add_custom_target(simgrid-java_jar ALL DEPENDS ${SIMGRID_JAR}_finalized)
# (that includes FindLibunwind.cmake), so simply load it now.
SET(SIMGRID_DEP "${SIMGRID_DEP} -lunwind")
+
+ # Same for libdw
+ SET(SIMGRID_DEP "${SIMGRID_DEP} -ldw")
# This supposes that the host machine is either an AMD or a X86.
# This is deeply wrong, and should be fixed by manually loading -lunwind-PLAT (FIXME)
if(PROCESSOR_x86_64)
if(F2C_EXE)
message(STATUS "Found F2C: ${F2C_EXE}")
else()
- message(STATUS "Looking for bin f2c - not found")
+ message(STATUS "Looking for bin f2c - not found (http://www.netlib.org/f2c/)")
endif()
mark_as_advanced(HAVE_F2C_H)
mark_as_advanced(F2C_EXE)
mark_as_advanced(HAVE_F2C_LIB)
-if(HAVE_F2C_H)
- include_directories(${HAVE_F2C_H})
-else()
- message("-- Fortran for smpi is not installed (http://www.netlib.org/f2c/).")
+if(HAVE_F2C_LIB)
+ get_filename_component(F2C_LIBRARY_PATH "${HAVE_F2C_LIB}" PATH)
+ file(TO_NATIVE_PATH "${F2C_LIBRARY_PATH}" F2C_LIBRARY_PATH)
endif()
-
#Some old versions of 64 bits systems seem to have a different size between C and Fortran Datatypes
#Deactivate F2C with these versions, in order to avoid breaking test cases in legacy systems (as Fedora 13)
set(COMPILER_OK 1)
if(HAVE_F2C_H AND F2C_EXE AND HAVE_F2C_LIB AND COMPILER_OK)
set(SMPI_F2C 1)
endif()
+
+if(SMPI_F2C)
+ include_directories(${HAVE_F2C_H})
+else()
+ message("-- Fortran 77 support for smpi is disabled.")
+endif()
--- /dev/null
+find_program(GFORTRAN_EXE
+ NAME gfortran
+ PATH_SUFFIXES bin/
+ PATHS
+ /opt
+ /opt/local
+ /opt/csw
+ /sw
+ /usr
+ )
+
+mark_as_advanced(GFORTRAN_EXE)
+
+message(STATUS "Looking for bin gfortran")
+if(GFORTRAN_EXE)
+ message(STATUS "Found gfortran: ${GFORTRAN_EXE}")
+else()
+ message(STATUS "Looking for bin gfortran - not found")
+endif()
+
+set(SMPI_F90 0)
+if(GFORTRAN_EXE)
+ if(NOT SMPI_F2C)
+ message("-- Fortran 90 support for smpi also needs f2c.")
+ elseif(HAVE_MC)
+ message("-- Fortran 90 support for smpi is currently not compatible with model checking.")
+ else()
+ set(SMPI_F90 1)
+ endif()
+endif()
+
+if(NOT SMPI_F90)
+ message("-- Fortran 90 support for smpi is disabled.")
+endif()
--- /dev/null
+find_library(PATH_LIBDW_LIB
+ NAMES dw
+ HINTS
+ $ENV{SIMGRID_LIBDW_LIBRARY_PATH}
+ $ENV{LD_LIBRARY_PATH}
+ $ENV{LIBDW_LIBRARY_PATH}
+ PATH_SUFFIXES lib/ GnuWin32/lib
+ PATHS
+ /opt
+ /opt/local
+ /opt/csw
+ /sw
+ /usr)
+
+
+find_path(PATH_LIBDW_H "elfutils/libdw.h"
+ HINTS
+ $ENV{SIMGRID_LIBDW_LIBRARY_PATH}
+ $ENV{LD_LIBRARY_PATH}
+ $ENV{LIBDW_LIBRARY_PATH}
+ PATH_SUFFIXES include/ GnuWin32/include
+ PATHS
+ /opt
+ /opt/local
+ /opt/csw
+ /sw
+ /usr)
+
+message(STATUS "Looking for libdw.h")
+if(PATH_LIBDW_H)
+ message(STATUS "Looking for libdw.h - found")
+else()
+ message(STATUS "Looking for libdw.h - not found")
+endif()
+
+message(STATUS "Looking for libdw")
+if(PATH_LIBDW_LIB)
+ message(STATUS "Looking for libdw - found")
+else()
+ message(STATUS "Looking for libdw - not found")
+endif()
+
+if(PATH_LIBDW_LIB AND PATH_LIBDW_H)
+ string(REGEX REPLACE "/libdw.*[.]${LIB_EXE}$" "" PATH_LIBDW_LIB "${PATH_LIBDW_LIB}")
+ string(REGEX REPLACE "/libdw.h" "" PATH_LIBDW_H "${PATH_LIBDW_H}")
+
+ include_directories(${PATH_LIBDW_H})
+ link_directories(${PATH_LIBDW_LIB})
+
+else()
+ message(FATAL_ERROR "Please either install the libdw-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
+endif()
+
+mark_as_advanced(PATH_LIBDW_H)
+mark_as_advanced(PATH_LIBDW_LIB)
message(FATAL_ERROR "Please either install the libunwind7-dev package (or equivalent) or turn off the model-checking option of SimGrid.")
endif()
-mark_as_advanced(PATH_LIBUNWIND_H)
-mark_as_advanced(PATH_LIBUNWIND_LIB)
\ No newline at end of file
+mark_as_advanced(PATH_LIBDW_H)
+mark_as_advanced(PATH_LIBDW_LIB)
message(" BUILDNAME ...........: ${BUILDNAME}")
message(" SITE ................: ${SITE}")
if(release)
- message(" Release .............: simgrid-${release_version} (release build)")
+ message(" Release .............: simgrid-${release_version}${SIMGRID_VERSION_EXTRA} (release build)")
else()
- message(" Release .............: simgrid-${release_version} (development build)")
+ message(" Release .............: simgrid-${release_version}${SIMGRID_VERSION_EXTRA} (development build)")
endif()
message("")
message(" Compiler: C .........: ${CMAKE_C_COMPILER} (${CMAKE_C_COMPILER_ID})")
message(" Compile Smpi ........: ${HAVE_SMPI}")
message(" Compile MPI testsuite: ${enable_smpi_MPICH3_testsuite}")
message(" Compile Smpi f77 ....: ${SMPI_F2C}")
+message(" Compile Smpi f90 ....: ${SMPI_F90}")
message(" Compile Static ......: ${enable_lib_static}")
message("")
message(" Maintainer mode .....: ${enable_maintainer_mode}")
my $path = $0;
my $OS;
my $enable_coverage=0;
+my $sort_prefix = 19;
my $tesh_file;
my $tesh_name;
my $error=0;
$ENV{"PRINTF_EXPONENT_DIGITS"} = "2";
}
-
-sub trim($)
-{
- my $string = shift;
- $string =~ s/^\s+//;
- $string =~ s/\s+$//;
- return $string;
-}
-
-# make sure we received a tesh file
-scalar @ARGV > 0 || die "Usage:\n tesh [*options*] *tesh_file*\n";
-
#Add current directory to path
$ENV{PATH} = "$ENV{PATH}:.";
my @got;
while(defined(my $got=<got>)) {
$got =~ s/\r//g;
- $got =~ s/^( )*//g;
chomp $got;
- $got=trim($got);
- if( $got ne ""){
- if (!($enable_coverage and $got=~ /^profiling:/)){
- push @got, "$got";
- }
- }
+ if (!($enable_coverage and $got=~ /^profiling:/)){
+ push @got, $got;
+ }
}
if ($cmd{'sort'}){
sub mysort{
- $a cmp $b
+ substr($a, 0, $sort_prefix) cmp substr($b, 0, $sort_prefix)
}
- use sort qw(defaults _quicksort); # force quicksort
+ use sort 'stable';
@got = sort mysort @got;
+ while (@got and $got[0] eq "") {
+ shift @got;
+ }
+
#also resort the other one, as perl sort is not the same as the C one used to generate teshes
if(defined($cmd{'out'})){
@{$cmd{'out'}}=sort mysort @{$cmd{'out'}};
+ while (@{$cmd{'out'}} and ${$cmd{'out'}}[0] eq "") {
+ shift @{$cmd{'out'}};
+ }
}
}
}
# Push delayed commands on empty lines
- unless ($line =~ m/^(.).(.*)$/) {
+ unless ($line =~ m/^(.)(.*)$/) {
if (defined($cmd{'cmd'})) {
exec_cmd(\%cmd);
%cmd = ();
}
my ($cmd,$arg) = ($1,$2);
+ $arg =~ s/^ //g;
$arg =~ s/\r//g;
$arg =~ s/\\\\/\\/g;
# handle the commands
if ($cmd =~ /^#/) { #comment
} elsif ($cmd eq '>'){ #expected result line
print "[TESH/debug] push expected result\n" if $opts{'debug'};
- $arg=trim($arg);
- if($arg ne ""){
push @{$cmd{'out'}}, $arg;
- }
} elsif ($cmd eq '<') { # provided input
print "[TESH/debug] push provided input\n" if $opts{'debug'};
%cmd = ();
}
$cmd{'sort'} = 1;
+ if ($line =~ /^!\s*output sort\s+(\d+)/) {
+ $sort_prefix = $1;
+ }
}
elsif($line =~ /^!\s*output ignore/){ #output ignore
if (defined($cmd{'cmd'})) {
$line =~ s/\r//g;
setenv_cmd($line);
}
- elsif($line =~ /^!\s*include/){ #output sort
+ elsif($line =~ /^!\s*include/){ #include
if (defined($cmd{'cmd'})) {
exec_cmd(\%cmd);
%cmd = ();
### Rebuild the supernovae source files
if (enable_supernovae) # I need supernovae
+ message(WARNING
+"==============================================================================\n"
+"WARNING\n"
+"Supernovae builds are deprecated, and expected to be removed in the next version of SimGrid.\n"
+"If you want this feature to be kept, please tell us at <simgrid-user@lists.gforge.inria.fr>.\n"
+"===============================================================================
+")
+
# supernovae files are generated. I promise
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/src/supernovae_sg.c
PROPERTIES GENERATED true)
# install java library and examples\r
CreateDirectory $INSTDIR\examples\simgrid-java\r
setOutPath $INSTDIR\lib\r
- file /nonfatal "lib\SG_java.dll"\r
- file /nonfatal "lib\SG_java.def"\r
+ file /nonfatal "lib\simgrid-java.dll"\r
+ file /nonfatal "lib\simgrid-java.def"\r
file /nonfatal "simgrid.jar"\r
setOutPath $INSTDIR\examples\simgrid-java\r
file /nonfatal /r ".\examples\"\r
WORKSPACE=$1
build_mode=$2
+# usage: die status message...
+die () {
+ local status=${1:-1}
+ shift
+ [ $# -gt 0 ] || set -- "Error - Halting"
+ echo "$@" >&2
+ exit $status
+}
rm -rf $WORKSPACE/build
if test "$(uname -o)" = "Msys"
then
-
- cmake -G "MSYS Makefiles" $WORKSPACE
#$NUMBER_OF_PROCESSORS should be already set on win
if [ -z "$NUMBER_OF_PROCESSORS" ]; then
NUMBER_OF_PROCESSORS=1
fi
- if [ $? -ne 0 ] ; then
- echo "Failed to do the first cmake - Halting"
- exit 1
- fi
-
- make dist
-
- if [ $? -ne 0 ] ; then
- echo "Failed to build dist - Halting"
- exit 2
- fi
-
- cmake -G "MSYS Makefiles" -Denable_java=ON -Denable_model-checking=OFF -Denable_lua=OFF -Denable_compile_optimizations=ON -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_compile_warnings=OFF .
-
- if [ $? -ne 0 ] ; then
- echo "Failed to perform the Cmake for $build_mode - Halting"
- exit 5
- fi
+ cmake -G "MSYS Makefiles" $WORKSPACE || die 1 "Failed to do the first cmake - Halting"
- make -j$NUMBER_OF_PROCESSORS
+ make dist || die 2 "Failed to build dist - Halting"
- if [ $? -ne 0 ] ; then
- echo "Build failure - Halting"
- exit 5
- fi
+ cmake -G "MSYS Makefiles" -Denable_java=ON -Denable_model-checking=OFF -Denable_lua=OFF -Denable_compile_optimizations=ON -Denable_smpi=ON -Denable_smpi_MPICH3_testsuite=ON -Denable_compile_warnings=OFF . \
+ || die 5 "Failed to perform the Cmake for $build_mode - Halting"
- make nsis
+ make -j$NUMBER_OF_PROCESSORS || die 5 "Build failure - Halting"
- if [ $? -ne 0 ] ; then
- echo "Failure while generating the Windows executable - Halting"
- exit 6
- fi
+ make nsis || die 6 "Failure while generating the Windows executable - Halting"
else
- NUMBER_OF_PROCESSORS=0
# Linux:
cpuinfo_file="/proc/cpuinfo"
- if [ -f "${cpuinfo_file}" ]; then
- NUMBER_OF_PROCESSORS=$(grep -c "processor.: " ${cpuinfo_file})
- fi
- # grep returns 0 or cpuinfo not found
- if [Â $NUMBER_OF_PROCESSORS = 0 ]; then
- NUMBER_OF_PROCESSORS=1
- fi
-
- cmake $WORKSPACE
+ NUMBER_OF_PROCESSORS=$(lscpu -p 2>/dev/null | grep -c '^[^#]') || \
+ NUMBER_OF_PROCESSORS=$(grep -c "^processor[[:space:]]*:" ${cpuinfo_file} 2>/dev/null)
+ [ "0$NUMBER_OF_PROCESSORS" -gt 0 ] || NUMBER_OF_PROCESSORS=1
- if [ $? -ne 0 ] ; then
- echo "Failed to do the first cmake - Halting"
- exit 1
- fi
+ cmake $WORKSPACE || die 1 "Failed to do the first cmake - Halting"
rm Simgrid*.tar.gz
- make dist
-
- if [ $? -ne 0 ] ; then
- echo "Failed to build dist - Halting"
- exit 2
- fi
-
- tar xzf `cat VERSION`.tar.gz
-
- if [ $? -ne 0 ] ; then
- echo "Failed to extract the generated tgz - Halting"
- exit 3
- fi
+ make dist || die 2 "Failed to build dist - Halting"
- cd `cat VERSION`
+ tar xzf `cat VERSION`.tar.gz || die 3 "Failed to extract the generated tgz - Halting"
- if [ $? -ne 0 ] ; then
- echo "Path `cat VERSION` cannot be found - Halting"
- exit 4
- fi
+ cd `cat VERSION` || die 4 "Path `cat VERSION` cannot be found - Halting"
if [ "$build_mode" = "Debug" ]
then
cmake -Denable_lua=OFF -Denable_java=ON -Denable_tracing=ON -Denable_smpi=ON -Denable_compile_optimizations=OFF -Denable_compile_warnings=ON -Denable_lib_static=OFF -Denable_model-checking=OFF -Denable_latency_bound_tracking=OFF -Denable_gtnets=OFF -Denable_jedule=OFF -Denable_mallocators=OFF -Denable_memcheck=ON .
fi
- if [ $? -ne 0 ] ; then
- echo "Failed to perform the Cmake for $build_mode - Halting"
- exit 5
- fi
-
- make -j$NUMBER_OF_PROCESSORS
-
- if [ $? -ne 0 ] ; then
- echo "Build failure - Halting"
- exit 6
- fi
+ [ $? -eq 0 ] || die 5 "Failed to perform the Cmake for $build_mode - Halting"
+ make -j$NUMBER_OF_PROCESSORS || die 6 "Build failure - Halting"
fi
-
echo "running tests with $NUMBER_OF_PROCESSORS processors"
ctest -T test --no-compress-output --timeout 100 -j$NUMBER_OF_PROCESSORS || true
\subsubsection bindings_binding_java_use How to use Simgrid-java
To execute the examples you need to add the path where you installed
-the generated `libSG_java` and `libsimgrid` libraries
+the generated `libsimgrid-java` and `libsimgrid` libraries
into the `LD_LIBRARY_PATH`.
Be careful on Mac, this variable is called `DYLD_LIBRARY_PATH` and not
$ export SIMGRID_ROOT="$HOME/Install/simgrid/" # change it to the path where you installed the SimGrid library
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$SIMGRID_ROOT/lib
$ cd examples
-$ java -cp .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
+$ java -classpath .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
~~~~
If you want to make these settings permanent even after a reboot, you
simulation with the correct JVM. The selected context factory gets
displayed automatically.
~~~~{.sh}
-export LD_LIBRARY_PATH=/path/to/simgrid.so:/path/to/libSG_java.so
+export LD_LIBRARY_PATH=/path/to/simgrid.so:/path/to/libsimgrid-java.so
cd examples
-$PATH_TO_COROUTINE_JVM/java -cp .:../simgrid.jar masterslave.Masterslave masterslave/ masterslaveDeployment.xml platform.xml
+$PATH_TO_COROUTINE_JVM/java -classpath .:../simgrid.jar masterslave.Masterslave masterslave/ masterslaveDeployment.xml platform.xml
~~~~
Note that you may have to adjust the "coro.stacksPerThread"
configuration option to run large simulations. The default is 100 and
you want to increase it to run more processes.
~~~~{.sh}
-$ $PATH_TO_COROUTINE_JVM/java -Dcoro.stacksPerThread=$STACKS_NUMBER -cp .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
+$ $PATH_TO_COROUTINE_JVM/java -Dcoro.stacksPerThread=$STACKS_NUMBER -classpath .:../simgrid.jar basic/BasicTest platform.xml basic/basicDeployment.xml
~~~~
If you reach the point where the creation of new simulated processes
version numbers that were used.
- The "make distcheck" target works (testing that every files needed
to build and install are included in the archive)
- - The URL provided to download in the examples of
- doc/doxygen/install.doc is accurate. Note that updating the
- version number is not enough as it only impacts the name that will
- be given to the downloaded file. The real identifier is the number
- before, between /s. This makes this part very difficult to
- generate automatically.
- Tests
- All tests pass on a reasonable amount of platforms (typically,
everything on cdash)
For a really fancy output, you should use [viva/triva][fn:1]:
~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:1 \
- --cfg=tracing/uncategorized:1 --cfg=viva/uncategorized:uncat.plist
+./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+ --cfg=tracing/uncategorized:yes --cfg=viva/uncategorized:uncat.plist
LANG=C ; viva simgrid.trace uncat.plist
~~~~
[Paje][fn:5] trace:
~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:1 \
- --cfg=tracing/msg/process:1
+./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+ --cfg=tracing/msg/process:yes
LANG=C ; Paje simgrid.trace
~~~~
Alternatively, you can use [vite][fn:6].
~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:1 \
- --cfg=tracing/msg/process:1 --cfg=tracing/basic:1
+./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+ --cfg=tracing/msg/process:yes --cfg=tracing/basic:yes
vite simgrid.trace
~~~~
The outcome can then be visualized as follows:
~~~~{.sh}
-./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:1\
- --cfg=tracing/categorized:1 --cfg=viva/categorized:viva_cat.plist
+./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes\
+ --cfg=tracing/categorized:yes --cfg=viva/categorized:viva_cat.plist
LANG=C; viva simgrid.trace viva_cat.plist
~~~~
Gantt-chart visualization may help:
~~~~{.sh}
-./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:1 \
- --cfg=tracing/msg/process:1
+./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes \
+ --cfg=tracing/msg/process:yes
LANG=C; Paje simgrid.trace
~~~~
It is possible to specify a timing gap between consecutive emission on
the same network card through the \b network/sender_gap item. This
is still under investigation as of writting, and the default value is
-to wait 0 seconds between emissions (no gap applied).
+to wait 10 microseconds (1e-5 seconds) between emissions.
\subsubsection options_model_network_asyncsend Simulating asyncronous send
- Any SimGrid-based simulator (MSG, SimDag, SMPI, ...) and raw traces:
\verbatim
---cfg=tracing:1 --cfg=tracing/uncategorized:1 --cfg=triva/uncategorized:uncat.plist
+--cfg=tracing:yes --cfg=tracing/uncategorized:yes --cfg=triva/uncategorized:uncat.plist
\endverbatim
The first parameter activates the tracing subsystem, the second
tells it to trace host and link utilization (without any
- MSG or SimDag-based simulator and categorized traces (you need to declare categories and classify your tasks according to them)
\verbatim
---cfg=tracing:1 --cfg=tracing/categorized:1 --cfg=triva/categorized:cat.plist
+--cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=triva/categorized:cat.plist
\endverbatim
The first parameter activates the tracing subsystem, the second
tells it to trace host and link categorized utilization and the
smpirun -trace ...
\endverbatim
The <i>-trace</i> parameter for the smpirun script runs the
-simulation with --cfg=tracing:1 and --cfg=tracing/smpi:1. Check the
+simulation with --cfg=tracing:yes and --cfg=tracing/smpi:yes. Check the
smpirun's <i>-help</i> parameter for additional tracing options.
Sometimes you might want to put additional information on the trace to
Safe switch. It activates (or deactivates) the tracing system.
No other tracing options take effect if this one is not activated.
\verbatim
---cfg=tracing:1
+--cfg=tracing:yes
\endverbatim
\li <b>\c
It activates the categorized resource utilization tracing. It should
be enabled if tracing categories are used by this simulator.
\verbatim
---cfg=tracing/categorized:1
+--cfg=tracing/categorized:yes
\endverbatim
\li <b>\c
this simulator do not use tracing categories and resource use have to be
traced.
\verbatim
---cfg=tracing/uncategorized:1
+--cfg=tracing/uncategorized:yes
\endverbatim
\li <b>\c
This option let the user tell the tracing system to use only the routes
that are composed with just one link.
\verbatim
---cfg=tracing/onelink_only:1
+--cfg=tracing/onelink_only:yes
\endverbatim
\li <b>\c
visualizations. Every MPI function (implemented by SMPI) is transformed in a
state, and point-to-point communications can be analyzed with arrows.
\verbatim
---cfg=tracing/smpi:1
+--cfg=tracing/smpi:yes
\endverbatim
\li <b>\c
This option only has effect if this simulator is SMPI-based. The processes
are grouped by the hosts where they were executed.
\verbatim
---cfg=tracing/smpi/group:1
+--cfg=tracing/smpi/group:yes
\endverbatim
\li <b>\c
This option only has effect if this simulator is SMPI-based. The parts external
to SMPI are also outputted to the trace. Provides better way to analyze the data automatically.
\verbatim
---cfg=tracing/smpi/computing:1
+--cfg=tracing/smpi/computing:yes
\endverbatim
\li <b>\c
This option only has effect if this simulator is SMPI-based. Display internal communications
happening during a collective MPI call.
\verbatim
---cfg=tracing/smpi/internals:1
+--cfg=tracing/smpi/internals:yes
\endverbatim
\li <b>\c
This option only has effect if this simulator is SMPI-based. Display the sizes of the messages
exchanged in the trace, both in the links and on the states. For collective, size means the global size of data sent by the process in general.
\verbatim
---cfg=tracing/smpi/display_sizes:1
+--cfg=tracing/smpi/display_sizes:yes
\endverbatim
\li <b>\c
behavior of all categorized MSG processes, grouping them by hosts. This option
can be used to track process location if this simulator has process migration.
\verbatim
---cfg=tracing/msg/process:1
+--cfg=tracing/msg/process:yes
\endverbatim
\li <b>\c
impacted if this option is activated, but you are sure to get a trace
file with events sorted.
\verbatim
---cfg=tracing/buffer:1
+--cfg=tracing/buffer:yes
\endverbatim
\li <b>\c
register the topology within an AS. Routes among AS continue to be
traced as usual.
\verbatim
---cfg=tracing/onelink_only:1
+--cfg=tracing/onelink_only:yes
\endverbatim
\li <b>\c
can be used with simulators that have a different notion of time
(different from the simulated time).
\verbatim
---cfg=tracing/disable_destroy:1
+--cfg=tracing/disable_destroy:yes
\endverbatim
\li <b>\c
trace. Keep in mind that the trace might be incomplete, without all the
information that would be registered otherwise.
\verbatim
---cfg=tracing/basic:1
+--cfg=tracing/basic:yes
\endverbatim
\li <b>\c
simulator):
\verbatim
./your_simulator \
- --cfg=tracing:1 \
- --cfg=tracing/uncategorized:1 \
+ --cfg=tracing:yes \
+ --cfg=tracing/uncategorized:yes \
--cfg=tracing/filename:mytracefile.trace \
--cfg=viva/uncategorized:uncat.plist
\endverbatim
recompiling, run your simulator with the following parameters:
\verbatim
./your_simulator \
- --cfg=tracing:1 \
- --cfg=tracing/categorized:1 \
+ --cfg=tracing:yes \
+ --cfg=tracing/categorized:yes \
--cfg=tracing/filename:mytracefile.trace \
--cfg=viva/categorized:cat.plist
\endverbatim
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
! timeout 30
-$ java -cp ${classpath:=.} async/AsyncTest ${srcdir:=.}/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} async/AsyncTest ${srcdir:=.}/platform.xml ${srcdir:=.}/async/asyncDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (10:async.Slave@Robert) Receiving on 'slave_8'
> [ 0.000000] (11:async.Slave@Sirois) Receiving on 'slave_9'
> [ 0.000000] (12:async.Slave@Monique) Receiving on 'slave_10'
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
! timeout 15
-$ java -cp ${classpath:=.} bittorrent/Bittorrent ${srcdir:=.}/platform.xml ${srcdir:=.}/bittorrent/bittorrent.xml
+$ java -classpath ${classpath:=.} bittorrent/Bittorrent ${srcdir:=.}/platform.xml ${srcdir:=.}/bittorrent/bittorrent.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [5000.832370] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Boivin:bittorrent.Peer:(2) 0.000000] [jmsg/INFO] Hi, I'm joining the network with id 2
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} chord/Chord ${srcdir:=.}/platform.xml ${srcdir:=.}/chord/chord.xml
+$ java -classpath ${classpath:=.} chord/Chord ${srcdir:=.}/platform.xml ${srcdir:=.}/chord/chord.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [652.540924] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Boivin:chord.Node:(7) 0.000000] [jmsg/INFO] Joining the ring with id 8 knowing node 1
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} cloud/Cloud ${srcdir:=.}/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} cloud/Cloud ${srcdir:=.}/platform.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (10:Slave 8@Jean_Yves) Receiving on slave_8
> [ 0.000000] (11:Slave 9@Fafard) Receiving on slave_9
> [ 0.000000] (1:Master@Jacquelin) Launched 10 VMs
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
! timeout 15
-$ java -cp ${classpath:=.} commTime/CommTimeTest ${srcdir:=.}/platform.xml ${srcdir:=.}/commTime/commTimeDeployment.xml
+$ java -classpath ${classpath:=.} commTime/CommTimeTest ${srcdir:=.}/platform.xml ${srcdir:=.}/commTime/commTimeDeployment.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [7016.452828] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Bellemarre:commTime.Slave:(15) 0.000000] [jmsg/INFO] Receiving on 'slave_13'
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} kademlia/Kademlia ${srcdir:=.}/platform.xml ${srcdir:=.}/kademlia/kademlia.xml
+$ java -classpath ${classpath:=.} kademlia/Kademlia ${srcdir:=.}/platform.xml ${srcdir:=.}/kademlia/kademlia.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [900.000000] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Boivin:kademlia.Node:(2) 0.000000] [jmsg/INFO] Hi, I'm going to join the network with the id 1!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
+$ java -classpath ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [alice:process2:(2) 0.000000] [jmsg/INFO] Slave Hello!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
+$ java -classpath ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [alice:slave:(2) 0.000000] [jmsg/INFO] Slave Hello!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:masterslave.Master@Jacquelin) Hello! Got 7 slaves and 5 tasks to process
> [ 0.000000] (2:masterslave.Forwarder@Jackson) Receiving on 'slave_0'
> [ 0.000000] (3:masterslave.Forwarder@Casavant) Receiving on 'slave_1'
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} migration/Migration ${srcdir:=.}/platform.xml ${srcdir:=.}/migration/migrationDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} migration/Migration ${srcdir:=.}/platform.xml ${srcdir:=.}/migration/migrationDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:migration.Emigrant@Jacquelin) I'll look for a new job on another machine where the grass is greener.
> [ 0.000000] (1:migration.Emigrant@Boivin) Yeah, found something to do
> [ 1.000000] (2:migration.Policeman@Boivin) Wait a bit before migrating the emigrant.
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} mutualExclusion/MutexCentral ${srcdir:=.}/mutualExclusion/ring3.xml ${srcdir:=.}/mutualExclusion/mutex_centralized_deployment.xml
+$ java -classpath ${classpath:=.} mutualExclusion/MutexCentral ${srcdir:=.}/mutualExclusion/ring3.xml ${srcdir:=.}/mutualExclusion/mutex_centralized_deployment.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [0.007806] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Host 0:mutualExclusion.Coordinator:(1) 0.001301] [jmsg/INFO] Got a request from mutualExclusion.Node. Queue empty: grant it
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} pingPong/PingPongTest ${srcdir:=.}/platform.xml ${srcdir:=.}/pingPong/pingPongDeployment.xml
+$ java -classpath ${classpath:=.} pingPong/PingPongTest ${srcdir:=.}/platform.xml ${srcdir:=.}/pingPong/pingPongDeployment.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [1.048882] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Boivin:pingPong.Receiver:(2) 0.000000] [jmsg/INFO] hello!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} priority/Priority ${srcdir:=.}/platform.xml ${srcdir:=.}/priority/priorityDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} priority/Priority ${srcdir:=.}/platform.xml ${srcdir:=.}/priority/priorityDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 1.0
> [ 0.000000] (2:priority.Test@Fafard) Hello! Running a task of size 7.6296E7 with priority 2.0
> [ 0.833332] (2:priority.Test@Fafard) Goodbye now!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
#! tesh
-$ java -cp ${classpath:=.} startKillTime/StartKillTime ${srcdir:=.}/platform.xml ${srcdir:=.}/startKillTime/deployment_start_kill.xml
+$ java -classpath ${classpath:=.} startKillTime/StartKillTime ${srcdir:=.}/platform.xml ${srcdir:=.}/startKillTime/deployment_start_kill.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [Jacquelin:startKillTime.Master:(1) 0.000000] [jmsg/INFO] Hello!
> [Boivin:startKillTime.Slave:(2) 1.000000] [jmsg/INFO] Hello!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
#! tesh
! output sort
-$ java -cp ${classpath:=.} suspend/Suspend ${srcdir:=.}/platform.xml ${srcdir:=.}/suspend/suspendDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} suspend/Suspend ${srcdir:=.}/platform.xml ${srcdir:=.}/suspend/suspendDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:suspend.DreamMaster@Jacquelin) Let's create a lazy guy.
> [ 0.000000] (1:suspend.DreamMaster@Jacquelin) Let's wait a little bit...
> [ 0.000000] (2:Lazy@Jacquelin) Nobody's watching me ? Let's go to sleep.
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${JAVA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${JAVA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} tracing/TracingTest ${srcdir:=.}/platform.xml ${srcdir:=.}/tracing/tracingPingPongDeployment.xml --cfg=tracing:1 --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:1
+$ java -classpath ${classpath:=.} tracing/TracingTest ${srcdir:=.}/platform.xml ${srcdir:=.}/tracing/tracingPingPongDeployment.xml --cfg=tracing:yes --cfg=tracing/filename:simulation.trace --cfg=tracing/platform:yes
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'simulation.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
> [4.474401] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [Boivin:tracing.Receiver:(2) 0.000000] [jmsg/INFO] hello!
> [Boivin:tracing.Receiver:(2) 0.000000] [jmsg/INFO] try to get a task
# A little tesh file testing most MPI-related actions
-$ ../actions --cfg=tracing:1 --cfg=tracing/smpi:1 --log=surf_config.thresh:critical --cfg=network/model:SMPI platform.xml deploy_MPI_4.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
+$ ../actions --cfg=tracing:yes --cfg=tracing/smpi:yes --log=surf_config.thresh:critical --cfg=network/model:SMPI platform.xml deploy_MPI_4.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.095453] [actions/INFO] Simulation time 0.095453
static int periodic_check_predecessor_delay = 120;
static int periodic_lookup_delay = 10;
+static const double sleep_delay = 4.9999;
+
extern long int smx_total_comms;
/*
double next_check_predecessor_date = init_time + periodic_check_predecessor_delay;
double next_lookup_date = init_time + periodic_lookup_delay;
- #ifdef HAVE_MC
int listen = 0;
int no_op = 0;
int sub_protocol = 0;
- #endif
xbt_assert(argc == 3 || argc == 5, "Wrong number of arguments for this node");
// no task was received: make some periodic calls
-#ifdef HAVE_MC
if(MC_is_active()){
if(!MC_visited_reduction() && no_op){
MC_cut();
random_lookup(&node);
listen = 1;
}else{
- MSG_process_sleep(5);
+ MSG_process_sleep(sleep_delay);
if(!MC_visited_reduction())
no_op = 1;
}
next_lookup_date = MSG_get_clock() + periodic_lookup_delay;
}else {
// nothing to do: sleep for a while
- MSG_process_sleep(5);
+ MSG_process_sleep(sleep_delay);
}
}
-#else
- if (MSG_get_clock() >= next_stabilize_date) {
- stabilize(&node);
- next_stabilize_date = MSG_get_clock() + periodic_stabilize_delay;
- }else if (MSG_get_clock() >= next_fix_fingers_date) {
- fix_fingers(&node);
- next_fix_fingers_date = MSG_get_clock() + periodic_fix_fingers_delay;
- }else if (MSG_get_clock() >= next_check_predecessor_date) {
- check_predecessor(&node);
- next_check_predecessor_date = MSG_get_clock() + periodic_check_predecessor_delay;
- }else if (MSG_get_clock() >= next_lookup_date) {
- random_lookup(&node);
- next_lookup_date = MSG_get_clock() + periodic_lookup_delay;
- }else {
- // nothing to do: sleep for a while
- MSG_process_sleep(5);
- }
-#endif
} else {
// a transfer has occurred
}
if (node.comm_receive) {
+ /* handle last task if any */
+ if (MSG_comm_wait(node.comm_receive, 0) == MSG_OK)
+ task_free(task_received);
MSG_comm_destroy(node.comm_receive);
node.comm_receive = NULL;
}
MSG_task_dsend(task, task_data->answer_to, task_free);
break;
+ default:
+ THROW_IMPOSSIBLE;
}
}
stop = 1;
MSG_comm_destroy(node->comm_receive);
node->comm_receive = NULL;
- task_free(task_sent);
}
else {
msg_task_t task_received = MSG_comm_get_task(node->comm_receive);
> [ 0.000000] (8:node@Jacquelin) 17 | 1
> [ 0.000000] (8:node@Jacquelin) 33 | 1
> [ 0.000000] (8:node@Jacquelin) Predecessor: -1
-> [ 6.274448] (1:node@Gatien) My finger table:
-> [ 6.274448] (1:node@Gatien) Start | Succ
-> [ 6.274448] (1:node@Gatien) 49 | 1
-> [ 6.274448] (1:node@Gatien) 50 | 48
-> [ 6.274448] (1:node@Gatien) 52 | 48
-> [ 6.274448] (1:node@Gatien) 56 | 48
-> [ 6.274448] (1:node@Gatien) 0 | 48
-> [ 6.274448] (1:node@Gatien) 16 | 48
-> [ 6.274448] (1:node@Gatien) Predecessor: -1
-> [ 10.888356] (2:node@McGee) My finger table:
-> [ 10.888356] (2:node@McGee) Start | Succ
-> [ 10.888356] (2:node@McGee) 43 | 1
-> [ 10.888356] (2:node@McGee) 44 | 42
-> [ 10.888356] (2:node@McGee) 46 | 42
-> [ 10.888356] (2:node@McGee) 50 | 42
-> [ 10.888356] (2:node@McGee) 58 | 42
-> [ 10.888356] (2:node@McGee) 10 | 42
-> [ 10.888356] (2:node@McGee) Predecessor: -1
-> [ 18.043675] (3:node@iRMX) My finger table:
-> [ 18.043675] (3:node@iRMX) Start | Succ
-> [ 18.043675] (3:node@iRMX) 39 | 1
-> [ 18.043675] (3:node@iRMX) 40 | 38
-> [ 18.043675] (3:node@iRMX) 42 | 38
-> [ 18.043675] (3:node@iRMX) 46 | 38
-> [ 18.043675] (3:node@iRMX) 54 | 38
-> [ 18.043675] (3:node@iRMX) 6 | 38
-> [ 18.043675] (3:node@iRMX) Predecessor: -1
-> [ 20.005344] (4:node@Geoff) My finger table:
-> [ 20.005344] (4:node@Geoff) Start | Succ
-> [ 20.005344] (4:node@Geoff) 33 | 1
-> [ 20.005344] (4:node@Geoff) 34 | 32
-> [ 20.005344] (4:node@Geoff) 36 | 32
-> [ 20.005344] (4:node@Geoff) 40 | 32
-> [ 20.005344] (4:node@Geoff) 48 | 32
-> [ 20.005344] (4:node@Geoff) 0 | 32
-> [ 20.005344] (4:node@Geoff) Predecessor: -1
-> [ 26.812601] (5:node@TeX) My finger table:
-> [ 26.812601] (5:node@TeX) Start | Succ
-> [ 26.812601] (5:node@TeX) 22 | 1
-> [ 26.812601] (5:node@TeX) 23 | 21
-> [ 26.812601] (5:node@TeX) 25 | 21
-> [ 26.812601] (5:node@TeX) 29 | 21
-> [ 26.812601] (5:node@TeX) 37 | 21
-> [ 26.812601] (5:node@TeX) 53 | 21
-> [ 26.812601] (5:node@TeX) Predecessor: -1
-> [ 30.925129] (6:node@Jean_Yves) My finger table:
-> [ 30.925129] (6:node@Jean_Yves) Start | Succ
-> [ 30.925129] (6:node@Jean_Yves) 15 | 1
-> [ 30.925129] (6:node@Jean_Yves) 16 | 14
-> [ 30.925129] (6:node@Jean_Yves) 18 | 14
-> [ 30.925129] (6:node@Jean_Yves) 22 | 14
-> [ 30.925129] (6:node@Jean_Yves) 30 | 14
-> [ 30.925129] (6:node@Jean_Yves) 46 | 14
-> [ 30.925129] (6:node@Jean_Yves) Predecessor: -1
-> [ 36.048885] (7:node@Boivin) My finger table:
-> [ 36.048885] (7:node@Boivin) Start | Succ
-> [ 36.048885] (7:node@Boivin) 9 | 1
-> [ 36.048885] (7:node@Boivin) 10 | 8
-> [ 36.048885] (7:node@Boivin) 12 | 8
-> [ 36.048885] (7:node@Boivin) 16 | 8
-> [ 36.048885] (7:node@Boivin) 24 | 8
-> [ 36.048885] (7:node@Boivin) 40 | 8
-> [ 36.048885] (7:node@Boivin) Predecessor: -1
-> [ 75.000000] (8:node@Jacquelin) My finger table:
-> [ 75.000000] (8:node@Jacquelin) Start | Succ
-> [ 75.000000] (8:node@Jacquelin) 2 | 1
-> [ 75.000000] (8:node@Jacquelin) 3 | 1
-> [ 75.000000] (8:node@Jacquelin) 5 | 1
-> [ 75.000000] (8:node@Jacquelin) 9 | 1
-> [ 75.000000] (8:node@Jacquelin) 17 | 1
-> [ 75.000000] (8:node@Jacquelin) 33 | 1
-> [ 75.000000] (8:node@Jacquelin) Predecessor: 32
-> [ 80.000000] (8:node@Jacquelin) My finger table:
-> [ 80.000000] (8:node@Jacquelin) Start | Succ
-> [ 80.000000] (8:node@Jacquelin) 2 | 1
-> [ 80.000000] (8:node@Jacquelin) 3 | 1
-> [ 80.000000] (8:node@Jacquelin) 5 | 1
-> [ 80.000000] (8:node@Jacquelin) 9 | 1
-> [ 80.000000] (8:node@Jacquelin) 17 | 1
-> [ 80.000000] (8:node@Jacquelin) 33 | 1
-> [ 80.000000] (8:node@Jacquelin) Predecessor: 42
-> [ 81.274448] (8:node@Jacquelin) My finger table:
-> [ 81.274448] (8:node@Jacquelin) Start | Succ
-> [ 81.274448] (8:node@Jacquelin) 2 | 42
-> [ 81.274448] (8:node@Jacquelin) 3 | 1
-> [ 81.274448] (8:node@Jacquelin) 5 | 1
-> [ 81.274448] (8:node@Jacquelin) 9 | 1
-> [ 81.274448] (8:node@Jacquelin) 17 | 1
-> [ 81.274448] (8:node@Jacquelin) 33 | 1
-> [ 81.274448] (8:node@Jacquelin) Predecessor: 48
-> [116.655198] (2:node@McGee) My finger table:
-> [116.655198] (2:node@McGee) Start | Succ
-> [116.655198] (2:node@McGee) 43 | 48
-> [116.655198] (2:node@McGee) 44 | 42
-> [116.655198] (2:node@McGee) 46 | 42
-> [116.655198] (2:node@McGee) 50 | 42
-> [116.655198] (2:node@McGee) 58 | 42
-> [116.655198] (2:node@McGee) 10 | 42
-> [116.655198] (2:node@McGee) Predecessor: 1
-> [141.383330] (1:node@Gatien) My finger table:
-> [141.383330] (1:node@Gatien) Start | Succ
-> [141.383330] (1:node@Gatien) 49 | 1
-> [141.383330] (1:node@Gatien) 50 | 48
-> [141.383330] (1:node@Gatien) 52 | 48
-> [141.383330] (1:node@Gatien) 56 | 48
-> [141.383330] (1:node@Gatien) 0 | 48
-> [141.383330] (1:node@Gatien) 16 | 48
-> [141.383330] (1:node@Gatien) Predecessor: 42
-> [193.730889] (2:node@McGee) My finger table:
-> [193.730889] (2:node@McGee) Start | Succ
-> [193.730889] (2:node@McGee) 43 | 48
-> [193.730889] (2:node@McGee) 44 | 42
-> [193.730889] (2:node@McGee) 46 | 42
-> [193.730889] (2:node@McGee) 50 | 42
-> [193.730889] (2:node@McGee) 58 | 42
-> [193.730889] (2:node@McGee) 10 | 42
-> [193.730889] (2:node@McGee) Predecessor: 8
-> [242.028885] (1:node@Gatien) My finger table:
-> [242.028885] (1:node@Gatien) Start | Succ
-> [242.028885] (1:node@Gatien) 49 | 1
-> [242.028885] (1:node@Gatien) 50 | 1
-> [242.028885] (1:node@Gatien) 52 | 48
-> [242.028885] (1:node@Gatien) 56 | 48
-> [242.028885] (1:node@Gatien) 0 | 48
-> [242.028885] (1:node@Gatien) 16 | 48
-> [242.028885] (1:node@Gatien) Predecessor: 42
-> [242.939649] (2:node@McGee) My finger table:
-> [242.939649] (2:node@McGee) Start | Succ
-> [242.939649] (2:node@McGee) 43 | 48
-> [242.939649] (2:node@McGee) 44 | 42
-> [242.939649] (2:node@McGee) 46 | 42
-> [242.939649] (2:node@McGee) 50 | 42
-> [242.939649] (2:node@McGee) 58 | 42
-> [242.939649] (2:node@McGee) 10 | 42
-> [242.939649] (2:node@McGee) Predecessor: 38
-> [246.478479] (2:node@McGee) My finger table:
-> [246.478479] (2:node@McGee) Start | Succ
-> [246.478479] (2:node@McGee) 43 | 48
-> [246.478479] (2:node@McGee) 44 | 48
-> [246.478479] (2:node@McGee) 46 | 42
-> [246.478479] (2:node@McGee) 50 | 42
-> [246.478479] (2:node@McGee) 58 | 42
-> [246.478479] (2:node@McGee) 10 | 42
-> [246.478479] (2:node@McGee) Predecessor: 38
-> [248.768494] (7:node@Boivin) My finger table:
-> [248.768494] (7:node@Boivin) Start | Succ
-> [248.768494] (7:node@Boivin) 9 | 38
-> [248.768494] (7:node@Boivin) 10 | 38
-> [248.768494] (7:node@Boivin) 12 | 8
-> [248.768494] (7:node@Boivin) 16 | 8
-> [248.768494] (7:node@Boivin) 24 | 8
-> [248.768494] (7:node@Boivin) 40 | 8
-> [248.768494] (7:node@Boivin) Predecessor: -1
-> [255.578776] (4:node@Geoff) My finger table:
-> [255.578776] (4:node@Geoff) Start | Succ
-> [255.578776] (4:node@Geoff) 33 | 42
-> [255.578776] (4:node@Geoff) 34 | 42
-> [255.578776] (4:node@Geoff) 36 | 32
-> [255.578776] (4:node@Geoff) 40 | 32
-> [255.578776] (4:node@Geoff) 48 | 32
-> [255.578776] (4:node@Geoff) 0 | 32
-> [255.578776] (4:node@Geoff) Predecessor: -1
-> [268.081369] (8:node@Jacquelin) My finger table:
-> [268.081369] (8:node@Jacquelin) Start | Succ
-> [268.081369] (8:node@Jacquelin) 2 | 8
-> [268.081369] (8:node@Jacquelin) 3 | 8
-> [268.081369] (8:node@Jacquelin) 5 | 1
-> [268.081369] (8:node@Jacquelin) 9 | 1
-> [268.081369] (8:node@Jacquelin) 17 | 1
-> [268.081369] (8:node@Jacquelin) 33 | 1
-> [268.081369] (8:node@Jacquelin) Predecessor: 48
-> [269.130254] (7:node@Boivin) My finger table:
-> [269.130254] (7:node@Boivin) Start | Succ
-> [269.130254] (7:node@Boivin) 9 | 38
-> [269.130254] (7:node@Boivin) 10 | 38
-> [269.130254] (7:node@Boivin) 12 | 8
-> [269.130254] (7:node@Boivin) 16 | 8
-> [269.130254] (7:node@Boivin) 24 | 8
-> [269.130254] (7:node@Boivin) 40 | 8
-> [269.130254] (7:node@Boivin) Predecessor: 1
-> [272.405875] (3:node@iRMX) My finger table:
-> [272.405875] (3:node@iRMX) Start | Succ
-> [272.405875] (3:node@iRMX) 39 | 42
-> [272.405875] (3:node@iRMX) 40 | 42
-> [272.405875] (3:node@iRMX) 42 | 38
-> [272.405875] (3:node@iRMX) 46 | 38
-> [272.405875] (3:node@iRMX) 54 | 38
-> [272.405875] (3:node@iRMX) 6 | 38
-> [272.405875] (3:node@iRMX) Predecessor: -1
-> [284.571172] (5:node@TeX) My finger table:
-> [284.571172] (5:node@TeX) Start | Succ
-> [284.571172] (5:node@TeX) 22 | 38
-> [284.571172] (5:node@TeX) 23 | 38
-> [284.571172] (5:node@TeX) 25 | 21
-> [284.571172] (5:node@TeX) 29 | 21
-> [284.571172] (5:node@TeX) 37 | 21
-> [284.571172] (5:node@TeX) 53 | 21
-> [284.571172] (5:node@TeX) Predecessor: -1
-> [289.289425] (3:node@iRMX) My finger table:
-> [289.289425] (3:node@iRMX) Start | Succ
-> [289.289425] (3:node@iRMX) 39 | 42
-> [289.289425] (3:node@iRMX) 40 | 42
-> [289.289425] (3:node@iRMX) 42 | 38
-> [289.289425] (3:node@iRMX) 46 | 38
-> [289.289425] (3:node@iRMX) 54 | 38
-> [289.289425] (3:node@iRMX) 6 | 38
-> [289.289425] (3:node@iRMX) Predecessor: 21
-> [305.097098] (6:node@Jean_Yves) My finger table:
-> [305.097098] (6:node@Jean_Yves) Start | Succ
-> [305.097098] (6:node@Jean_Yves) 15 | 21
-> [305.097098] (6:node@Jean_Yves) 16 | 21
-> [305.097098] (6:node@Jean_Yves) 18 | 14
-> [305.097098] (6:node@Jean_Yves) 22 | 14
-> [305.097098] (6:node@Jean_Yves) 30 | 14
-> [305.097098] (6:node@Jean_Yves) 46 | 14
-> [305.097098] (6:node@Jean_Yves) Predecessor: -1
-> [313.745063] (3:node@iRMX) My finger table:
-> [313.745063] (3:node@iRMX) Start | Succ
-> [313.745063] (3:node@iRMX) 39 | 42
-> [313.745063] (3:node@iRMX) 40 | 42
-> [313.745063] (3:node@iRMX) 42 | 38
-> [313.745063] (3:node@iRMX) 46 | 38
-> [313.745063] (3:node@iRMX) 54 | 38
-> [313.745063] (3:node@iRMX) 6 | 38
-> [313.745063] (3:node@iRMX) Predecessor: 32
-> [338.951991] (5:node@TeX) My finger table:
-> [338.951991] (5:node@TeX) Start | Succ
-> [338.951991] (5:node@TeX) 22 | 32
-> [338.951991] (5:node@TeX) 23 | 38
-> [338.951991] (5:node@TeX) 25 | 21
-> [338.951991] (5:node@TeX) 29 | 21
-> [338.951991] (5:node@TeX) 37 | 21
-> [338.951991] (5:node@TeX) 53 | 21
-> [338.951991] (5:node@TeX) Predecessor: 14
-> [359.463119] (4:node@Geoff) My finger table:
-> [359.463119] (4:node@Geoff) Start | Succ
-> [359.463119] (4:node@Geoff) 33 | 38
-> [359.463119] (4:node@Geoff) 34 | 42
-> [359.463119] (4:node@Geoff) 36 | 32
-> [359.463119] (4:node@Geoff) 40 | 32
-> [359.463119] (4:node@Geoff) 48 | 32
-> [359.463119] (4:node@Geoff) 0 | 32
-> [359.463119] (4:node@Geoff) Predecessor: 21
-> [365.649491] (1:node@Gatien) My finger table:
-> [365.649491] (1:node@Gatien) Start | Succ
-> [365.649491] (1:node@Gatien) 49 | 1
-> [365.649491] (1:node@Gatien) 50 | 1
-> [365.649491] (1:node@Gatien) 52 | 1
-> [365.649491] (1:node@Gatien) 56 | 48
-> [365.649491] (1:node@Gatien) 0 | 48
-> [365.649491] (1:node@Gatien) 16 | 48
-> [365.649491] (1:node@Gatien) Predecessor: 42
-> [367.870511] (2:node@McGee) My finger table:
-> [367.870511] (2:node@McGee) Start | Succ
-> [367.870511] (2:node@McGee) 43 | 48
-> [367.870511] (2:node@McGee) 44 | 48
-> [367.870511] (2:node@McGee) 46 | 48
-> [367.870511] (2:node@McGee) 50 | 42
-> [367.870511] (2:node@McGee) 58 | 42
-> [367.870511] (2:node@McGee) 10 | 42
-> [367.870511] (2:node@McGee) Predecessor: 38
-> [371.550204] (7:node@Boivin) My finger table:
-> [371.550204] (7:node@Boivin) Start | Succ
-> [371.550204] (7:node@Boivin) 9 | 21
-> [371.550204] (7:node@Boivin) 10 | 38
-> [371.550204] (7:node@Boivin) 12 | 21
-> [371.550204] (7:node@Boivin) 16 | 8
-> [371.550204] (7:node@Boivin) 24 | 8
-> [371.550204] (7:node@Boivin) 40 | 8
-> [371.550204] (7:node@Boivin) Predecessor: 1
-> [388.564124] (4:node@Geoff) My finger table:
-> [388.564124] (4:node@Geoff) Start | Succ
-> [388.564124] (4:node@Geoff) 33 | 38
-> [388.564124] (4:node@Geoff) 34 | 42
-> [388.564124] (4:node@Geoff) 36 | 38
-> [388.564124] (4:node@Geoff) 40 | 32
-> [388.564124] (4:node@Geoff) 48 | 32
-> [388.564124] (4:node@Geoff) 0 | 32
-> [388.564124] (4:node@Geoff) Predecessor: 21
-> [389.021710] (8:node@Jacquelin) My finger table:
-> [389.021710] (8:node@Jacquelin) Start | Succ
-> [389.021710] (8:node@Jacquelin) 2 | 8
-> [389.021710] (8:node@Jacquelin) 3 | 8
-> [389.021710] (8:node@Jacquelin) 5 | 8
-> [389.021710] (8:node@Jacquelin) 9 | 1
-> [389.021710] (8:node@Jacquelin) 17 | 1
-> [389.021710] (8:node@Jacquelin) 33 | 1
-> [389.021710] (8:node@Jacquelin) Predecessor: 48
-> [393.088734] (3:node@iRMX) My finger table:
-> [393.088734] (3:node@iRMX) Start | Succ
-> [393.088734] (3:node@iRMX) 39 | 42
-> [393.088734] (3:node@iRMX) 40 | 42
-> [393.088734] (3:node@iRMX) 42 | 42
-> [393.088734] (3:node@iRMX) 46 | 38
-> [393.088734] (3:node@iRMX) 54 | 38
-> [393.088734] (3:node@iRMX) 6 | 38
-> [393.088734] (3:node@iRMX) Predecessor: 32
-> [412.961674] (5:node@TeX) My finger table:
-> [412.961674] (5:node@TeX) Start | Succ
-> [412.961674] (5:node@TeX) 22 | 32
-> [412.961674] (5:node@TeX) 23 | 38
-> [412.961674] (5:node@TeX) 25 | 32
-> [412.961674] (5:node@TeX) 29 | 21
-> [412.961674] (5:node@TeX) 37 | 21
-> [412.961674] (5:node@TeX) 53 | 21
-> [412.961674] (5:node@TeX) Predecessor: 14
-> [434.596478] (6:node@Jean_Yves) My finger table:
-> [434.596478] (6:node@Jean_Yves) Start | Succ
-> [434.596478] (6:node@Jean_Yves) 15 | 21
-> [434.596478] (6:node@Jean_Yves) 16 | 21
-> [434.596478] (6:node@Jean_Yves) 18 | 14
-> [434.596478] (6:node@Jean_Yves) 22 | 14
-> [434.596478] (6:node@Jean_Yves) 30 | 14
-> [434.596478] (6:node@Jean_Yves) 46 | 14
-> [434.596478] (6:node@Jean_Yves) Predecessor: 8
-> [443.806924] (6:node@Jean_Yves) My finger table:
-> [443.806924] (6:node@Jean_Yves) Start | Succ
-> [443.806924] (6:node@Jean_Yves) 15 | 21
-> [443.806924] (6:node@Jean_Yves) 16 | 21
-> [443.806924] (6:node@Jean_Yves) 18 | 21
-> [443.806924] (6:node@Jean_Yves) 22 | 14
-> [443.806924] (6:node@Jean_Yves) 30 | 14
-> [443.806924] (6:node@Jean_Yves) 46 | 14
-> [443.806924] (6:node@Jean_Yves) Predecessor: 8
-> [488.763595] (1:node@Gatien) My finger table:
-> [488.763595] (1:node@Gatien) Start | Succ
-> [488.763595] (1:node@Gatien) 49 | 1
-> [488.763595] (1:node@Gatien) 50 | 1
-> [488.763595] (1:node@Gatien) 52 | 1
-> [488.763595] (1:node@Gatien) 56 | 1
-> [488.763595] (1:node@Gatien) 0 | 48
-> [488.763595] (1:node@Gatien) 16 | 48
-> [488.763595] (1:node@Gatien) Predecessor: 42
-> [502.910439] (2:node@McGee) My finger table:
-> [502.910439] (2:node@McGee) Start | Succ
-> [502.910439] (2:node@McGee) 43 | 48
-> [502.910439] (2:node@McGee) 44 | 48
-> [502.910439] (2:node@McGee) 46 | 48
-> [502.910439] (2:node@McGee) 50 | 1
-> [502.910439] (2:node@McGee) 58 | 42
-> [502.910439] (2:node@McGee) 10 | 42
-> [502.910439] (2:node@McGee) Predecessor: 38
-> [511.133077] (8:node@Jacquelin) My finger table:
-> [511.133077] (8:node@Jacquelin) Start | Succ
-> [511.133077] (8:node@Jacquelin) 2 | 8
-> [511.133077] (8:node@Jacquelin) 3 | 8
-> [511.133077] (8:node@Jacquelin) 5 | 8
-> [511.133077] (8:node@Jacquelin) 9 | 14
-> [511.133077] (8:node@Jacquelin) 17 | 1
-> [511.133077] (8:node@Jacquelin) 33 | 1
-> [511.133077] (8:node@Jacquelin) Predecessor: 48
-> [528.169747] (7:node@Boivin) My finger table:
-> [528.169747] (7:node@Boivin) Start | Succ
-> [528.169747] (7:node@Boivin) 9 | 14
-> [528.169747] (7:node@Boivin) 10 | 38
-> [528.169747] (7:node@Boivin) 12 | 21
-> [528.169747] (7:node@Boivin) 16 | 21
-> [528.169747] (7:node@Boivin) 24 | 8
-> [528.169747] (7:node@Boivin) 40 | 8
-> [528.169747] (7:node@Boivin) Predecessor: 1
-> [538.778175] (3:node@iRMX) My finger table:
-> [538.778175] (3:node@iRMX) Start | Succ
-> [538.778175] (3:node@iRMX) 39 | 42
-> [538.778175] (3:node@iRMX) 40 | 42
-> [538.778175] (3:node@iRMX) 42 | 42
-> [538.778175] (3:node@iRMX) 46 | 48
-> [538.778175] (3:node@iRMX) 54 | 38
-> [538.778175] (3:node@iRMX) 6 | 38
-> [538.778175] (3:node@iRMX) Predecessor: 32
-> [561.853791] (5:node@TeX) My finger table:
-> [561.853791] (5:node@TeX) Start | Succ
-> [561.853791] (5:node@TeX) 22 | 32
-> [561.853791] (5:node@TeX) 23 | 38
-> [561.853791] (5:node@TeX) 25 | 32
-> [561.853791] (5:node@TeX) 29 | 32
-> [561.853791] (5:node@TeX) 37 | 21
-> [561.853791] (5:node@TeX) 53 | 21
-> [561.853791] (5:node@TeX) Predecessor: 14
-> [564.892126] (4:node@Geoff) My finger table:
-> [564.892126] (4:node@Geoff) Start | Succ
-> [564.892126] (4:node@Geoff) 33 | 38
-> [564.892126] (4:node@Geoff) 34 | 42
-> [564.892126] (4:node@Geoff) 36 | 38
-> [564.892126] (4:node@Geoff) 40 | 42
-> [564.892126] (4:node@Geoff) 48 | 32
-> [564.892126] (4:node@Geoff) 0 | 32
-> [564.892126] (4:node@Geoff) Predecessor: 21
-> [580.440450] (6:node@Jean_Yves) My finger table:
-> [580.440450] (6:node@Jean_Yves) Start | Succ
-> [580.440450] (6:node@Jean_Yves) 15 | 21
-> [580.440450] (6:node@Jean_Yves) 16 | 21
-> [580.440450] (6:node@Jean_Yves) 18 | 21
-> [580.440450] (6:node@Jean_Yves) 22 | 32
-> [580.440450] (6:node@Jean_Yves) 30 | 14
-> [580.440450] (6:node@Jean_Yves) 46 | 14
-> [580.440450] (6:node@Jean_Yves) Predecessor: 8
-> [805.312574] (0:@) Messages created: 789
-> [805.312574] (0:@) Simulated time: 805.313
+> [ 6.274348] (1:node@Gatien) My finger table:
+> [ 6.274348] (1:node@Gatien) Start | Succ
+> [ 6.274348] (1:node@Gatien) 49 | 1
+> [ 6.274348] (1:node@Gatien) 50 | 48
+> [ 6.274348] (1:node@Gatien) 52 | 48
+> [ 6.274348] (1:node@Gatien) 56 | 48
+> [ 6.274348] (1:node@Gatien) 0 | 48
+> [ 6.274348] (1:node@Gatien) 16 | 48
+> [ 6.274348] (1:node@Gatien) Predecessor: -1
+> [ 10.888156] (2:node@McGee) My finger table:
+> [ 10.888156] (2:node@McGee) Start | Succ
+> [ 10.888156] (2:node@McGee) 43 | 1
+> [ 10.888156] (2:node@McGee) 44 | 42
+> [ 10.888156] (2:node@McGee) 46 | 42
+> [ 10.888156] (2:node@McGee) 50 | 42
+> [ 10.888156] (2:node@McGee) 58 | 42
+> [ 10.888156] (2:node@McGee) 10 | 42
+> [ 10.888156] (2:node@McGee) Predecessor: -1
+> [ 18.043375] (3:node@iRMX) My finger table:
+> [ 18.043375] (3:node@iRMX) Start | Succ
+> [ 18.043375] (3:node@iRMX) 39 | 1
+> [ 18.043375] (3:node@iRMX) 40 | 38
+> [ 18.043375] (3:node@iRMX) 42 | 38
+> [ 18.043375] (3:node@iRMX) 46 | 38
+> [ 18.043375] (3:node@iRMX) 54 | 38
+> [ 18.043375] (3:node@iRMX) 6 | 38
+> [ 18.043375] (3:node@iRMX) Predecessor: -1
+> [ 20.004944] (4:node@Geoff) My finger table:
+> [ 20.004944] (4:node@Geoff) Start | Succ
+> [ 20.004944] (4:node@Geoff) 33 | 1
+> [ 20.004944] (4:node@Geoff) 34 | 32
+> [ 20.004944] (4:node@Geoff) 36 | 32
+> [ 20.004944] (4:node@Geoff) 40 | 32
+> [ 20.004944] (4:node@Geoff) 48 | 32
+> [ 20.004944] (4:node@Geoff) 0 | 32
+> [ 20.004944] (4:node@Geoff) Predecessor: -1
+> [ 26.812101] (5:node@TeX) My finger table:
+> [ 26.812101] (5:node@TeX) Start | Succ
+> [ 26.812101] (5:node@TeX) 22 | 1
+> [ 26.812101] (5:node@TeX) 23 | 21
+> [ 26.812101] (5:node@TeX) 25 | 21
+> [ 26.812101] (5:node@TeX) 29 | 21
+> [ 26.812101] (5:node@TeX) 37 | 21
+> [ 26.812101] (5:node@TeX) 53 | 21
+> [ 26.812101] (5:node@TeX) Predecessor: -1
+> [ 30.924529] (6:node@Jean_Yves) My finger table:
+> [ 30.924529] (6:node@Jean_Yves) Start | Succ
+> [ 30.924529] (6:node@Jean_Yves) 15 | 1
+> [ 30.924529] (6:node@Jean_Yves) 16 | 14
+> [ 30.924529] (6:node@Jean_Yves) 18 | 14
+> [ 30.924529] (6:node@Jean_Yves) 22 | 14
+> [ 30.924529] (6:node@Jean_Yves) 30 | 14
+> [ 30.924529] (6:node@Jean_Yves) 46 | 14
+> [ 30.924529] (6:node@Jean_Yves) Predecessor: -1
+> [ 36.048185] (7:node@Boivin) My finger table:
+> [ 36.048185] (7:node@Boivin) Start | Succ
+> [ 36.048185] (7:node@Boivin) 9 | 1
+> [ 36.048185] (7:node@Boivin) 10 | 8
+> [ 36.048185] (7:node@Boivin) 12 | 8
+> [ 36.048185] (7:node@Boivin) 16 | 8
+> [ 36.048185] (7:node@Boivin) 24 | 8
+> [ 36.048185] (7:node@Boivin) 40 | 8
+> [ 36.048185] (7:node@Boivin) Predecessor: -1
+> [ 74.998500] (8:node@Jacquelin) My finger table:
+> [ 74.998500] (8:node@Jacquelin) Start | Succ
+> [ 74.998500] (8:node@Jacquelin) 2 | 1
+> [ 74.998500] (8:node@Jacquelin) 3 | 1
+> [ 74.998500] (8:node@Jacquelin) 5 | 1
+> [ 74.998500] (8:node@Jacquelin) 9 | 1
+> [ 74.998500] (8:node@Jacquelin) 17 | 1
+> [ 74.998500] (8:node@Jacquelin) 33 | 1
+> [ 74.998500] (8:node@Jacquelin) Predecessor: 32
+> [ 75.886856] (8:node@Jacquelin) My finger table:
+> [ 75.886856] (8:node@Jacquelin) Start | Succ
+> [ 75.886856] (8:node@Jacquelin) 2 | 32
+> [ 75.886856] (8:node@Jacquelin) 3 | 1
+> [ 75.886856] (8:node@Jacquelin) 5 | 1
+> [ 75.886856] (8:node@Jacquelin) 9 | 1
+> [ 75.886856] (8:node@Jacquelin) 17 | 1
+> [ 75.886856] (8:node@Jacquelin) 33 | 1
+> [ 75.886856] (8:node@Jacquelin) Predecessor: 42
+> [ 77.161304] (8:node@Jacquelin) My finger table:
+> [ 77.161304] (8:node@Jacquelin) Start | Succ
+> [ 77.161304] (8:node@Jacquelin) 2 | 32
+> [ 77.161304] (8:node@Jacquelin) 3 | 1
+> [ 77.161304] (8:node@Jacquelin) 5 | 1
+> [ 77.161304] (8:node@Jacquelin) 9 | 1
+> [ 77.161304] (8:node@Jacquelin) 17 | 1
+> [ 77.161304] (8:node@Jacquelin) 33 | 1
+> [ 77.161304] (8:node@Jacquelin) Predecessor: 48
+> [102.428549] (4:node@Geoff) My finger table:
+> [102.428549] (4:node@Geoff) Start | Succ
+> [102.428549] (4:node@Geoff) 33 | 48
+> [102.428549] (4:node@Geoff) 34 | 32
+> [102.428549] (4:node@Geoff) 36 | 32
+> [102.428549] (4:node@Geoff) 40 | 32
+> [102.428549] (4:node@Geoff) 48 | 32
+> [102.428549] (4:node@Geoff) 0 | 32
+> [102.428549] (4:node@Geoff) Predecessor: 1
+> [128.446143] (1:node@Gatien) My finger table:
+> [128.446143] (1:node@Gatien) Start | Succ
+> [128.446143] (1:node@Gatien) 49 | 1
+> [128.446143] (1:node@Gatien) 50 | 48
+> [128.446143] (1:node@Gatien) 52 | 48
+> [128.446143] (1:node@Gatien) 56 | 48
+> [128.446143] (1:node@Gatien) 0 | 48
+> [128.446143] (1:node@Gatien) 16 | 48
+> [128.446143] (1:node@Gatien) Predecessor: 32
+> [138.445943] (1:node@Gatien) My finger table:
+> [138.445943] (1:node@Gatien) Start | Succ
+> [138.445943] (1:node@Gatien) 49 | 1
+> [138.445943] (1:node@Gatien) 50 | 48
+> [138.445943] (1:node@Gatien) 52 | 48
+> [138.445943] (1:node@Gatien) 56 | 48
+> [138.445943] (1:node@Gatien) 0 | 48
+> [138.445943] (1:node@Gatien) 16 | 48
+> [138.445943] (1:node@Gatien) Predecessor: 42
+> [211.728399] (2:node@McGee) My finger table:
+> [211.728399] (2:node@McGee) Start | Succ
+> [211.728399] (2:node@McGee) 43 | 48
+> [211.728399] (2:node@McGee) 44 | 42
+> [211.728399] (2:node@McGee) 46 | 42
+> [211.728399] (2:node@McGee) 50 | 42
+> [211.728399] (2:node@McGee) 58 | 42
+> [211.728399] (2:node@McGee) 10 | 42
+> [211.728399] (2:node@McGee) Predecessor: 38
+> [248.221969] (1:node@Gatien) My finger table:
+> [248.221969] (1:node@Gatien) Start | Succ
+> [248.221969] (1:node@Gatien) 49 | 1
+> [248.221969] (1:node@Gatien) 50 | 1
+> [248.221969] (1:node@Gatien) 52 | 48
+> [248.221969] (1:node@Gatien) 56 | 48
+> [248.221969] (1:node@Gatien) 0 | 48
+> [248.221969] (1:node@Gatien) 16 | 48
+> [248.221969] (1:node@Gatien) Predecessor: 42
+> [251.135492] (7:node@Boivin) My finger table:
+> [251.135492] (7:node@Boivin) Start | Succ
+> [251.135492] (7:node@Boivin) 9 | 38
+> [251.135492] (7:node@Boivin) 10 | 38
+> [251.135492] (7:node@Boivin) 12 | 8
+> [251.135492] (7:node@Boivin) 16 | 8
+> [251.135492] (7:node@Boivin) 24 | 8
+> [251.135492] (7:node@Boivin) 40 | 8
+> [251.135492] (7:node@Boivin) Predecessor: -1
+> [259.451660] (2:node@McGee) My finger table:
+> [259.451660] (2:node@McGee) Start | Succ
+> [259.451660] (2:node@McGee) 43 | 48
+> [259.451660] (2:node@McGee) 44 | 48
+> [259.451660] (2:node@McGee) 46 | 42
+> [259.451660] (2:node@McGee) 50 | 42
+> [259.451660] (2:node@McGee) 58 | 42
+> [259.451660] (2:node@McGee) 10 | 42
+> [259.451660] (2:node@McGee) Predecessor: 38
+> [309.452289] (4:node@Geoff) My finger table:
+> [309.452289] (4:node@Geoff) Start | Succ
+> [309.452289] (4:node@Geoff) 33 | 38
+> [309.452289] (4:node@Geoff) 34 | 38
+> [309.452289] (4:node@Geoff) 36 | 32
+> [309.452289] (4:node@Geoff) 40 | 32
+> [309.452289] (4:node@Geoff) 48 | 32
+> [309.452289] (4:node@Geoff) 0 | 32
+> [309.452289] (4:node@Geoff) Predecessor: 1
+> [309.457634] (8:node@Jacquelin) My finger table:
+> [309.457634] (8:node@Jacquelin) Start | Succ
+> [309.457634] (8:node@Jacquelin) 2 | 32
+> [309.457634] (8:node@Jacquelin) 3 | 32
+> [309.457634] (8:node@Jacquelin) 5 | 1
+> [309.457634] (8:node@Jacquelin) 9 | 1
+> [309.457634] (8:node@Jacquelin) 17 | 1
+> [309.457634] (8:node@Jacquelin) 33 | 1
+> [309.457634] (8:node@Jacquelin) Predecessor: 48
+> [323.904210] (6:node@Jean_Yves) My finger table:
+> [323.904210] (6:node@Jean_Yves) Start | Succ
+> [323.904210] (6:node@Jean_Yves) 15 | 38
+> [323.904210] (6:node@Jean_Yves) 16 | 38
+> [323.904210] (6:node@Jean_Yves) 18 | 14
+> [323.904210] (6:node@Jean_Yves) 22 | 14
+> [323.904210] (6:node@Jean_Yves) 30 | 14
+> [323.904210] (6:node@Jean_Yves) 46 | 14
+> [323.904210] (6:node@Jean_Yves) Predecessor: -1
+> [325.353212] (3:node@iRMX) My finger table:
+> [325.353212] (3:node@iRMX) Start | Succ
+> [325.353212] (3:node@iRMX) 39 | 42
+> [325.353212] (3:node@iRMX) 40 | 38
+> [325.353212] (3:node@iRMX) 42 | 38
+> [325.353212] (3:node@iRMX) 46 | 38
+> [325.353212] (3:node@iRMX) 54 | 38
+> [325.353212] (3:node@iRMX) 6 | 38
+> [325.353212] (3:node@iRMX) Predecessor: 32
+> [330.576758] (3:node@iRMX) My finger table:
+> [330.576758] (3:node@iRMX) Start | Succ
+> [330.576758] (3:node@iRMX) 39 | 42
+> [330.576758] (3:node@iRMX) 40 | 42
+> [330.576758] (3:node@iRMX) 42 | 38
+> [330.576758] (3:node@iRMX) 46 | 38
+> [330.576758] (3:node@iRMX) 54 | 38
+> [330.576758] (3:node@iRMX) 6 | 38
+> [330.576758] (3:node@iRMX) Predecessor: 32
+> [352.615271] (5:node@TeX) My finger table:
+> [352.615271] (5:node@TeX) Start | Succ
+> [352.615271] (5:node@TeX) 22 | 32
+> [352.615271] (5:node@TeX) 23 | 32
+> [352.615271] (5:node@TeX) 25 | 21
+> [352.615271] (5:node@TeX) 29 | 21
+> [352.615271] (5:node@TeX) 37 | 21
+> [352.615271] (5:node@TeX) 53 | 21
+> [352.615271] (5:node@TeX) Predecessor: -1
+> [369.575209] (1:node@Gatien) My finger table:
+> [369.575209] (1:node@Gatien) Start | Succ
+> [369.575209] (1:node@Gatien) 49 | 1
+> [369.575209] (1:node@Gatien) 50 | 1
+> [369.575209] (1:node@Gatien) 52 | 1
+> [369.575209] (1:node@Gatien) 56 | 48
+> [369.575209] (1:node@Gatien) 0 | 48
+> [369.575209] (1:node@Gatien) 16 | 48
+> [369.575209] (1:node@Gatien) Predecessor: 42
+> [382.882683] (2:node@McGee) My finger table:
+> [382.882683] (2:node@McGee) Start | Succ
+> [382.882683] (2:node@McGee) 43 | 48
+> [382.882683] (2:node@McGee) 44 | 48
+> [382.882683] (2:node@McGee) 46 | 48
+> [382.882683] (2:node@McGee) 50 | 42
+> [382.882683] (2:node@McGee) 58 | 42
+> [382.882683] (2:node@McGee) 10 | 42
+> [382.882683] (2:node@McGee) Predecessor: 38
+> [384.345471] (4:node@Geoff) My finger table:
+> [384.345471] (4:node@Geoff) Start | Succ
+> [384.345471] (4:node@Geoff) 33 | 38
+> [384.345471] (4:node@Geoff) 34 | 38
+> [384.345471] (4:node@Geoff) 36 | 32
+> [384.345471] (4:node@Geoff) 40 | 32
+> [384.345471] (4:node@Geoff) 48 | 32
+> [384.345471] (4:node@Geoff) 0 | 32
+> [384.345471] (4:node@Geoff) Predecessor: 21
+> [420.326402] (7:node@Boivin) My finger table:
+> [420.326402] (7:node@Boivin) Start | Succ
+> [420.326402] (7:node@Boivin) 9 | 21
+> [420.326402] (7:node@Boivin) 10 | 38
+> [420.326402] (7:node@Boivin) 12 | 21
+> [420.326402] (7:node@Boivin) 16 | 8
+> [420.326402] (7:node@Boivin) 24 | 8
+> [420.326402] (7:node@Boivin) 40 | 8
+> [420.326402] (7:node@Boivin) Predecessor: -1
+> [440.893851] (5:node@TeX) My finger table:
+> [440.893851] (5:node@TeX) Start | Succ
+> [440.893851] (5:node@TeX) 22 | 32
+> [440.893851] (5:node@TeX) 23 | 32
+> [440.893851] (5:node@TeX) 25 | 21
+> [440.893851] (5:node@TeX) 29 | 21
+> [440.893851] (5:node@TeX) 37 | 21
+> [440.893851] (5:node@TeX) 53 | 21
+> [440.893851] (5:node@TeX) Predecessor: 14
+> [479.758971] (3:node@iRMX) My finger table:
+> [479.758971] (3:node@iRMX) Start | Succ
+> [479.758971] (3:node@iRMX) 39 | 42
+> [479.758971] (3:node@iRMX) 40 | 42
+> [479.758971] (3:node@iRMX) 42 | 42
+> [479.758971] (3:node@iRMX) 46 | 38
+> [479.758971] (3:node@iRMX) 54 | 38
+> [479.758971] (3:node@iRMX) 6 | 38
+> [479.758971] (3:node@iRMX) Predecessor: 32
+> [482.033225] (4:node@Geoff) My finger table:
+> [482.033225] (4:node@Geoff) Start | Succ
+> [482.033225] (4:node@Geoff) 33 | 38
+> [482.033225] (4:node@Geoff) 34 | 38
+> [482.033225] (4:node@Geoff) 36 | 38
+> [482.033225] (4:node@Geoff) 40 | 32
+> [482.033225] (4:node@Geoff) 48 | 32
+> [482.033225] (4:node@Geoff) 0 | 32
+> [482.033225] (4:node@Geoff) Predecessor: 21
+> [490.659143] (1:node@Gatien) My finger table:
+> [490.659143] (1:node@Gatien) Start | Succ
+> [490.659143] (1:node@Gatien) 49 | 1
+> [490.659143] (1:node@Gatien) 50 | 1
+> [490.659143] (1:node@Gatien) 52 | 1
+> [490.659143] (1:node@Gatien) 56 | 1
+> [490.659143] (1:node@Gatien) 0 | 48
+> [490.659143] (1:node@Gatien) 16 | 48
+> [490.659143] (1:node@Gatien) Predecessor: 42
+> [498.176263] (3:node@iRMX) My finger table:
+> [498.176263] (3:node@iRMX) Start | Succ
+> [498.176263] (3:node@iRMX) 39 | 42
+> [498.176263] (3:node@iRMX) 40 | 42
+> [498.176263] (3:node@iRMX) 42 | 42
+> [498.176263] (3:node@iRMX) 46 | 38
+> [498.176263] (3:node@iRMX) 54 | 38
+> [498.176263] (3:node@iRMX) 6 | 38
+> [498.176263] (3:node@iRMX) Predecessor: 32
+> [498.611138] (6:node@Jean_Yves) My finger table:
+> [498.611138] (6:node@Jean_Yves) Start | Succ
+> [498.611138] (6:node@Jean_Yves) 15 | 21
+> [498.611138] (6:node@Jean_Yves) 16 | 38
+> [498.611138] (6:node@Jean_Yves) 18 | 21
+> [498.611138] (6:node@Jean_Yves) 22 | 14
+> [498.611138] (6:node@Jean_Yves) 30 | 14
+> [498.611138] (6:node@Jean_Yves) 46 | 14
+> [498.611138] (6:node@Jean_Yves) Predecessor: -1
+> [500.558693] (8:node@Jacquelin) My finger table:
+> [500.558693] (8:node@Jacquelin) Start | Succ
+> [500.558693] (8:node@Jacquelin) 2 | 14
+> [500.558693] (8:node@Jacquelin) 3 | 32
+> [500.558693] (8:node@Jacquelin) 5 | 14
+> [500.558693] (8:node@Jacquelin) 9 | 1
+> [500.558693] (8:node@Jacquelin) 17 | 1
+> [500.558693] (8:node@Jacquelin) 33 | 1
+> [500.558693] (8:node@Jacquelin) Predecessor: 48
+> [505.760856] (2:node@McGee) My finger table:
+> [505.760856] (2:node@McGee) Start | Succ
+> [505.760856] (2:node@McGee) 43 | 48
+> [505.760856] (2:node@McGee) 44 | 48
+> [505.760856] (2:node@McGee) 46 | 48
+> [505.760856] (2:node@McGee) 50 | 1
+> [505.760856] (2:node@McGee) 58 | 42
+> [505.760856] (2:node@McGee) 10 | 42
+> [505.760856] (2:node@McGee) Predecessor: 38
+> [509.829034] (5:node@TeX) My finger table:
+> [509.829034] (5:node@TeX) Start | Succ
+> [509.829034] (5:node@TeX) 22 | 32
+> [509.829034] (5:node@TeX) 23 | 32
+> [509.829034] (5:node@TeX) 25 | 32
+> [509.829034] (5:node@TeX) 29 | 21
+> [509.829034] (5:node@TeX) 37 | 21
+> [509.829034] (5:node@TeX) 53 | 21
+> [509.829034] (5:node@TeX) Predecessor: 14
+> [533.786329] (6:node@Jean_Yves) My finger table:
+> [533.786329] (6:node@Jean_Yves) Start | Succ
+> [533.786329] (6:node@Jean_Yves) 15 | 21
+> [533.786329] (6:node@Jean_Yves) 16 | 38
+> [533.786329] (6:node@Jean_Yves) 18 | 21
+> [533.786329] (6:node@Jean_Yves) 22 | 14
+> [533.786329] (6:node@Jean_Yves) 30 | 14
+> [533.786329] (6:node@Jean_Yves) 46 | 14
+> [533.786329] (6:node@Jean_Yves) Predecessor: 8
+> [549.075290] (7:node@Boivin) My finger table:
+> [549.075290] (7:node@Boivin) Start | Succ
+> [549.075290] (7:node@Boivin) 9 | 14
+> [549.075290] (7:node@Boivin) 10 | 38
+> [549.075290] (7:node@Boivin) 12 | 21
+> [549.075290] (7:node@Boivin) 16 | 21
+> [549.075290] (7:node@Boivin) 24 | 8
+> [549.075290] (7:node@Boivin) 40 | 8
+> [549.075290] (7:node@Boivin) Predecessor: -1
+> [753.389615] (0:@) Messages created: 605
+> [753.389615] (0:@) Simulated time: 753.39
! output sort
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --cfg=network/crosstraffic:0 --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
> [ 5.000000] (8:node@c-7.me) 14199064 | 10004760
> [ 5.000000] (8:node@c-7.me) 1616152 | 10004760
> [ 5.000000] (8:node@c-7.me) Predecessor: -1
-> [ 6.000000] (2:node@c-1.me) My finger table:
-> [ 6.000000] (2:node@c-1.me) Start | Succ
-> [ 6.000000] (2:node@c-1.me) 366681 | 42
-> [ 6.000000] (2:node@c-1.me) 366682 | 366680
-> [ 6.000000] (2:node@c-1.me) 366684 | 366680
-> [ 6.000000] (2:node@c-1.me) 366688 | 366680
-> [ 6.000000] (2:node@c-1.me) 366696 | 366680
-> [ 6.000000] (2:node@c-1.me) 366712 | 366680
-> [ 6.000000] (2:node@c-1.me) 366744 | 366680
-> [ 6.000000] (2:node@c-1.me) 366808 | 366680
-> [ 6.000000] (2:node@c-1.me) 366936 | 366680
-> [ 6.000000] (2:node@c-1.me) 367192 | 366680
-> [ 6.000000] (2:node@c-1.me) 367704 | 366680
-> [ 6.000000] (2:node@c-1.me) 368728 | 366680
-> [ 6.000000] (2:node@c-1.me) 370776 | 366680
-> [ 6.000000] (2:node@c-1.me) 374872 | 366680
-> [ 6.000000] (2:node@c-1.me) 383064 | 366680
-> [ 6.000000] (2:node@c-1.me) 399448 | 366680
-> [ 6.000000] (2:node@c-1.me) 432216 | 366680
-> [ 6.000000] (2:node@c-1.me) 497752 | 366680
-> [ 6.000000] (2:node@c-1.me) 628824 | 366680
-> [ 6.000000] (2:node@c-1.me) 890968 | 366680
-> [ 6.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 6.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 6.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 6.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 6.000000] (2:node@c-1.me) Predecessor: -1
-> [ 8.000000] (7:node@c-6.me) My finger table:
-> [ 8.000000] (7:node@c-6.me) Start | Succ
-> [ 8.000000] (7:node@c-6.me) 16728097 | 1319738
-> [ 8.000000] (7:node@c-6.me) 16728098 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 8.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 8.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 8.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 8.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 8.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 8.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 8.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 8.000000] (7:node@c-6.me) Predecessor: -1
-> [ 9.000000] (10:node@c-9.me) My finger table:
-> [ 9.000000] (10:node@c-9.me) Start | Succ
-> [ 9.000000] (10:node@c-9.me) 2015254 | 1319738
-> [ 9.000000] (10:node@c-9.me) 2015255 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015257 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 9.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 9.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 9.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 9.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 9.000000] (10:node@c-9.me) Predecessor: -1
-> [ 11.000000] (4:node@c-3.me) My finger table:
-> [ 11.000000] (4:node@c-3.me) Start | Succ
-> [ 11.000000] (4:node@c-3.me) 1319739 | 42
-> [ 11.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 11.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 11.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 11.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 11.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 11.000000] (4:node@c-3.me) Predecessor: -1
-> [ 16.000000] (9:node@c-8.me) My finger table:
-> [ 16.000000] (9:node@c-8.me) Start | Succ
-> [ 16.000000] (9:node@c-8.me) 6518809 | 42
-> [ 16.000000] (9:node@c-8.me) 6518810 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 16.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 16.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 16.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 16.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 16.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 16.000000] (9:node@c-8.me) Predecessor: -1
-> [ 26.000000] (4:node@c-3.me) My finger table:
-> [ 26.000000] (4:node@c-3.me) Start | Succ
-> [ 26.000000] (4:node@c-3.me) 1319739 | 42
-> [ 26.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 26.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 26.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 26.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 26.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 26.000000] (4:node@c-3.me) Predecessor: 16728096
-> [ 31.000000] (2:node@c-1.me) My finger table:
-> [ 31.000000] (2:node@c-1.me) Start | Succ
-> [ 31.000000] (2:node@c-1.me) 366681 | 42
-> [ 31.000000] (2:node@c-1.me) 366682 | 366680
-> [ 31.000000] (2:node@c-1.me) 366684 | 366680
-> [ 31.000000] (2:node@c-1.me) 366688 | 366680
-> [ 31.000000] (2:node@c-1.me) 366696 | 366680
-> [ 31.000000] (2:node@c-1.me) 366712 | 366680
-> [ 31.000000] (2:node@c-1.me) 366744 | 366680
-> [ 31.000000] (2:node@c-1.me) 366808 | 366680
-> [ 31.000000] (2:node@c-1.me) 366936 | 366680
-> [ 31.000000] (2:node@c-1.me) 367192 | 366680
-> [ 31.000000] (2:node@c-1.me) 367704 | 366680
-> [ 31.000000] (2:node@c-1.me) 368728 | 366680
-> [ 31.000000] (2:node@c-1.me) 370776 | 366680
-> [ 31.000000] (2:node@c-1.me) 374872 | 366680
-> [ 31.000000] (2:node@c-1.me) 383064 | 366680
-> [ 31.000000] (2:node@c-1.me) 399448 | 366680
-> [ 31.000000] (2:node@c-1.me) 432216 | 366680
-> [ 31.000000] (2:node@c-1.me) 497752 | 366680
-> [ 31.000000] (2:node@c-1.me) 628824 | 366680
-> [ 31.000000] (2:node@c-1.me) 890968 | 366680
-> [ 31.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 31.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 31.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 31.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 31.000000] (2:node@c-1.me) Predecessor: 16509405
-> [ 32.000000] (5:node@c-4.me) My finger table:
-> [ 32.000000] (5:node@c-4.me) Start | Succ
-> [ 32.000000] (5:node@c-4.me) 16509406 | 366680
-> [ 32.000000] (5:node@c-4.me) 16509407 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509409 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509413 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 32.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 32.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 32.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 32.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 32.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 32.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 38.000000] (3:node@c-2.me) My finger table:
-> [ 38.000000] (3:node@c-2.me) Start | Succ
-> [ 38.000000] (3:node@c-2.me) 533745 | 16509405
-> [ 38.000000] (3:node@c-2.me) 533746 | 533744
-> [ 38.000000] (3:node@c-2.me) 533748 | 533744
-> [ 38.000000] (3:node@c-2.me) 533752 | 533744
-> [ 38.000000] (3:node@c-2.me) 533760 | 533744
-> [ 38.000000] (3:node@c-2.me) 533776 | 533744
-> [ 38.000000] (3:node@c-2.me) 533808 | 533744
-> [ 38.000000] (3:node@c-2.me) 533872 | 533744
-> [ 38.000000] (3:node@c-2.me) 534000 | 533744
-> [ 38.000000] (3:node@c-2.me) 534256 | 533744
-> [ 38.000000] (3:node@c-2.me) 534768 | 533744
-> [ 38.000000] (3:node@c-2.me) 535792 | 533744
-> [ 38.000000] (3:node@c-2.me) 537840 | 533744
-> [ 38.000000] (3:node@c-2.me) 541936 | 533744
-> [ 38.000000] (3:node@c-2.me) 550128 | 533744
-> [ 38.000000] (3:node@c-2.me) 566512 | 533744
-> [ 38.000000] (3:node@c-2.me) 599280 | 533744
-> [ 38.000000] (3:node@c-2.me) 664816 | 533744
-> [ 38.000000] (3:node@c-2.me) 795888 | 533744
-> [ 38.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 38.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 38.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 38.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 38.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 38.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 50.000000] (1:node@c-0.me) My finger table:
-> [ 50.000000] (1:node@c-0.me) Start | Succ
-> [ 50.000000] (1:node@c-0.me) 43 | 42
-> [ 50.000000] (1:node@c-0.me) 44 | 42
-> [ 50.000000] (1:node@c-0.me) 46 | 42
-> [ 50.000000] (1:node@c-0.me) 50 | 42
-> [ 50.000000] (1:node@c-0.me) 58 | 42
-> [ 50.000000] (1:node@c-0.me) 74 | 42
-> [ 50.000000] (1:node@c-0.me) 106 | 42
-> [ 50.000000] (1:node@c-0.me) 170 | 42
-> [ 50.000000] (1:node@c-0.me) 298 | 42
-> [ 50.000000] (1:node@c-0.me) 554 | 42
-> [ 50.000000] (1:node@c-0.me) 1066 | 42
-> [ 50.000000] (1:node@c-0.me) 2090 | 42
-> [ 50.000000] (1:node@c-0.me) 4138 | 42
-> [ 50.000000] (1:node@c-0.me) 8234 | 42
-> [ 50.000000] (1:node@c-0.me) 16426 | 42
-> [ 50.000000] (1:node@c-0.me) 32810 | 42
-> [ 50.000000] (1:node@c-0.me) 65578 | 42
-> [ 50.000000] (1:node@c-0.me) 131114 | 42
-> [ 50.000000] (1:node@c-0.me) 262186 | 42
-> [ 50.000000] (1:node@c-0.me) 524330 | 42
-> [ 50.000000] (1:node@c-0.me) 1048618 | 42
-> [ 50.000000] (1:node@c-0.me) 2097194 | 42
-> [ 50.000000] (1:node@c-0.me) 4194346 | 42
-> [ 50.000000] (1:node@c-0.me) 8388650 | 42
-> [ 50.000000] (1:node@c-0.me) Predecessor: 366680
-> [ 60.000000] (1:node@c-0.me) My finger table:
-> [ 60.000000] (1:node@c-0.me) Start | Succ
-> [ 60.000000] (1:node@c-0.me) 43 | 42
-> [ 60.000000] (1:node@c-0.me) 44 | 42
-> [ 60.000000] (1:node@c-0.me) 46 | 42
-> [ 60.000000] (1:node@c-0.me) 50 | 42
-> [ 60.000000] (1:node@c-0.me) 58 | 42
-> [ 60.000000] (1:node@c-0.me) 74 | 42
-> [ 60.000000] (1:node@c-0.me) 106 | 42
-> [ 60.000000] (1:node@c-0.me) 170 | 42
-> [ 60.000000] (1:node@c-0.me) 298 | 42
-> [ 60.000000] (1:node@c-0.me) 554 | 42
-> [ 60.000000] (1:node@c-0.me) 1066 | 42
-> [ 60.000000] (1:node@c-0.me) 2090 | 42
-> [ 60.000000] (1:node@c-0.me) 4138 | 42
-> [ 60.000000] (1:node@c-0.me) 8234 | 42
-> [ 60.000000] (1:node@c-0.me) 16426 | 42
-> [ 60.000000] (1:node@c-0.me) 32810 | 42
-> [ 60.000000] (1:node@c-0.me) 65578 | 42
-> [ 60.000000] (1:node@c-0.me) 131114 | 42
-> [ 60.000000] (1:node@c-0.me) 262186 | 42
-> [ 60.000000] (1:node@c-0.me) 524330 | 42
-> [ 60.000000] (1:node@c-0.me) 1048618 | 42
-> [ 60.000000] (1:node@c-0.me) 2097194 | 42
-> [ 60.000000] (1:node@c-0.me) 4194346 | 42
-> [ 60.000000] (1:node@c-0.me) 8388650 | 42
-> [ 60.000000] (1:node@c-0.me) Predecessor: 1319738
-> [ 70.000000] (1:node@c-0.me) My finger table:
-> [ 70.000000] (1:node@c-0.me) Start | Succ
-> [ 70.000000] (1:node@c-0.me) 43 | 1319738
-> [ 70.000000] (1:node@c-0.me) 44 | 42
-> [ 70.000000] (1:node@c-0.me) 46 | 42
-> [ 70.000000] (1:node@c-0.me) 50 | 42
-> [ 70.000000] (1:node@c-0.me) 58 | 42
-> [ 70.000000] (1:node@c-0.me) 74 | 42
-> [ 70.000000] (1:node@c-0.me) 106 | 42
-> [ 70.000000] (1:node@c-0.me) 170 | 42
-> [ 70.000000] (1:node@c-0.me) 298 | 42
-> [ 70.000000] (1:node@c-0.me) 554 | 42
-> [ 70.000000] (1:node@c-0.me) 1066 | 42
-> [ 70.000000] (1:node@c-0.me) 2090 | 42
-> [ 70.000000] (1:node@c-0.me) 4138 | 42
-> [ 70.000000] (1:node@c-0.me) 8234 | 42
-> [ 70.000000] (1:node@c-0.me) 16426 | 42
-> [ 70.000000] (1:node@c-0.me) 32810 | 42
-> [ 70.000000] (1:node@c-0.me) 65578 | 42
-> [ 70.000000] (1:node@c-0.me) 131114 | 42
-> [ 70.000000] (1:node@c-0.me) 262186 | 42
-> [ 70.000000] (1:node@c-0.me) 524330 | 42
-> [ 70.000000] (1:node@c-0.me) 1048618 | 42
-> [ 70.000000] (1:node@c-0.me) 2097194 | 42
-> [ 70.000000] (1:node@c-0.me) 4194346 | 42
-> [ 70.000000] (1:node@c-0.me) 8388650 | 42
-> [ 70.000000] (1:node@c-0.me) Predecessor: 6518808
-> [ 85.000000] (4:node@c-3.me) My finger table:
-> [ 85.000000] (4:node@c-3.me) Start | Succ
-> [ 85.000000] (4:node@c-3.me) 1319739 | 6518808
-> [ 85.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 85.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 85.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 85.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 85.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 85.000000] (4:node@c-3.me) Predecessor: 42
-> [ 86.000000] (8:node@c-7.me) My finger table:
-> [ 86.000000] (8:node@c-7.me) Start | Succ
-> [ 86.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 86.000000] (8:node@c-7.me) 10004762 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004764 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 86.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 86.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 86.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 86.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 86.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 90.000000] (7:node@c-6.me) My finger table:
-> [ 90.000000] (7:node@c-6.me) Start | Succ
-> [ 90.000000] (7:node@c-6.me) 16728097 | 1319738
-> [ 90.000000] (7:node@c-6.me) 16728098 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 90.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 90.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 90.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 90.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 90.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 90.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 90.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 90.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 109.000000] (9:node@c-8.me) My finger table:
-> [ 109.000000] (9:node@c-8.me) Start | Succ
-> [ 109.000000] (9:node@c-8.me) 6518809 | 42
-> [ 109.000000] (9:node@c-8.me) 6518810 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 109.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 109.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 109.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 109.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 109.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 109.000000] (9:node@c-8.me) Predecessor: 366680
-> [ 110.000000] (9:node@c-8.me) My finger table:
-> [ 110.000000] (9:node@c-8.me) Start | Succ
-> [ 110.000000] (9:node@c-8.me) 6518809 | 42
-> [ 110.000000] (9:node@c-8.me) 6518810 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 110.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 110.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 110.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 110.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 110.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 110.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 174.000000] (1:node@c-0.me) My finger table:
-> [ 174.000000] (1:node@c-0.me) Start | Succ
-> [ 174.000000] (1:node@c-0.me) 43 | 1319738
-> [ 174.000000] (1:node@c-0.me) 44 | 42
-> [ 174.000000] (1:node@c-0.me) 46 | 42
-> [ 174.000000] (1:node@c-0.me) 50 | 42
-> [ 174.000000] (1:node@c-0.me) 58 | 42
-> [ 174.000000] (1:node@c-0.me) 74 | 42
-> [ 174.000000] (1:node@c-0.me) 106 | 42
-> [ 174.000000] (1:node@c-0.me) 170 | 42
-> [ 174.000000] (1:node@c-0.me) 298 | 42
-> [ 174.000000] (1:node@c-0.me) 554 | 42
-> [ 174.000000] (1:node@c-0.me) 1066 | 42
-> [ 174.000000] (1:node@c-0.me) 2090 | 42
-> [ 174.000000] (1:node@c-0.me) 4138 | 42
-> [ 174.000000] (1:node@c-0.me) 8234 | 42
-> [ 174.000000] (1:node@c-0.me) 16426 | 42
-> [ 174.000000] (1:node@c-0.me) 32810 | 42
-> [ 174.000000] (1:node@c-0.me) 65578 | 42
-> [ 174.000000] (1:node@c-0.me) 131114 | 42
-> [ 174.000000] (1:node@c-0.me) 262186 | 42
-> [ 174.000000] (1:node@c-0.me) 524330 | 42
-> [ 174.000000] (1:node@c-0.me) 1048618 | 42
-> [ 174.000000] (1:node@c-0.me) 2097194 | 42
-> [ 174.000000] (1:node@c-0.me) 4194346 | 42
-> [ 174.000000] (1:node@c-0.me) 8388650 | 42
-> [ 174.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 245.000000] (8:node@c-7.me) My finger table:
-> [ 245.000000] (8:node@c-7.me) Start | Succ
-> [ 245.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 245.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 245.000000] (8:node@c-7.me) 10004764 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 245.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 245.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 245.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 245.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 245.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 246.000000] (3:node@c-2.me) My finger table:
-> [ 246.000000] (3:node@c-2.me) Start | Succ
-> [ 246.000000] (3:node@c-2.me) 533745 | 10004760
-> [ 246.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 246.000000] (3:node@c-2.me) 533748 | 533744
-> [ 246.000000] (3:node@c-2.me) 533752 | 533744
-> [ 246.000000] (3:node@c-2.me) 533760 | 533744
-> [ 246.000000] (3:node@c-2.me) 533776 | 533744
-> [ 246.000000] (3:node@c-2.me) 533808 | 533744
-> [ 246.000000] (3:node@c-2.me) 533872 | 533744
-> [ 246.000000] (3:node@c-2.me) 534000 | 533744
-> [ 246.000000] (3:node@c-2.me) 534256 | 533744
-> [ 246.000000] (3:node@c-2.me) 534768 | 533744
-> [ 246.000000] (3:node@c-2.me) 535792 | 533744
-> [ 246.000000] (3:node@c-2.me) 537840 | 533744
-> [ 246.000000] (3:node@c-2.me) 541936 | 533744
-> [ 246.000000] (3:node@c-2.me) 550128 | 533744
-> [ 246.000000] (3:node@c-2.me) 566512 | 533744
-> [ 246.000000] (3:node@c-2.me) 599280 | 533744
-> [ 246.000000] (3:node@c-2.me) 664816 | 533744
-> [ 246.000000] (3:node@c-2.me) 795888 | 533744
-> [ 246.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 246.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 246.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 246.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 246.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 246.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 246.000000] (5:node@c-4.me) My finger table:
-> [ 246.000000] (5:node@c-4.me) Start | Succ
-> [ 246.000000] (5:node@c-4.me) 16509406 | 366680
-> [ 246.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 246.000000] (5:node@c-4.me) 16509409 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509413 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 246.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 246.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 246.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 246.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 246.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 246.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 247.000000] (6:node@c-5.me) My finger table:
-> [ 247.000000] (6:node@c-5.me) Start | Succ
-> [ 247.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 247.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 247.000000] (6:node@c-5.me) 10874880 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874884 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874892 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 247.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 247.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 247.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 247.000000] (6:node@c-5.me) Predecessor: -1
-> [ 247.000000] (7:node@c-6.me) My finger table:
-> [ 247.000000] (7:node@c-6.me) Start | Succ
-> [ 247.000000] (7:node@c-6.me) 16728097 | 42
-> [ 247.000000] (7:node@c-6.me) 16728098 | 42
-> [ 247.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 247.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 247.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 247.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 247.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 247.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 247.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 247.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 247.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 253.000000] (1:node@c-0.me) My finger table:
-> [ 253.000000] (1:node@c-0.me) Start | Succ
-> [ 253.000000] (1:node@c-0.me) 43 | 1319738
-> [ 253.000000] (1:node@c-0.me) 44 | 1319738
-> [ 253.000000] (1:node@c-0.me) 46 | 42
-> [ 253.000000] (1:node@c-0.me) 50 | 42
-> [ 253.000000] (1:node@c-0.me) 58 | 42
-> [ 253.000000] (1:node@c-0.me) 74 | 42
-> [ 253.000000] (1:node@c-0.me) 106 | 42
-> [ 253.000000] (1:node@c-0.me) 170 | 42
-> [ 253.000000] (1:node@c-0.me) 298 | 42
-> [ 253.000000] (1:node@c-0.me) 554 | 42
-> [ 253.000000] (1:node@c-0.me) 1066 | 42
-> [ 253.000000] (1:node@c-0.me) 2090 | 42
-> [ 253.000000] (1:node@c-0.me) 4138 | 42
-> [ 253.000000] (1:node@c-0.me) 8234 | 42
-> [ 253.000000] (1:node@c-0.me) 16426 | 42
-> [ 253.000000] (1:node@c-0.me) 32810 | 42
-> [ 253.000000] (1:node@c-0.me) 65578 | 42
-> [ 253.000000] (1:node@c-0.me) 131114 | 42
-> [ 253.000000] (1:node@c-0.me) 262186 | 42
-> [ 253.000000] (1:node@c-0.me) 524330 | 42
-> [ 253.000000] (1:node@c-0.me) 1048618 | 42
-> [ 253.000000] (1:node@c-0.me) 2097194 | 42
-> [ 253.000000] (1:node@c-0.me) 4194346 | 42
-> [ 253.000000] (1:node@c-0.me) 8388650 | 42
-> [ 253.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 255.000000] (2:node@c-1.me) My finger table:
-> [ 255.000000] (2:node@c-1.me) Start | Succ
-> [ 255.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 255.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 255.000000] (2:node@c-1.me) 366684 | 366680
-> [ 255.000000] (2:node@c-1.me) 366688 | 366680
-> [ 255.000000] (2:node@c-1.me) 366696 | 366680
-> [ 255.000000] (2:node@c-1.me) 366712 | 366680
-> [ 255.000000] (2:node@c-1.me) 366744 | 366680
-> [ 255.000000] (2:node@c-1.me) 366808 | 366680
-> [ 255.000000] (2:node@c-1.me) 366936 | 366680
-> [ 255.000000] (2:node@c-1.me) 367192 | 366680
-> [ 255.000000] (2:node@c-1.me) 367704 | 366680
-> [ 255.000000] (2:node@c-1.me) 368728 | 366680
-> [ 255.000000] (2:node@c-1.me) 370776 | 366680
-> [ 255.000000] (2:node@c-1.me) 374872 | 366680
-> [ 255.000000] (2:node@c-1.me) 383064 | 366680
-> [ 255.000000] (2:node@c-1.me) 399448 | 366680
-> [ 255.000000] (2:node@c-1.me) 432216 | 366680
-> [ 255.000000] (2:node@c-1.me) 497752 | 366680
-> [ 255.000000] (2:node@c-1.me) 628824 | 366680
-> [ 255.000000] (2:node@c-1.me) 890968 | 366680
-> [ 255.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 255.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 255.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 255.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 255.000000] (2:node@c-1.me) Predecessor: 16509405
-> [ 260.000000] (4:node@c-3.me) My finger table:
-> [ 260.000000] (4:node@c-3.me) Start | Succ
-> [ 260.000000] (4:node@c-3.me) 1319739 | 6518808
-> [ 260.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 260.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 260.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 260.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 260.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 260.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 292.000000] (7:node@c-6.me) My finger table:
-> [ 292.000000] (7:node@c-6.me) Start | Succ
-> [ 292.000000] (7:node@c-6.me) 16728097 | 42
-> [ 292.000000] (7:node@c-6.me) 16728098 | 42
-> [ 292.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 292.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 292.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 292.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 292.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 292.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 292.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 292.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 292.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 300.000000] (9:node@c-8.me) My finger table:
-> [ 300.000000] (9:node@c-8.me) Start | Succ
-> [ 300.000000] (9:node@c-8.me) 6518809 | 16728096
-> [ 300.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 300.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 300.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 300.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 300.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 300.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 300.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 300.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 301.000000] (10:node@c-9.me) My finger table:
-> [ 301.000000] (10:node@c-9.me) Start | Succ
-> [ 301.000000] (10:node@c-9.me) 2015254 | 16728096
-> [ 301.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 301.000000] (10:node@c-9.me) 2015257 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 301.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 301.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 301.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 301.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 301.000000] (10:node@c-9.me) Predecessor: -1
-> [ 302.000000] (2:node@c-1.me) My finger table:
-> [ 302.000000] (2:node@c-1.me) Start | Succ
-> [ 302.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 302.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 302.000000] (2:node@c-1.me) 366684 | 366680
-> [ 302.000000] (2:node@c-1.me) 366688 | 366680
-> [ 302.000000] (2:node@c-1.me) 366696 | 366680
-> [ 302.000000] (2:node@c-1.me) 366712 | 366680
-> [ 302.000000] (2:node@c-1.me) 366744 | 366680
-> [ 302.000000] (2:node@c-1.me) 366808 | 366680
-> [ 302.000000] (2:node@c-1.me) 366936 | 366680
-> [ 302.000000] (2:node@c-1.me) 367192 | 366680
-> [ 302.000000] (2:node@c-1.me) 367704 | 366680
-> [ 302.000000] (2:node@c-1.me) 368728 | 366680
-> [ 302.000000] (2:node@c-1.me) 370776 | 366680
-> [ 302.000000] (2:node@c-1.me) 374872 | 366680
-> [ 302.000000] (2:node@c-1.me) 383064 | 366680
-> [ 302.000000] (2:node@c-1.me) 399448 | 366680
-> [ 302.000000] (2:node@c-1.me) 432216 | 366680
-> [ 302.000000] (2:node@c-1.me) 497752 | 366680
-> [ 302.000000] (2:node@c-1.me) 628824 | 366680
-> [ 302.000000] (2:node@c-1.me) 890968 | 366680
-> [ 302.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 302.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 302.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 302.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 302.000000] (2:node@c-1.me) Predecessor: 42
-> [ 306.000000] (4:node@c-3.me) My finger table:
-> [ 306.000000] (4:node@c-3.me) Start | Succ
-> [ 306.000000] (4:node@c-3.me) 1319739 | 6518808
-> [ 306.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 306.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 306.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 306.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 306.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 306.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 306.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 339.000000] (9:node@c-8.me) My finger table:
-> [ 339.000000] (9:node@c-8.me) Start | Succ
-> [ 339.000000] (9:node@c-8.me) 6518809 | 16728096
-> [ 339.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 339.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 339.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 339.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 339.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 339.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 339.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 339.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 367.000000] (6:node@c-5.me) My finger table:
-> [ 367.000000] (6:node@c-5.me) Start | Succ
-> [ 367.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 367.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 367.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 367.000000] (6:node@c-5.me) 10874884 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10874892 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 367.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 367.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 367.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 367.000000] (6:node@c-5.me) Predecessor: -1
-> [ 368.000000] (3:node@c-2.me) My finger table:
-> [ 368.000000] (3:node@c-2.me) Start | Succ
-> [ 368.000000] (3:node@c-2.me) 533745 | 10004760
-> [ 368.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 368.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 368.000000] (3:node@c-2.me) 533752 | 533744
-> [ 368.000000] (3:node@c-2.me) 533760 | 533744
-> [ 368.000000] (3:node@c-2.me) 533776 | 533744
-> [ 368.000000] (3:node@c-2.me) 533808 | 533744
-> [ 368.000000] (3:node@c-2.me) 533872 | 533744
-> [ 368.000000] (3:node@c-2.me) 534000 | 533744
-> [ 368.000000] (3:node@c-2.me) 534256 | 533744
-> [ 368.000000] (3:node@c-2.me) 534768 | 533744
-> [ 368.000000] (3:node@c-2.me) 535792 | 533744
-> [ 368.000000] (3:node@c-2.me) 537840 | 533744
-> [ 368.000000] (3:node@c-2.me) 541936 | 533744
-> [ 368.000000] (3:node@c-2.me) 550128 | 533744
-> [ 368.000000] (3:node@c-2.me) 566512 | 533744
-> [ 368.000000] (3:node@c-2.me) 599280 | 533744
-> [ 368.000000] (3:node@c-2.me) 664816 | 533744
-> [ 368.000000] (3:node@c-2.me) 795888 | 533744
-> [ 368.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 368.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 368.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 368.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 368.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 368.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 368.000000] (5:node@c-4.me) My finger table:
-> [ 368.000000] (5:node@c-4.me) Start | Succ
-> [ 368.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 368.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 368.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 368.000000] (5:node@c-4.me) 16509413 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 368.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 368.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 368.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 368.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 368.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 368.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 370.000000] (8:node@c-7.me) My finger table:
-> [ 370.000000] (8:node@c-7.me) Start | Succ
-> [ 370.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 370.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 370.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 370.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 370.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 370.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 370.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 370.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 370.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 373.000000] (7:node@c-6.me) My finger table:
-> [ 373.000000] (7:node@c-6.me) Start | Succ
-> [ 373.000000] (7:node@c-6.me) 16728097 | 42
-> [ 373.000000] (7:node@c-6.me) 16728098 | 42
-> [ 373.000000] (7:node@c-6.me) 16728100 | 42
-> [ 373.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 373.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 373.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 373.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 373.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 373.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 373.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 373.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 373.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 375.000000] (2:node@c-1.me) My finger table:
-> [ 375.000000] (2:node@c-1.me) Start | Succ
-> [ 375.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 375.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 375.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 375.000000] (2:node@c-1.me) 366688 | 366680
-> [ 375.000000] (2:node@c-1.me) 366696 | 366680
-> [ 375.000000] (2:node@c-1.me) 366712 | 366680
-> [ 375.000000] (2:node@c-1.me) 366744 | 366680
-> [ 375.000000] (2:node@c-1.me) 366808 | 366680
-> [ 375.000000] (2:node@c-1.me) 366936 | 366680
-> [ 375.000000] (2:node@c-1.me) 367192 | 366680
-> [ 375.000000] (2:node@c-1.me) 367704 | 366680
-> [ 375.000000] (2:node@c-1.me) 368728 | 366680
-> [ 375.000000] (2:node@c-1.me) 370776 | 366680
-> [ 375.000000] (2:node@c-1.me) 374872 | 366680
-> [ 375.000000] (2:node@c-1.me) 383064 | 366680
-> [ 375.000000] (2:node@c-1.me) 399448 | 366680
-> [ 375.000000] (2:node@c-1.me) 432216 | 366680
-> [ 375.000000] (2:node@c-1.me) 497752 | 366680
-> [ 375.000000] (2:node@c-1.me) 628824 | 366680
-> [ 375.000000] (2:node@c-1.me) 890968 | 366680
-> [ 375.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 375.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 375.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 375.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 375.000000] (2:node@c-1.me) Predecessor: 42
-> [ 382.000000] (1:node@c-0.me) My finger table:
-> [ 382.000000] (1:node@c-0.me) Start | Succ
-> [ 382.000000] (1:node@c-0.me) 43 | 366680
-> [ 382.000000] (1:node@c-0.me) 44 | 1319738
-> [ 382.000000] (1:node@c-0.me) 46 | 366680
-> [ 382.000000] (1:node@c-0.me) 50 | 42
-> [ 382.000000] (1:node@c-0.me) 58 | 42
-> [ 382.000000] (1:node@c-0.me) 74 | 42
-> [ 382.000000] (1:node@c-0.me) 106 | 42
-> [ 382.000000] (1:node@c-0.me) 170 | 42
-> [ 382.000000] (1:node@c-0.me) 298 | 42
-> [ 382.000000] (1:node@c-0.me) 554 | 42
-> [ 382.000000] (1:node@c-0.me) 1066 | 42
-> [ 382.000000] (1:node@c-0.me) 2090 | 42
-> [ 382.000000] (1:node@c-0.me) 4138 | 42
-> [ 382.000000] (1:node@c-0.me) 8234 | 42
-> [ 382.000000] (1:node@c-0.me) 16426 | 42
-> [ 382.000000] (1:node@c-0.me) 32810 | 42
-> [ 382.000000] (1:node@c-0.me) 65578 | 42
-> [ 382.000000] (1:node@c-0.me) 131114 | 42
-> [ 382.000000] (1:node@c-0.me) 262186 | 42
-> [ 382.000000] (1:node@c-0.me) 524330 | 42
-> [ 382.000000] (1:node@c-0.me) 1048618 | 42
-> [ 382.000000] (1:node@c-0.me) 2097194 | 42
-> [ 382.000000] (1:node@c-0.me) 4194346 | 42
-> [ 382.000000] (1:node@c-0.me) 8388650 | 42
-> [ 382.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 383.000000] (7:node@c-6.me) My finger table:
-> [ 383.000000] (7:node@c-6.me) Start | Succ
-> [ 383.000000] (7:node@c-6.me) 16728097 | 42
-> [ 383.000000] (7:node@c-6.me) 16728098 | 42
-> [ 383.000000] (7:node@c-6.me) 16728100 | 42
-> [ 383.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 383.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 383.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 383.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 383.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 383.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 383.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 383.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 383.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 385.000000] (10:node@c-9.me) My finger table:
-> [ 385.000000] (10:node@c-9.me) Start | Succ
-> [ 385.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 385.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 385.000000] (10:node@c-9.me) 2015257 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 385.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 385.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 385.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 385.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 385.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 427.000000] (9:node@c-8.me) My finger table:
-> [ 427.000000] (9:node@c-8.me) Start | Succ
-> [ 427.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 427.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 427.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 427.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 427.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 427.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 427.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 427.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 427.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 427.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 432.000000] (10:node@c-9.me) My finger table:
-> [ 432.000000] (10:node@c-9.me) Start | Succ
-> [ 432.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 432.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 432.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 432.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 432.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 432.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 432.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 432.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 432.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 484.000000] (4:node@c-3.me) My finger table:
-> [ 484.000000] (4:node@c-3.me) Start | Succ
-> [ 484.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 484.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 484.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 484.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 484.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 484.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 484.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 484.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 484.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 487.000000] (6:node@c-5.me) My finger table:
-> [ 487.000000] (6:node@c-5.me) Start | Succ
-> [ 487.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874892 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 487.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 487.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 487.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 487.000000] (6:node@c-5.me) Predecessor: -1
-> [ 490.000000] (8:node@c-7.me) My finger table:
-> [ 490.000000] (8:node@c-7.me) Start | Succ
-> [ 490.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 490.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 490.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 490.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 490.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 490.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 490.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 490.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 490.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 491.000000] (8:node@c-7.me) My finger table:
-> [ 491.000000] (8:node@c-7.me) Start | Succ
-> [ 491.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 491.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 491.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 491.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 491.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 491.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 496.000000] (7:node@c-6.me) My finger table:
-> [ 496.000000] (7:node@c-6.me) Start | Succ
-> [ 496.000000] (7:node@c-6.me) 16728097 | 42
-> [ 496.000000] (7:node@c-6.me) 16728098 | 42
-> [ 496.000000] (7:node@c-6.me) 16728100 | 42
-> [ 496.000000] (7:node@c-6.me) 16728104 | 42
-> [ 496.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 496.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 496.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 496.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 496.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 496.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 496.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 496.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 496.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 497.000000] (3:node@c-2.me) My finger table:
-> [ 497.000000] (3:node@c-2.me) Start | Succ
-> [ 497.000000] (3:node@c-2.me) 533745 | 6518808
-> [ 497.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 497.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 497.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 497.000000] (3:node@c-2.me) 533760 | 533744
-> [ 497.000000] (3:node@c-2.me) 533776 | 533744
-> [ 497.000000] (3:node@c-2.me) 533808 | 533744
-> [ 497.000000] (3:node@c-2.me) 533872 | 533744
-> [ 497.000000] (3:node@c-2.me) 534000 | 533744
-> [ 497.000000] (3:node@c-2.me) 534256 | 533744
-> [ 497.000000] (3:node@c-2.me) 534768 | 533744
-> [ 497.000000] (3:node@c-2.me) 535792 | 533744
-> [ 497.000000] (3:node@c-2.me) 537840 | 533744
-> [ 497.000000] (3:node@c-2.me) 541936 | 533744
-> [ 497.000000] (3:node@c-2.me) 550128 | 533744
-> [ 497.000000] (3:node@c-2.me) 566512 | 533744
-> [ 497.000000] (3:node@c-2.me) 599280 | 533744
-> [ 497.000000] (3:node@c-2.me) 664816 | 533744
-> [ 497.000000] (3:node@c-2.me) 795888 | 533744
-> [ 497.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 497.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 497.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 497.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 497.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 497.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 502.000000] (1:node@c-0.me) My finger table:
-> [ 502.000000] (1:node@c-0.me) Start | Succ
-> [ 502.000000] (1:node@c-0.me) 43 | 366680
-> [ 502.000000] (1:node@c-0.me) 44 | 1319738
-> [ 502.000000] (1:node@c-0.me) 46 | 366680
-> [ 502.000000] (1:node@c-0.me) 50 | 366680
-> [ 502.000000] (1:node@c-0.me) 58 | 42
-> [ 502.000000] (1:node@c-0.me) 74 | 42
-> [ 502.000000] (1:node@c-0.me) 106 | 42
-> [ 502.000000] (1:node@c-0.me) 170 | 42
-> [ 502.000000] (1:node@c-0.me) 298 | 42
-> [ 502.000000] (1:node@c-0.me) 554 | 42
-> [ 502.000000] (1:node@c-0.me) 1066 | 42
-> [ 502.000000] (1:node@c-0.me) 2090 | 42
-> [ 502.000000] (1:node@c-0.me) 4138 | 42
-> [ 502.000000] (1:node@c-0.me) 8234 | 42
-> [ 502.000000] (1:node@c-0.me) 16426 | 42
-> [ 502.000000] (1:node@c-0.me) 32810 | 42
-> [ 502.000000] (1:node@c-0.me) 65578 | 42
-> [ 502.000000] (1:node@c-0.me) 131114 | 42
-> [ 502.000000] (1:node@c-0.me) 262186 | 42
-> [ 502.000000] (1:node@c-0.me) 524330 | 42
-> [ 502.000000] (1:node@c-0.me) 1048618 | 42
-> [ 502.000000] (1:node@c-0.me) 2097194 | 42
-> [ 502.000000] (1:node@c-0.me) 4194346 | 42
-> [ 502.000000] (1:node@c-0.me) 8388650 | 42
-> [ 502.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 505.000000] (2:node@c-1.me) My finger table:
-> [ 505.000000] (2:node@c-1.me) Start | Succ
-> [ 505.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366696 | 366680
-> [ 505.000000] (2:node@c-1.me) 366712 | 366680
-> [ 505.000000] (2:node@c-1.me) 366744 | 366680
-> [ 505.000000] (2:node@c-1.me) 366808 | 366680
-> [ 505.000000] (2:node@c-1.me) 366936 | 366680
-> [ 505.000000] (2:node@c-1.me) 367192 | 366680
-> [ 505.000000] (2:node@c-1.me) 367704 | 366680
-> [ 505.000000] (2:node@c-1.me) 368728 | 366680
-> [ 505.000000] (2:node@c-1.me) 370776 | 366680
-> [ 505.000000] (2:node@c-1.me) 374872 | 366680
-> [ 505.000000] (2:node@c-1.me) 383064 | 366680
-> [ 505.000000] (2:node@c-1.me) 399448 | 366680
-> [ 505.000000] (2:node@c-1.me) 432216 | 366680
-> [ 505.000000] (2:node@c-1.me) 497752 | 366680
-> [ 505.000000] (2:node@c-1.me) 628824 | 366680
-> [ 505.000000] (2:node@c-1.me) 890968 | 366680
-> [ 505.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 505.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 505.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 505.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 505.000000] (2:node@c-1.me) Predecessor: 42
-> [ 513.000000] (5:node@c-4.me) My finger table:
-> [ 513.000000] (5:node@c-4.me) Start | Succ
-> [ 513.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 513.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 513.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 513.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 513.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 513.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 513.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 513.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 513.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 513.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 513.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 558.000000] (9:node@c-8.me) My finger table:
-> [ 558.000000] (9:node@c-8.me) Start | Succ
-> [ 558.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 558.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 558.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 558.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 558.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 558.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 558.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 558.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 558.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 558.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 558.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 573.000000] (10:node@c-9.me) My finger table:
-> [ 573.000000] (10:node@c-9.me) Start | Succ
-> [ 573.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 573.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 573.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 573.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 573.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 573.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 573.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 573.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 573.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 573.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 600.000000] (4:node@c-3.me) My finger table:
-> [ 600.000000] (4:node@c-3.me) Start | Succ
-> [ 600.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 600.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 600.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 600.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 600.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 600.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 600.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 600.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 600.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 610.000000] (6:node@c-5.me) My finger table:
-> [ 610.000000] (6:node@c-5.me) Start | Succ
-> [ 610.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 610.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 610.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 610.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 610.000000] (6:node@c-5.me) Predecessor: -1
-> [ 656.000000] (5:node@c-4.me) My finger table:
-> [ 656.000000] (5:node@c-4.me) Start | Succ
-> [ 656.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 656.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 656.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 656.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 656.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 656.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 656.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 656.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 657.000000] (7:node@c-6.me) My finger table:
-> [ 657.000000] (7:node@c-6.me) Start | Succ
-> [ 657.000000] (7:node@c-6.me) 16728097 | 42
-> [ 657.000000] (7:node@c-6.me) 16728098 | 42
-> [ 657.000000] (7:node@c-6.me) 16728100 | 42
-> [ 657.000000] (7:node@c-6.me) 16728104 | 42
-> [ 657.000000] (7:node@c-6.me) 16728112 | 42
-> [ 657.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 657.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 657.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 657.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 657.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 657.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 657.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 657.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 657.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 663.000000] (4:node@c-3.me) My finger table:
-> [ 663.000000] (4:node@c-3.me) Start | Succ
-> [ 663.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 663.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 663.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 663.000000] (4:node@c-3.me) 1319746 | 2015253
-> [ 663.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 663.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 663.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 663.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 663.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 663.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 665.000000] (1:node@c-0.me) My finger table:
-> [ 665.000000] (1:node@c-0.me) Start | Succ
-> [ 665.000000] (1:node@c-0.me) 43 | 366680
-> [ 665.000000] (1:node@c-0.me) 44 | 1319738
-> [ 665.000000] (1:node@c-0.me) 46 | 366680
-> [ 665.000000] (1:node@c-0.me) 50 | 366680
-> [ 665.000000] (1:node@c-0.me) 58 | 366680
-> [ 665.000000] (1:node@c-0.me) 74 | 42
-> [ 665.000000] (1:node@c-0.me) 106 | 42
-> [ 665.000000] (1:node@c-0.me) 170 | 42
-> [ 665.000000] (1:node@c-0.me) 298 | 42
-> [ 665.000000] (1:node@c-0.me) 554 | 42
-> [ 665.000000] (1:node@c-0.me) 1066 | 42
-> [ 665.000000] (1:node@c-0.me) 2090 | 42
-> [ 665.000000] (1:node@c-0.me) 4138 | 42
-> [ 665.000000] (1:node@c-0.me) 8234 | 42
-> [ 665.000000] (1:node@c-0.me) 16426 | 42
-> [ 665.000000] (1:node@c-0.me) 32810 | 42
-> [ 665.000000] (1:node@c-0.me) 65578 | 42
-> [ 665.000000] (1:node@c-0.me) 131114 | 42
-> [ 665.000000] (1:node@c-0.me) 262186 | 42
-> [ 665.000000] (1:node@c-0.me) 524330 | 42
-> [ 665.000000] (1:node@c-0.me) 1048618 | 42
-> [ 665.000000] (1:node@c-0.me) 2097194 | 42
-> [ 665.000000] (1:node@c-0.me) 4194346 | 42
-> [ 665.000000] (1:node@c-0.me) 8388650 | 42
-> [ 665.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 669.000000] (8:node@c-7.me) My finger table:
-> [ 669.000000] (8:node@c-7.me) Start | Succ
-> [ 669.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004776 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 669.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 669.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 669.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 669.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 669.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 671.000000] (3:node@c-2.me) My finger table:
-> [ 671.000000] (3:node@c-2.me) Start | Succ
-> [ 671.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 671.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 671.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 671.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 671.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 671.000000] (3:node@c-2.me) 533776 | 533744
-> [ 671.000000] (3:node@c-2.me) 533808 | 533744
-> [ 671.000000] (3:node@c-2.me) 533872 | 533744
-> [ 671.000000] (3:node@c-2.me) 534000 | 533744
-> [ 671.000000] (3:node@c-2.me) 534256 | 533744
-> [ 671.000000] (3:node@c-2.me) 534768 | 533744
-> [ 671.000000] (3:node@c-2.me) 535792 | 533744
-> [ 671.000000] (3:node@c-2.me) 537840 | 533744
-> [ 671.000000] (3:node@c-2.me) 541936 | 533744
-> [ 671.000000] (3:node@c-2.me) 550128 | 533744
-> [ 671.000000] (3:node@c-2.me) 566512 | 533744
-> [ 671.000000] (3:node@c-2.me) 599280 | 533744
-> [ 671.000000] (3:node@c-2.me) 664816 | 533744
-> [ 671.000000] (3:node@c-2.me) 795888 | 533744
-> [ 671.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 671.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 671.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 671.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 671.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 671.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 678.000000] (9:node@c-8.me) My finger table:
-> [ 678.000000] (9:node@c-8.me) Start | Succ
-> [ 678.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 678.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518824 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 678.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 678.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 678.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 678.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 678.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 678.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 683.000000] (2:node@c-1.me) My finger table:
-> [ 683.000000] (2:node@c-1.me) Start | Succ
-> [ 683.000000] (2:node@c-1.me) 366681 | 533744
-> [ 683.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 683.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 683.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 683.000000] (2:node@c-1.me) 366696 | 533744
-> [ 683.000000] (2:node@c-1.me) 366712 | 366680
-> [ 683.000000] (2:node@c-1.me) 366744 | 366680
-> [ 683.000000] (2:node@c-1.me) 366808 | 366680
-> [ 683.000000] (2:node@c-1.me) 366936 | 366680
-> [ 683.000000] (2:node@c-1.me) 367192 | 366680
-> [ 683.000000] (2:node@c-1.me) 367704 | 366680
-> [ 683.000000] (2:node@c-1.me) 368728 | 366680
-> [ 683.000000] (2:node@c-1.me) 370776 | 366680
-> [ 683.000000] (2:node@c-1.me) 374872 | 366680
-> [ 683.000000] (2:node@c-1.me) 383064 | 366680
-> [ 683.000000] (2:node@c-1.me) 399448 | 366680
-> [ 683.000000] (2:node@c-1.me) 432216 | 366680
-> [ 683.000000] (2:node@c-1.me) 497752 | 366680
-> [ 683.000000] (2:node@c-1.me) 628824 | 366680
-> [ 683.000000] (2:node@c-1.me) 890968 | 366680
-> [ 683.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 683.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 683.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 683.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 683.000000] (2:node@c-1.me) Predecessor: 42
-> [ 684.000000] (3:node@c-2.me) My finger table:
-> [ 684.000000] (3:node@c-2.me) Start | Succ
-> [ 684.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 684.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 684.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 684.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 684.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 684.000000] (3:node@c-2.me) 533776 | 533744
-> [ 684.000000] (3:node@c-2.me) 533808 | 533744
-> [ 684.000000] (3:node@c-2.me) 533872 | 533744
-> [ 684.000000] (3:node@c-2.me) 534000 | 533744
-> [ 684.000000] (3:node@c-2.me) 534256 | 533744
-> [ 684.000000] (3:node@c-2.me) 534768 | 533744
-> [ 684.000000] (3:node@c-2.me) 535792 | 533744
-> [ 684.000000] (3:node@c-2.me) 537840 | 533744
-> [ 684.000000] (3:node@c-2.me) 541936 | 533744
-> [ 684.000000] (3:node@c-2.me) 550128 | 533744
-> [ 684.000000] (3:node@c-2.me) 566512 | 533744
-> [ 684.000000] (3:node@c-2.me) 599280 | 533744
-> [ 684.000000] (3:node@c-2.me) 664816 | 533744
-> [ 684.000000] (3:node@c-2.me) 795888 | 533744
-> [ 684.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 684.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 684.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 684.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 684.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 684.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 721.000000] (10:node@c-9.me) My finger table:
-> [ 721.000000] (10:node@c-9.me) Start | Succ
-> [ 721.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 721.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015269 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 721.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 721.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 721.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 721.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 721.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 744.000000] (6:node@c-5.me) My finger table:
-> [ 744.000000] (6:node@c-5.me) Start | Succ
-> [ 744.000000] (6:node@c-5.me) 10874877 | 16728096
-> [ 744.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 744.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 744.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 744.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 744.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 744.000000] (6:node@c-5.me) Predecessor: -1
-> [ 777.000000] (7:node@c-6.me) My finger table:
-> [ 777.000000] (7:node@c-6.me) Start | Succ
-> [ 777.000000] (7:node@c-6.me) 16728097 | 42
-> [ 777.000000] (7:node@c-6.me) 16728098 | 42
-> [ 777.000000] (7:node@c-6.me) 16728100 | 42
-> [ 777.000000] (7:node@c-6.me) 16728104 | 42
-> [ 777.000000] (7:node@c-6.me) 16728112 | 42
-> [ 777.000000] (7:node@c-6.me) 16728128 | 42
-> [ 777.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 777.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 777.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 777.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 777.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 777.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 777.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 777.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 777.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 786.000000] (5:node@c-4.me) My finger table:
-> [ 786.000000] (5:node@c-4.me) Start | Succ
-> [ 786.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 786.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509437 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 786.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 786.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 786.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 786.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 786.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 786.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 787.000000] (4:node@c-3.me) My finger table:
-> [ 787.000000] (4:node@c-3.me) Start | Succ
-> [ 787.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 787.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319746 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319754 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 787.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 787.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 787.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 787.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 787.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 788.000000] (1:node@c-0.me) My finger table:
-> [ 788.000000] (1:node@c-0.me) Start | Succ
-> [ 788.000000] (1:node@c-0.me) 43 | 366680
-> [ 788.000000] (1:node@c-0.me) 44 | 1319738
-> [ 788.000000] (1:node@c-0.me) 46 | 366680
-> [ 788.000000] (1:node@c-0.me) 50 | 366680
-> [ 788.000000] (1:node@c-0.me) 58 | 366680
-> [ 788.000000] (1:node@c-0.me) 74 | 366680
-> [ 788.000000] (1:node@c-0.me) 106 | 42
-> [ 788.000000] (1:node@c-0.me) 170 | 42
-> [ 788.000000] (1:node@c-0.me) 298 | 42
-> [ 788.000000] (1:node@c-0.me) 554 | 42
-> [ 788.000000] (1:node@c-0.me) 1066 | 42
-> [ 788.000000] (1:node@c-0.me) 2090 | 42
-> [ 788.000000] (1:node@c-0.me) 4138 | 42
-> [ 788.000000] (1:node@c-0.me) 8234 | 42
-> [ 788.000000] (1:node@c-0.me) 16426 | 42
-> [ 788.000000] (1:node@c-0.me) 32810 | 42
-> [ 788.000000] (1:node@c-0.me) 65578 | 42
-> [ 788.000000] (1:node@c-0.me) 131114 | 42
-> [ 788.000000] (1:node@c-0.me) 262186 | 42
-> [ 788.000000] (1:node@c-0.me) 524330 | 42
-> [ 788.000000] (1:node@c-0.me) 1048618 | 42
-> [ 788.000000] (1:node@c-0.me) 2097194 | 42
-> [ 788.000000] (1:node@c-0.me) 4194346 | 42
-> [ 788.000000] (1:node@c-0.me) 8388650 | 42
-> [ 788.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 793.000000] (3:node@c-2.me) My finger table:
-> [ 793.000000] (3:node@c-2.me) Start | Succ
-> [ 793.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 793.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 793.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 793.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 793.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 793.000000] (3:node@c-2.me) 533776 | 1319738
-> [ 793.000000] (3:node@c-2.me) 533808 | 533744
-> [ 793.000000] (3:node@c-2.me) 533872 | 533744
-> [ 793.000000] (3:node@c-2.me) 534000 | 533744
-> [ 793.000000] (3:node@c-2.me) 534256 | 533744
-> [ 793.000000] (3:node@c-2.me) 534768 | 533744
-> [ 793.000000] (3:node@c-2.me) 535792 | 533744
-> [ 793.000000] (3:node@c-2.me) 537840 | 533744
-> [ 793.000000] (3:node@c-2.me) 541936 | 533744
-> [ 793.000000] (3:node@c-2.me) 550128 | 533744
-> [ 793.000000] (3:node@c-2.me) 566512 | 533744
-> [ 793.000000] (3:node@c-2.me) 599280 | 533744
-> [ 793.000000] (3:node@c-2.me) 664816 | 533744
-> [ 793.000000] (3:node@c-2.me) 795888 | 533744
-> [ 793.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 793.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 793.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 793.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 793.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 793.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 797.000000] (5:node@c-4.me) My finger table:
-> [ 797.000000] (5:node@c-4.me) Start | Succ
-> [ 797.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 797.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509437 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 797.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 797.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 797.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 797.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 797.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 797.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 798.000000] (8:node@c-7.me) My finger table:
-> [ 798.000000] (8:node@c-7.me) Start | Succ
-> [ 798.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004776 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004792 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 798.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 798.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 798.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 798.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 798.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 801.000000] (9:node@c-8.me) My finger table:
-> [ 801.000000] (9:node@c-8.me) Start | Succ
-> [ 801.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 801.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518824 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518840 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 801.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 801.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 801.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 801.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 801.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 801.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 804.000000] (2:node@c-1.me) My finger table:
-> [ 804.000000] (2:node@c-1.me) Start | Succ
-> [ 804.000000] (2:node@c-1.me) 366681 | 533744
-> [ 804.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 804.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 804.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 804.000000] (2:node@c-1.me) 366696 | 533744
-> [ 804.000000] (2:node@c-1.me) 366712 | 533744
-> [ 804.000000] (2:node@c-1.me) 366744 | 366680
-> [ 804.000000] (2:node@c-1.me) 366808 | 366680
-> [ 804.000000] (2:node@c-1.me) 366936 | 366680
-> [ 804.000000] (2:node@c-1.me) 367192 | 366680
-> [ 804.000000] (2:node@c-1.me) 367704 | 366680
-> [ 804.000000] (2:node@c-1.me) 368728 | 366680
-> [ 804.000000] (2:node@c-1.me) 370776 | 366680
-> [ 804.000000] (2:node@c-1.me) 374872 | 366680
-> [ 804.000000] (2:node@c-1.me) 383064 | 366680
-> [ 804.000000] (2:node@c-1.me) 399448 | 366680
-> [ 804.000000] (2:node@c-1.me) 432216 | 366680
-> [ 804.000000] (2:node@c-1.me) 497752 | 366680
-> [ 804.000000] (2:node@c-1.me) 628824 | 366680
-> [ 804.000000] (2:node@c-1.me) 890968 | 366680
-> [ 804.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 804.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 804.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 804.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 804.000000] (2:node@c-1.me) Predecessor: 42
-> [ 843.000000] (10:node@c-9.me) My finger table:
-> [ 843.000000] (10:node@c-9.me) Start | Succ
-> [ 843.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 843.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015269 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015285 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 843.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 843.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 843.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 843.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 843.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 865.000000] (6:node@c-5.me) My finger table:
-> [ 865.000000] (6:node@c-5.me) Start | Succ
-> [ 865.000000] (6:node@c-5.me) 10874877 | 16509405
-> [ 865.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 865.000000] (6:node@c-5.me) 10874940 | 16509405
-> [ 865.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 865.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 865.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 865.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 865.000000] (6:node@c-5.me) Predecessor: -1
-> [ 870.000000] (6:node@c-5.me) My finger table:
-> [ 870.000000] (6:node@c-5.me) Start | Succ
-> [ 870.000000] (6:node@c-5.me) 10874877 | 16509405
-> [ 870.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 870.000000] (6:node@c-5.me) 10874940 | 16509405
-> [ 870.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 870.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 870.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 870.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 870.000000] (6:node@c-5.me) Predecessor: 10004760
-> [ 910.000000] (5:node@c-4.me) My finger table:
-> [ 910.000000] (5:node@c-4.me) Start | Succ
-> [ 910.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 910.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509437 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509469 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 910.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 910.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 910.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 910.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 910.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 910.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 912.000000] (1:node@c-0.me) My finger table:
-> [ 912.000000] (1:node@c-0.me) Start | Succ
-> [ 912.000000] (1:node@c-0.me) 43 | 366680
-> [ 912.000000] (1:node@c-0.me) 44 | 1319738
-> [ 912.000000] (1:node@c-0.me) 46 | 366680
-> [ 912.000000] (1:node@c-0.me) 50 | 366680
-> [ 912.000000] (1:node@c-0.me) 58 | 366680
-> [ 912.000000] (1:node@c-0.me) 74 | 366680
-> [ 912.000000] (1:node@c-0.me) 106 | 366680
-> [ 912.000000] (1:node@c-0.me) 170 | 42
-> [ 912.000000] (1:node@c-0.me) 298 | 42
-> [ 912.000000] (1:node@c-0.me) 554 | 42
-> [ 912.000000] (1:node@c-0.me) 1066 | 42
-> [ 912.000000] (1:node@c-0.me) 2090 | 42
-> [ 912.000000] (1:node@c-0.me) 4138 | 42
-> [ 912.000000] (1:node@c-0.me) 8234 | 42
-> [ 912.000000] (1:node@c-0.me) 16426 | 42
-> [ 912.000000] (1:node@c-0.me) 32810 | 42
-> [ 912.000000] (1:node@c-0.me) 65578 | 42
-> [ 912.000000] (1:node@c-0.me) 131114 | 42
-> [ 912.000000] (1:node@c-0.me) 262186 | 42
-> [ 912.000000] (1:node@c-0.me) 524330 | 42
-> [ 912.000000] (1:node@c-0.me) 1048618 | 42
-> [ 912.000000] (1:node@c-0.me) 2097194 | 42
-> [ 912.000000] (1:node@c-0.me) 4194346 | 42
-> [ 912.000000] (1:node@c-0.me) 8388650 | 42
-> [ 912.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 913.000000] (3:node@c-2.me) My finger table:
-> [ 913.000000] (3:node@c-2.me) Start | Succ
-> [ 913.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 913.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 913.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 913.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533776 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533808 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533872 | 533744
-> [ 913.000000] (3:node@c-2.me) 534000 | 533744
-> [ 913.000000] (3:node@c-2.me) 534256 | 533744
-> [ 913.000000] (3:node@c-2.me) 534768 | 533744
-> [ 913.000000] (3:node@c-2.me) 535792 | 533744
-> [ 913.000000] (3:node@c-2.me) 537840 | 533744
-> [ 913.000000] (3:node@c-2.me) 541936 | 533744
-> [ 913.000000] (3:node@c-2.me) 550128 | 533744
-> [ 913.000000] (3:node@c-2.me) 566512 | 533744
-> [ 913.000000] (3:node@c-2.me) 599280 | 533744
-> [ 913.000000] (3:node@c-2.me) 664816 | 533744
-> [ 913.000000] (3:node@c-2.me) 795888 | 533744
-> [ 913.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 913.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 913.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 913.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 913.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 913.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 921.000000] (8:node@c-7.me) My finger table:
-> [ 921.000000] (8:node@c-7.me) Start | Succ
-> [ 921.000000] (8:node@c-7.me) 10004761 | 10874876
-> [ 921.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004776 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004792 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004824 | 10874876
-> [ 921.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 921.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 921.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 921.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 921.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 921.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 964.000000] (2:node@c-1.me) My finger table:
-> [ 964.000000] (2:node@c-1.me) Start | Succ
-> [ 964.000000] (2:node@c-1.me) 366681 | 533744
-> [ 964.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 964.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 964.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 964.000000] (2:node@c-1.me) 366696 | 533744
-> [ 964.000000] (2:node@c-1.me) 366712 | 533744
-> [ 964.000000] (2:node@c-1.me) 366744 | 533744
-> [ 964.000000] (2:node@c-1.me) 366808 | 366680
-> [ 964.000000] (2:node@c-1.me) 366936 | 366680
-> [ 964.000000] (2:node@c-1.me) 367192 | 366680
-> [ 964.000000] (2:node@c-1.me) 367704 | 366680
-> [ 964.000000] (2:node@c-1.me) 368728 | 366680
-> [ 964.000000] (2:node@c-1.me) 370776 | 366680
-> [ 964.000000] (2:node@c-1.me) 374872 | 366680
-> [ 964.000000] (2:node@c-1.me) 383064 | 366680
-> [ 964.000000] (2:node@c-1.me) 399448 | 366680
-> [ 964.000000] (2:node@c-1.me) 432216 | 366680
-> [ 964.000000] (2:node@c-1.me) 497752 | 366680
-> [ 964.000000] (2:node@c-1.me) 628824 | 366680
-> [ 964.000000] (2:node@c-1.me) 890968 | 366680
-> [ 964.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 964.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 964.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 964.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 964.000000] (2:node@c-1.me) Predecessor: 42
-> [ 966.000000] (4:node@c-3.me) My finger table:
-> [ 966.000000] (4:node@c-3.me) Start | Succ
-> [ 966.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 966.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319746 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319754 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319770 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 966.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 966.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 966.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 966.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 966.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 966.000000] (7:node@c-6.me) My finger table:
-> [ 966.000000] (7:node@c-6.me) Start | Succ
-> [ 966.000000] (7:node@c-6.me) 16728097 | 42
-> [ 966.000000] (7:node@c-6.me) 16728098 | 42
-> [ 966.000000] (7:node@c-6.me) 16728100 | 42
-> [ 966.000000] (7:node@c-6.me) 16728104 | 42
-> [ 966.000000] (7:node@c-6.me) 16728112 | 42
-> [ 966.000000] (7:node@c-6.me) 16728128 | 42
-> [ 966.000000] (7:node@c-6.me) 16728160 | 42
-> [ 966.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 966.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 966.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 966.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 966.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 966.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 966.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 966.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 966.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 973.000000] (9:node@c-8.me) My finger table:
-> [ 973.000000] (9:node@c-8.me) Start | Succ
-> [ 973.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 973.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518824 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518840 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518872 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 973.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 973.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 973.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 973.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 973.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 973.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 979.000000] (10:node@c-9.me) My finger table:
-> [ 979.000000] (10:node@c-9.me) Start | Succ
-> [ 979.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 979.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015269 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015285 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015317 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 979.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 979.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 979.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 979.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 979.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 987.000000] (6:node@c-5.me) My finger table:
-> [ 987.000000] (6:node@c-5.me) Start | Succ
-> [ 987.000000] (6:node@c-5.me) 10874877 | 16509405
-> [ 987.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 987.000000] (6:node@c-5.me) 10874940 | 16509405
-> [ 987.000000] (6:node@c-5.me) 10875004 | 16509405
-> [ 987.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 987.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 987.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 987.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 987.000000] (6:node@c-5.me) Predecessor: 10004760
-> [1196.000000] (0:@) Messages created: 1827
-> [1196.000000] (0:@) Simulated time: 1196
\ No newline at end of file
+> [ 5.999900] (2:node@c-1.me) My finger table:
+> [ 5.999900] (2:node@c-1.me) Start | Succ
+> [ 5.999900] (2:node@c-1.me) 366681 | 42
+> [ 5.999900] (2:node@c-1.me) 366682 | 366680
+> [ 5.999900] (2:node@c-1.me) 366684 | 366680
+> [ 5.999900] (2:node@c-1.me) 366688 | 366680
+> [ 5.999900] (2:node@c-1.me) 366696 | 366680
+> [ 5.999900] (2:node@c-1.me) 366712 | 366680
+> [ 5.999900] (2:node@c-1.me) 366744 | 366680
+> [ 5.999900] (2:node@c-1.me) 366808 | 366680
+> [ 5.999900] (2:node@c-1.me) 366936 | 366680
+> [ 5.999900] (2:node@c-1.me) 367192 | 366680
+> [ 5.999900] (2:node@c-1.me) 367704 | 366680
+> [ 5.999900] (2:node@c-1.me) 368728 | 366680
+> [ 5.999900] (2:node@c-1.me) 370776 | 366680
+> [ 5.999900] (2:node@c-1.me) 374872 | 366680
+> [ 5.999900] (2:node@c-1.me) 383064 | 366680
+> [ 5.999900] (2:node@c-1.me) 399448 | 366680
+> [ 5.999900] (2:node@c-1.me) 432216 | 366680
+> [ 5.999900] (2:node@c-1.me) 497752 | 366680
+> [ 5.999900] (2:node@c-1.me) 628824 | 366680
+> [ 5.999900] (2:node@c-1.me) 890968 | 366680
+> [ 5.999900] (2:node@c-1.me) 1415256 | 366680
+> [ 5.999900] (2:node@c-1.me) 2463832 | 366680
+> [ 5.999900] (2:node@c-1.me) 4560984 | 366680
+> [ 5.999900] (2:node@c-1.me) 8755288 | 366680
+> [ 5.999900] (2:node@c-1.me) Predecessor: -1
+> [ 7.999900] (7:node@c-6.me) My finger table:
+> [ 7.999900] (7:node@c-6.me) Start | Succ
+> [ 7.999900] (7:node@c-6.me) 16728097 | 1319738
+> [ 7.999900] (7:node@c-6.me) 16728098 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728100 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728104 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728112 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728128 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728160 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728224 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728352 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728608 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16729120 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16730144 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16732192 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16736288 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16744480 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16760864 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16416 | 16728096
+> [ 7.999900] (7:node@c-6.me) 81952 | 16728096
+> [ 7.999900] (7:node@c-6.me) 213024 | 16728096
+> [ 7.999900] (7:node@c-6.me) 475168 | 16728096
+> [ 7.999900] (7:node@c-6.me) 999456 | 16728096
+> [ 7.999900] (7:node@c-6.me) 2048032 | 16728096
+> [ 7.999900] (7:node@c-6.me) 4145184 | 16728096
+> [ 7.999900] (7:node@c-6.me) 8339488 | 16728096
+> [ 7.999900] (7:node@c-6.me) Predecessor: -1
+> [ 8.999900] (10:node@c-9.me) My finger table:
+> [ 8.999900] (10:node@c-9.me) Start | Succ
+> [ 8.999900] (10:node@c-9.me) 2015254 | 1319738
+> [ 8.999900] (10:node@c-9.me) 2015255 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015257 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015261 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015269 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015285 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015317 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015381 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015509 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015765 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2016277 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2017301 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2019349 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2023445 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2031637 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2048021 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2080789 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2146325 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2277397 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2539541 | 2015253
+> [ 8.999900] (10:node@c-9.me) 3063829 | 2015253
+> [ 8.999900] (10:node@c-9.me) 4112405 | 2015253
+> [ 8.999900] (10:node@c-9.me) 6209557 | 2015253
+> [ 8.999900] (10:node@c-9.me) 10403861 | 2015253
+> [ 8.999900] (10:node@c-9.me) Predecessor: -1
+> [ 10.999800] (4:node@c-3.me) My finger table:
+> [ 10.999800] (4:node@c-3.me) Start | Succ
+> [ 10.999800] (4:node@c-3.me) 1319739 | 42
+> [ 10.999800] (4:node@c-3.me) 1319740 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319742 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319746 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319754 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319770 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319802 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319866 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319994 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1320250 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1320762 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1321786 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1323834 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1327930 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1336122 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1352506 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1385274 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1450810 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1581882 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1844026 | 1319738
+> [ 10.999800] (4:node@c-3.me) 2368314 | 1319738
+> [ 10.999800] (4:node@c-3.me) 3416890 | 1319738
+> [ 10.999800] (4:node@c-3.me) 5514042 | 1319738
+> [ 10.999800] (4:node@c-3.me) 9708346 | 1319738
+> [ 10.999800] (4:node@c-3.me) Predecessor: -1
+> [ 15.999700] (9:node@c-8.me) My finger table:
+> [ 15.999700] (9:node@c-8.me) Start | Succ
+> [ 15.999700] (9:node@c-8.me) 6518809 | 42
+> [ 15.999700] (9:node@c-8.me) 6518810 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518812 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518816 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518824 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518840 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518872 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518936 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6519064 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6519320 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6519832 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6520856 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6522904 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6527000 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6535192 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6551576 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6584344 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6649880 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6780952 | 6518808
+> [ 15.999700] (9:node@c-8.me) 7043096 | 6518808
+> [ 15.999700] (9:node@c-8.me) 7567384 | 6518808
+> [ 15.999700] (9:node@c-8.me) 8615960 | 6518808
+> [ 15.999700] (9:node@c-8.me) 10713112 | 6518808
+> [ 15.999700] (9:node@c-8.me) 14907416 | 6518808
+> [ 15.999700] (9:node@c-8.me) Predecessor: -1
+> [ 26.999600] (3:node@c-2.me) My finger table:
+> [ 26.999600] (3:node@c-2.me) Start | Succ
+> [ 26.999600] (3:node@c-2.me) 533745 | 366680
+> [ 26.999600] (3:node@c-2.me) 533746 | 533744
+> [ 26.999600] (3:node@c-2.me) 533748 | 533744
+> [ 26.999600] (3:node@c-2.me) 533752 | 533744
+> [ 26.999600] (3:node@c-2.me) 533760 | 533744
+> [ 26.999600] (3:node@c-2.me) 533776 | 533744
+> [ 26.999600] (3:node@c-2.me) 533808 | 533744
+> [ 26.999600] (3:node@c-2.me) 533872 | 533744
+> [ 26.999600] (3:node@c-2.me) 534000 | 533744
+> [ 26.999600] (3:node@c-2.me) 534256 | 533744
+> [ 26.999600] (3:node@c-2.me) 534768 | 533744
+> [ 26.999600] (3:node@c-2.me) 535792 | 533744
+> [ 26.999600] (3:node@c-2.me) 537840 | 533744
+> [ 26.999600] (3:node@c-2.me) 541936 | 533744
+> [ 26.999600] (3:node@c-2.me) 550128 | 533744
+> [ 26.999600] (3:node@c-2.me) 566512 | 533744
+> [ 26.999600] (3:node@c-2.me) 599280 | 533744
+> [ 26.999600] (3:node@c-2.me) 664816 | 533744
+> [ 26.999600] (3:node@c-2.me) 795888 | 533744
+> [ 26.999600] (3:node@c-2.me) 1058032 | 533744
+> [ 26.999600] (3:node@c-2.me) 1582320 | 533744
+> [ 26.999600] (3:node@c-2.me) 2630896 | 533744
+> [ 26.999600] (3:node@c-2.me) 4728048 | 533744
+> [ 26.999600] (3:node@c-2.me) 8922352 | 533744
+> [ 26.999600] (3:node@c-2.me) Predecessor: 10874876
+> [ 31.999400] (5:node@c-4.me) My finger table:
+> [ 31.999400] (5:node@c-4.me) Start | Succ
+> [ 31.999400] (5:node@c-4.me) 16509406 | 366680
+> [ 31.999400] (5:node@c-4.me) 16509407 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509409 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509413 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509421 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509437 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509469 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509533 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509661 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509917 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16510429 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16511453 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16513501 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16517597 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16525789 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16542173 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16574941 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16640477 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16771549 | 16509405
+> [ 31.999400] (5:node@c-4.me) 256477 | 16509405
+> [ 31.999400] (5:node@c-4.me) 780765 | 16509405
+> [ 31.999400] (5:node@c-4.me) 1829341 | 16509405
+> [ 31.999400] (5:node@c-4.me) 3926493 | 16509405
+> [ 31.999400] (5:node@c-4.me) 8120797 | 16509405
+> [ 31.999400] (5:node@c-4.me) Predecessor: 10004760
+> [ 32.999400] (2:node@c-1.me) My finger table:
+> [ 32.999400] (2:node@c-1.me) Start | Succ
+> [ 32.999400] (2:node@c-1.me) 366681 | 42
+> [ 32.999400] (2:node@c-1.me) 366682 | 366680
+> [ 32.999400] (2:node@c-1.me) 366684 | 366680
+> [ 32.999400] (2:node@c-1.me) 366688 | 366680
+> [ 32.999400] (2:node@c-1.me) 366696 | 366680
+> [ 32.999400] (2:node@c-1.me) 366712 | 366680
+> [ 32.999400] (2:node@c-1.me) 366744 | 366680
+> [ 32.999400] (2:node@c-1.me) 366808 | 366680
+> [ 32.999400] (2:node@c-1.me) 366936 | 366680
+> [ 32.999400] (2:node@c-1.me) 367192 | 366680
+> [ 32.999400] (2:node@c-1.me) 367704 | 366680
+> [ 32.999400] (2:node@c-1.me) 368728 | 366680
+> [ 32.999400] (2:node@c-1.me) 370776 | 366680
+> [ 32.999400] (2:node@c-1.me) 374872 | 366680
+> [ 32.999400] (2:node@c-1.me) 383064 | 366680
+> [ 32.999400] (2:node@c-1.me) 399448 | 366680
+> [ 32.999400] (2:node@c-1.me) 432216 | 366680
+> [ 32.999400] (2:node@c-1.me) 497752 | 366680
+> [ 32.999400] (2:node@c-1.me) 628824 | 366680
+> [ 32.999400] (2:node@c-1.me) 890968 | 366680
+> [ 32.999400] (2:node@c-1.me) 1415256 | 366680
+> [ 32.999400] (2:node@c-1.me) 2463832 | 366680
+> [ 32.999400] (2:node@c-1.me) 4560984 | 366680
+> [ 32.999400] (2:node@c-1.me) 8755288 | 366680
+> [ 32.999400] (2:node@c-1.me) Predecessor: 533744
+> [ 33.999400] (2:node@c-1.me) My finger table:
+> [ 33.999400] (2:node@c-1.me) Start | Succ
+> [ 33.999400] (2:node@c-1.me) 366681 | 42
+> [ 33.999400] (2:node@c-1.me) 366682 | 366680
+> [ 33.999400] (2:node@c-1.me) 366684 | 366680
+> [ 33.999400] (2:node@c-1.me) 366688 | 366680
+> [ 33.999400] (2:node@c-1.me) 366696 | 366680
+> [ 33.999400] (2:node@c-1.me) 366712 | 366680
+> [ 33.999400] (2:node@c-1.me) 366744 | 366680
+> [ 33.999400] (2:node@c-1.me) 366808 | 366680
+> [ 33.999400] (2:node@c-1.me) 366936 | 366680
+> [ 33.999400] (2:node@c-1.me) 367192 | 366680
+> [ 33.999400] (2:node@c-1.me) 367704 | 366680
+> [ 33.999400] (2:node@c-1.me) 368728 | 366680
+> [ 33.999400] (2:node@c-1.me) 370776 | 366680
+> [ 33.999400] (2:node@c-1.me) 374872 | 366680
+> [ 33.999400] (2:node@c-1.me) 383064 | 366680
+> [ 33.999400] (2:node@c-1.me) 399448 | 366680
+> [ 33.999400] (2:node@c-1.me) 432216 | 366680
+> [ 33.999400] (2:node@c-1.me) 497752 | 366680
+> [ 33.999400] (2:node@c-1.me) 628824 | 366680
+> [ 33.999400] (2:node@c-1.me) 890968 | 366680
+> [ 33.999400] (2:node@c-1.me) 1415256 | 366680
+> [ 33.999400] (2:node@c-1.me) 2463832 | 366680
+> [ 33.999400] (2:node@c-1.me) 4560984 | 366680
+> [ 33.999400] (2:node@c-1.me) 8755288 | 366680
+> [ 33.999400] (2:node@c-1.me) Predecessor: 16509405
+> [ 35.999300] (4:node@c-3.me) My finger table:
+> [ 35.999300] (4:node@c-3.me) Start | Succ
+> [ 35.999300] (4:node@c-3.me) 1319739 | 42
+> [ 35.999300] (4:node@c-3.me) 1319740 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319742 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319746 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319754 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319770 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319802 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319866 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319994 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1320250 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1320762 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1321786 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1323834 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1327930 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1336122 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1352506 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1385274 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1450810 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1581882 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1844026 | 1319738
+> [ 35.999300] (4:node@c-3.me) 2368314 | 1319738
+> [ 35.999300] (4:node@c-3.me) 3416890 | 1319738
+> [ 35.999300] (4:node@c-3.me) 5514042 | 1319738
+> [ 35.999300] (4:node@c-3.me) 9708346 | 1319738
+> [ 35.999300] (4:node@c-3.me) Predecessor: 16728096
+> [ 49.999000] (1:node@c-0.me) My finger table:
+> [ 49.999000] (1:node@c-0.me) Start | Succ
+> [ 49.999000] (1:node@c-0.me) 43 | 42
+> [ 49.999000] (1:node@c-0.me) 44 | 42
+> [ 49.999000] (1:node@c-0.me) 46 | 42
+> [ 49.999000] (1:node@c-0.me) 50 | 42
+> [ 49.999000] (1:node@c-0.me) 58 | 42
+> [ 49.999000] (1:node@c-0.me) 74 | 42
+> [ 49.999000] (1:node@c-0.me) 106 | 42
+> [ 49.999000] (1:node@c-0.me) 170 | 42
+> [ 49.999000] (1:node@c-0.me) 298 | 42
+> [ 49.999000] (1:node@c-0.me) 554 | 42
+> [ 49.999000] (1:node@c-0.me) 1066 | 42
+> [ 49.999000] (1:node@c-0.me) 2090 | 42
+> [ 49.999000] (1:node@c-0.me) 4138 | 42
+> [ 49.999000] (1:node@c-0.me) 8234 | 42
+> [ 49.999000] (1:node@c-0.me) 16426 | 42
+> [ 49.999000] (1:node@c-0.me) 32810 | 42
+> [ 49.999000] (1:node@c-0.me) 65578 | 42
+> [ 49.999000] (1:node@c-0.me) 131114 | 42
+> [ 49.999000] (1:node@c-0.me) 262186 | 42
+> [ 49.999000] (1:node@c-0.me) 524330 | 42
+> [ 49.999000] (1:node@c-0.me) 1048618 | 42
+> [ 49.999000] (1:node@c-0.me) 2097194 | 42
+> [ 49.999000] (1:node@c-0.me) 4194346 | 42
+> [ 49.999000] (1:node@c-0.me) 8388650 | 42
+> [ 49.999000] (1:node@c-0.me) Predecessor: 366680
+> [ 59.998800] (1:node@c-0.me) My finger table:
+> [ 59.998800] (1:node@c-0.me) Start | Succ
+> [ 59.998800] (1:node@c-0.me) 43 | 366680
+> [ 59.998800] (1:node@c-0.me) 44 | 42
+> [ 59.998800] (1:node@c-0.me) 46 | 42
+> [ 59.998800] (1:node@c-0.me) 50 | 42
+> [ 59.998800] (1:node@c-0.me) 58 | 42
+> [ 59.998800] (1:node@c-0.me) 74 | 42
+> [ 59.998800] (1:node@c-0.me) 106 | 42
+> [ 59.998800] (1:node@c-0.me) 170 | 42
+> [ 59.998800] (1:node@c-0.me) 298 | 42
+> [ 59.998800] (1:node@c-0.me) 554 | 42
+> [ 59.998800] (1:node@c-0.me) 1066 | 42
+> [ 59.998800] (1:node@c-0.me) 2090 | 42
+> [ 59.998800] (1:node@c-0.me) 4138 | 42
+> [ 59.998800] (1:node@c-0.me) 8234 | 42
+> [ 59.998800] (1:node@c-0.me) 16426 | 42
+> [ 59.998800] (1:node@c-0.me) 32810 | 42
+> [ 59.998800] (1:node@c-0.me) 65578 | 42
+> [ 59.998800] (1:node@c-0.me) 131114 | 42
+> [ 59.998800] (1:node@c-0.me) 262186 | 42
+> [ 59.998800] (1:node@c-0.me) 524330 | 42
+> [ 59.998800] (1:node@c-0.me) 1048618 | 42
+> [ 59.998800] (1:node@c-0.me) 2097194 | 42
+> [ 59.998800] (1:node@c-0.me) 4194346 | 42
+> [ 59.998800] (1:node@c-0.me) 8388650 | 42
+> [ 59.998800] (1:node@c-0.me) Predecessor: 1319738
+> [ 69.998600] (1:node@c-0.me) My finger table:
+> [ 69.998600] (1:node@c-0.me) Start | Succ
+> [ 69.998600] (1:node@c-0.me) 43 | 366680
+> [ 69.998600] (1:node@c-0.me) 44 | 42
+> [ 69.998600] (1:node@c-0.me) 46 | 42
+> [ 69.998600] (1:node@c-0.me) 50 | 42
+> [ 69.998600] (1:node@c-0.me) 58 | 42
+> [ 69.998600] (1:node@c-0.me) 74 | 42
+> [ 69.998600] (1:node@c-0.me) 106 | 42
+> [ 69.998600] (1:node@c-0.me) 170 | 42
+> [ 69.998600] (1:node@c-0.me) 298 | 42
+> [ 69.998600] (1:node@c-0.me) 554 | 42
+> [ 69.998600] (1:node@c-0.me) 1066 | 42
+> [ 69.998600] (1:node@c-0.me) 2090 | 42
+> [ 69.998600] (1:node@c-0.me) 4138 | 42
+> [ 69.998600] (1:node@c-0.me) 8234 | 42
+> [ 69.998600] (1:node@c-0.me) 16426 | 42
+> [ 69.998600] (1:node@c-0.me) 32810 | 42
+> [ 69.998600] (1:node@c-0.me) 65578 | 42
+> [ 69.998600] (1:node@c-0.me) 131114 | 42
+> [ 69.998600] (1:node@c-0.me) 262186 | 42
+> [ 69.998600] (1:node@c-0.me) 524330 | 42
+> [ 69.998600] (1:node@c-0.me) 1048618 | 42
+> [ 69.998600] (1:node@c-0.me) 2097194 | 42
+> [ 69.998600] (1:node@c-0.me) 4194346 | 42
+> [ 69.998600] (1:node@c-0.me) 8388650 | 42
+> [ 69.998600] (1:node@c-0.me) Predecessor: 6518808
+> [ 81.998500] (2:node@c-1.me) My finger table:
+> [ 81.998500] (2:node@c-1.me) Start | Succ
+> [ 81.998500] (2:node@c-1.me) 366681 | 6518808
+> [ 81.998500] (2:node@c-1.me) 366682 | 366680
+> [ 81.998500] (2:node@c-1.me) 366684 | 366680
+> [ 81.998500] (2:node@c-1.me) 366688 | 366680
+> [ 81.998500] (2:node@c-1.me) 366696 | 366680
+> [ 81.998500] (2:node@c-1.me) 366712 | 366680
+> [ 81.998500] (2:node@c-1.me) 366744 | 366680
+> [ 81.998500] (2:node@c-1.me) 366808 | 366680
+> [ 81.998500] (2:node@c-1.me) 366936 | 366680
+> [ 81.998500] (2:node@c-1.me) 367192 | 366680
+> [ 81.998500] (2:node@c-1.me) 367704 | 366680
+> [ 81.998500] (2:node@c-1.me) 368728 | 366680
+> [ 81.998500] (2:node@c-1.me) 370776 | 366680
+> [ 81.998500] (2:node@c-1.me) 374872 | 366680
+> [ 81.998500] (2:node@c-1.me) 383064 | 366680
+> [ 81.998500] (2:node@c-1.me) 399448 | 366680
+> [ 81.998500] (2:node@c-1.me) 432216 | 366680
+> [ 81.998500] (2:node@c-1.me) 497752 | 366680
+> [ 81.998500] (2:node@c-1.me) 628824 | 366680
+> [ 81.998500] (2:node@c-1.me) 890968 | 366680
+> [ 81.998500] (2:node@c-1.me) 1415256 | 366680
+> [ 81.998500] (2:node@c-1.me) 2463832 | 366680
+> [ 81.998500] (2:node@c-1.me) 4560984 | 366680
+> [ 81.998500] (2:node@c-1.me) 8755288 | 366680
+> [ 81.998500] (2:node@c-1.me) Predecessor: 42
+> [ 98.998100] (7:node@c-6.me) My finger table:
+> [ 98.998100] (7:node@c-6.me) Start | Succ
+> [ 98.998100] (7:node@c-6.me) 16728097 | 1319738
+> [ 98.998100] (7:node@c-6.me) 16728098 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728100 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728104 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728112 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728128 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728160 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728224 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728352 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728608 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16729120 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16730144 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16732192 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16736288 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16744480 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16760864 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16416 | 16728096
+> [ 98.998100] (7:node@c-6.me) 81952 | 16728096
+> [ 98.998100] (7:node@c-6.me) 213024 | 16728096
+> [ 98.998100] (7:node@c-6.me) 475168 | 16728096
+> [ 98.998100] (7:node@c-6.me) 999456 | 16728096
+> [ 98.998100] (7:node@c-6.me) 2048032 | 16728096
+> [ 98.998100] (7:node@c-6.me) 4145184 | 16728096
+> [ 98.998100] (7:node@c-6.me) 8339488 | 16728096
+> [ 98.998100] (7:node@c-6.me) Predecessor: 2015253
+> [ 110.998000] (9:node@c-8.me) My finger table:
+> [ 110.998000] (9:node@c-8.me) Start | Succ
+> [ 110.998000] (9:node@c-8.me) 6518809 | 42
+> [ 110.998000] (9:node@c-8.me) 6518810 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518812 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518816 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518824 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518840 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518872 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518936 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6519064 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6519320 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6519832 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6520856 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6522904 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6527000 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6535192 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6551576 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6584344 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6649880 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6780952 | 6518808
+> [ 110.998000] (9:node@c-8.me) 7043096 | 6518808
+> [ 110.998000] (9:node@c-8.me) 7567384 | 6518808
+> [ 110.998000] (9:node@c-8.me) 8615960 | 6518808
+> [ 110.998000] (9:node@c-8.me) 10713112 | 6518808
+> [ 110.998000] (9:node@c-8.me) 14907416 | 6518808
+> [ 110.998000] (9:node@c-8.me) Predecessor: 366680
+> [ 111.998000] (9:node@c-8.me) My finger table:
+> [ 111.998000] (9:node@c-8.me) Start | Succ
+> [ 111.998000] (9:node@c-8.me) 6518809 | 42
+> [ 111.998000] (9:node@c-8.me) 6518810 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518812 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518816 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518824 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518840 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518872 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518936 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6519064 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6519320 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6519832 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6520856 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6522904 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6527000 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6535192 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6551576 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6584344 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6649880 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6780952 | 6518808
+> [ 111.998000] (9:node@c-8.me) 7043096 | 6518808
+> [ 111.998000] (9:node@c-8.me) 7567384 | 6518808
+> [ 111.998000] (9:node@c-8.me) 8615960 | 6518808
+> [ 111.998000] (9:node@c-8.me) 10713112 | 6518808
+> [ 111.998000] (9:node@c-8.me) 14907416 | 6518808
+> [ 111.998000] (9:node@c-8.me) Predecessor: 1319738
+> [ 127.997700] (8:node@c-7.me) My finger table:
+> [ 127.997700] (8:node@c-7.me) Start | Succ
+> [ 127.997700] (8:node@c-7.me) 10004761 | 16509405
+> [ 127.997700] (8:node@c-7.me) 10004762 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004764 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004768 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004776 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004792 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004824 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004888 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10005016 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10005272 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10005784 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10006808 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10008856 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10012952 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10021144 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10037528 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10070296 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10135832 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10266904 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10529048 | 10004760
+> [ 127.997700] (8:node@c-7.me) 11053336 | 10004760
+> [ 127.997700] (8:node@c-7.me) 12101912 | 10004760
+> [ 127.997700] (8:node@c-7.me) 14199064 | 10004760
+> [ 127.997700] (8:node@c-7.me) 1616152 | 10004760
+> [ 127.997700] (8:node@c-7.me) Predecessor: 533744
+> [ 137.997600] (1:node@c-0.me) My finger table:
+> [ 137.997600] (1:node@c-0.me) Start | Succ
+> [ 137.997600] (1:node@c-0.me) 43 | 366680
+> [ 137.997600] (1:node@c-0.me) 44 | 42
+> [ 137.997600] (1:node@c-0.me) 46 | 42
+> [ 137.997600] (1:node@c-0.me) 50 | 42
+> [ 137.997600] (1:node@c-0.me) 58 | 42
+> [ 137.997600] (1:node@c-0.me) 74 | 42
+> [ 137.997600] (1:node@c-0.me) 106 | 42
+> [ 137.997600] (1:node@c-0.me) 170 | 42
+> [ 137.997600] (1:node@c-0.me) 298 | 42
+> [ 137.997600] (1:node@c-0.me) 554 | 42
+> [ 137.997600] (1:node@c-0.me) 1066 | 42
+> [ 137.997600] (1:node@c-0.me) 2090 | 42
+> [ 137.997600] (1:node@c-0.me) 4138 | 42
+> [ 137.997600] (1:node@c-0.me) 8234 | 42
+> [ 137.997600] (1:node@c-0.me) 16426 | 42
+> [ 137.997600] (1:node@c-0.me) 32810 | 42
+> [ 137.997600] (1:node@c-0.me) 65578 | 42
+> [ 137.997600] (1:node@c-0.me) 131114 | 42
+> [ 137.997600] (1:node@c-0.me) 262186 | 42
+> [ 137.997600] (1:node@c-0.me) 524330 | 42
+> [ 137.997600] (1:node@c-0.me) 1048618 | 42
+> [ 137.997600] (1:node@c-0.me) 2097194 | 42
+> [ 137.997600] (1:node@c-0.me) 4194346 | 42
+> [ 137.997600] (1:node@c-0.me) 8388650 | 42
+> [ 137.997600] (1:node@c-0.me) Predecessor: 16509405
+> [ 165.997100] (4:node@c-3.me) My finger table:
+> [ 165.997100] (4:node@c-3.me) Start | Succ
+> [ 165.997100] (4:node@c-3.me) 1319739 | 6518808
+> [ 165.997100] (4:node@c-3.me) 1319740 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319742 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319746 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319754 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319770 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319802 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319866 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319994 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1320250 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1320762 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1321786 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1323834 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1327930 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1336122 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1352506 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1385274 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1450810 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1581882 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1844026 | 1319738
+> [ 165.997100] (4:node@c-3.me) 2368314 | 1319738
+> [ 165.997100] (4:node@c-3.me) 3416890 | 1319738
+> [ 165.997100] (4:node@c-3.me) 5514042 | 1319738
+> [ 165.997100] (4:node@c-3.me) 9708346 | 1319738
+> [ 165.997100] (4:node@c-3.me) Predecessor: 366680
+> [ 209.996500] (8:node@c-7.me) My finger table:
+> [ 209.996500] (8:node@c-7.me) Start | Succ
+> [ 209.996500] (8:node@c-7.me) 10004761 | 16509405
+> [ 209.996500] (8:node@c-7.me) 10004762 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004764 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004768 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004776 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004792 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004824 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004888 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10005016 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10005272 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10005784 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10006808 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10008856 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10012952 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10021144 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10037528 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10070296 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10135832 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10266904 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10529048 | 10004760
+> [ 209.996500] (8:node@c-7.me) 11053336 | 10004760
+> [ 209.996500] (8:node@c-7.me) 12101912 | 10004760
+> [ 209.996500] (8:node@c-7.me) 14199064 | 10004760
+> [ 209.996500] (8:node@c-7.me) 1616152 | 10004760
+> [ 209.996500] (8:node@c-7.me) Predecessor: 6518808
+> [ 247.995800] (6:node@c-5.me) My finger table:
+> [ 247.995800] (6:node@c-5.me) Start | Succ
+> [ 247.995800] (6:node@c-5.me) 10874877 | 533744
+> [ 247.995800] (6:node@c-5.me) 10874878 | 533744
+> [ 247.995800] (6:node@c-5.me) 10874880 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874884 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874892 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874908 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874940 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875004 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875132 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875388 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875900 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10876924 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10878972 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10883068 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10891260 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10907644 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10940412 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11005948 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11137020 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11399164 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11923452 | 10874876
+> [ 247.995800] (6:node@c-5.me) 12972028 | 10874876
+> [ 247.995800] (6:node@c-5.me) 15069180 | 10874876
+> [ 247.995800] (6:node@c-5.me) 2486268 | 10874876
+> [ 247.995800] (6:node@c-5.me) Predecessor: -1
+> [ 249.995700] (7:node@c-6.me) My finger table:
+> [ 249.995700] (7:node@c-6.me) Start | Succ
+> [ 249.995700] (7:node@c-6.me) 16728097 | 42
+> [ 249.995700] (7:node@c-6.me) 16728098 | 42
+> [ 249.995700] (7:node@c-6.me) 16728100 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728104 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728112 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728128 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728160 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728224 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728352 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728608 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16729120 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16730144 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16732192 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16736288 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16744480 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16760864 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16416 | 16728096
+> [ 249.995700] (7:node@c-6.me) 81952 | 16728096
+> [ 249.995700] (7:node@c-6.me) 213024 | 16728096
+> [ 249.995700] (7:node@c-6.me) 475168 | 16728096
+> [ 249.995700] (7:node@c-6.me) 999456 | 16728096
+> [ 249.995700] (7:node@c-6.me) 2048032 | 16728096
+> [ 249.995700] (7:node@c-6.me) 4145184 | 16728096
+> [ 249.995700] (7:node@c-6.me) 8339488 | 16728096
+> [ 249.995700] (7:node@c-6.me) Predecessor: 2015253
+> [ 251.995700] (8:node@c-7.me) My finger table:
+> [ 251.995700] (8:node@c-7.me) Start | Succ
+> [ 251.995700] (8:node@c-7.me) 10004761 | 16509405
+> [ 251.995700] (8:node@c-7.me) 10004762 | 16509405
+> [ 251.995700] (8:node@c-7.me) 10004764 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004768 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004776 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004792 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004824 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004888 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10005016 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10005272 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10005784 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10006808 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10008856 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10012952 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10021144 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10037528 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10070296 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10135832 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10266904 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10529048 | 10004760
+> [ 251.995700] (8:node@c-7.me) 11053336 | 10004760
+> [ 251.995700] (8:node@c-7.me) 12101912 | 10004760
+> [ 251.995700] (8:node@c-7.me) 14199064 | 10004760
+> [ 251.995700] (8:node@c-7.me) 1616152 | 10004760
+> [ 251.995700] (8:node@c-7.me) Predecessor: 6518808
+> [ 252.995700] (2:node@c-1.me) My finger table:
+> [ 252.995700] (2:node@c-1.me) Start | Succ
+> [ 252.995700] (2:node@c-1.me) 366681 | 1319738
+> [ 252.995700] (2:node@c-1.me) 366682 | 1319738
+> [ 252.995700] (2:node@c-1.me) 366684 | 366680
+> [ 252.995700] (2:node@c-1.me) 366688 | 366680
+> [ 252.995700] (2:node@c-1.me) 366696 | 366680
+> [ 252.995700] (2:node@c-1.me) 366712 | 366680
+> [ 252.995700] (2:node@c-1.me) 366744 | 366680
+> [ 252.995700] (2:node@c-1.me) 366808 | 366680
+> [ 252.995700] (2:node@c-1.me) 366936 | 366680
+> [ 252.995700] (2:node@c-1.me) 367192 | 366680
+> [ 252.995700] (2:node@c-1.me) 367704 | 366680
+> [ 252.995700] (2:node@c-1.me) 368728 | 366680
+> [ 252.995700] (2:node@c-1.me) 370776 | 366680
+> [ 252.995700] (2:node@c-1.me) 374872 | 366680
+> [ 252.995700] (2:node@c-1.me) 383064 | 366680
+> [ 252.995700] (2:node@c-1.me) 399448 | 366680
+> [ 252.995700] (2:node@c-1.me) 432216 | 366680
+> [ 252.995700] (2:node@c-1.me) 497752 | 366680
+> [ 252.995700] (2:node@c-1.me) 628824 | 366680
+> [ 252.995700] (2:node@c-1.me) 890968 | 366680
+> [ 252.995700] (2:node@c-1.me) 1415256 | 366680
+> [ 252.995700] (2:node@c-1.me) 2463832 | 366680
+> [ 252.995700] (2:node@c-1.me) 4560984 | 366680
+> [ 252.995700] (2:node@c-1.me) 8755288 | 366680
+> [ 252.995700] (2:node@c-1.me) Predecessor: 42
+> [ 254.995700] (1:node@c-0.me) My finger table:
+> [ 254.995700] (1:node@c-0.me) Start | Succ
+> [ 254.995700] (1:node@c-0.me) 43 | 366680
+> [ 254.995700] (1:node@c-0.me) 44 | 42
+> [ 254.995700] (1:node@c-0.me) 46 | 42
+> [ 254.995700] (1:node@c-0.me) 50 | 42
+> [ 254.995700] (1:node@c-0.me) 58 | 42
+> [ 254.995700] (1:node@c-0.me) 74 | 42
+> [ 254.995700] (1:node@c-0.me) 106 | 42
+> [ 254.995700] (1:node@c-0.me) 170 | 42
+> [ 254.995700] (1:node@c-0.me) 298 | 42
+> [ 254.995700] (1:node@c-0.me) 554 | 42
+> [ 254.995700] (1:node@c-0.me) 1066 | 42
+> [ 254.995700] (1:node@c-0.me) 2090 | 42
+> [ 254.995700] (1:node@c-0.me) 4138 | 42
+> [ 254.995700] (1:node@c-0.me) 8234 | 42
+> [ 254.995700] (1:node@c-0.me) 16426 | 42
+> [ 254.995700] (1:node@c-0.me) 32810 | 42
+> [ 254.995700] (1:node@c-0.me) 65578 | 42
+> [ 254.995700] (1:node@c-0.me) 131114 | 42
+> [ 254.995700] (1:node@c-0.me) 262186 | 42
+> [ 254.995700] (1:node@c-0.me) 524330 | 42
+> [ 254.995700] (1:node@c-0.me) 1048618 | 42
+> [ 254.995700] (1:node@c-0.me) 2097194 | 42
+> [ 254.995700] (1:node@c-0.me) 4194346 | 42
+> [ 254.995700] (1:node@c-0.me) 8388650 | 42
+> [ 254.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 254.995700] (4:node@c-3.me) My finger table:
+> [ 254.995700] (4:node@c-3.me) Start | Succ
+> [ 254.995700] (4:node@c-3.me) 1319739 | 6518808
+> [ 254.995700] (4:node@c-3.me) 1319740 | 6518808
+> [ 254.995700] (4:node@c-3.me) 1319742 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319746 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319754 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319770 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319802 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319866 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319994 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1320250 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1320762 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1321786 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1323834 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1327930 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1336122 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1352506 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1385274 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1450810 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1581882 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1844026 | 1319738
+> [ 254.995700] (4:node@c-3.me) 2368314 | 1319738
+> [ 254.995700] (4:node@c-3.me) 3416890 | 1319738
+> [ 254.995700] (4:node@c-3.me) 5514042 | 1319738
+> [ 254.995700] (4:node@c-3.me) 9708346 | 1319738
+> [ 254.995700] (4:node@c-3.me) Predecessor: 366680
+> [ 255.995700] (1:node@c-0.me) My finger table:
+> [ 255.995700] (1:node@c-0.me) Start | Succ
+> [ 255.995700] (1:node@c-0.me) 43 | 366680
+> [ 255.995700] (1:node@c-0.me) 44 | 366680
+> [ 255.995700] (1:node@c-0.me) 46 | 42
+> [ 255.995700] (1:node@c-0.me) 50 | 42
+> [ 255.995700] (1:node@c-0.me) 58 | 42
+> [ 255.995700] (1:node@c-0.me) 74 | 42
+> [ 255.995700] (1:node@c-0.me) 106 | 42
+> [ 255.995700] (1:node@c-0.me) 170 | 42
+> [ 255.995700] (1:node@c-0.me) 298 | 42
+> [ 255.995700] (1:node@c-0.me) 554 | 42
+> [ 255.995700] (1:node@c-0.me) 1066 | 42
+> [ 255.995700] (1:node@c-0.me) 2090 | 42
+> [ 255.995700] (1:node@c-0.me) 4138 | 42
+> [ 255.995700] (1:node@c-0.me) 8234 | 42
+> [ 255.995700] (1:node@c-0.me) 16426 | 42
+> [ 255.995700] (1:node@c-0.me) 32810 | 42
+> [ 255.995700] (1:node@c-0.me) 65578 | 42
+> [ 255.995700] (1:node@c-0.me) 131114 | 42
+> [ 255.995700] (1:node@c-0.me) 262186 | 42
+> [ 255.995700] (1:node@c-0.me) 524330 | 42
+> [ 255.995700] (1:node@c-0.me) 1048618 | 42
+> [ 255.995700] (1:node@c-0.me) 2097194 | 42
+> [ 255.995700] (1:node@c-0.me) 4194346 | 42
+> [ 255.995700] (1:node@c-0.me) 8388650 | 42
+> [ 255.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 255.995700] (5:node@c-4.me) My finger table:
+> [ 255.995700] (5:node@c-4.me) Start | Succ
+> [ 255.995700] (5:node@c-4.me) 16509406 | 42
+> [ 255.995700] (5:node@c-4.me) 16509407 | 42
+> [ 255.995700] (5:node@c-4.me) 16509409 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509413 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509421 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509437 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509469 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509533 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509661 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509917 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16510429 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16511453 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16513501 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16517597 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16525789 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16542173 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16574941 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16640477 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16771549 | 16509405
+> [ 255.995700] (5:node@c-4.me) 256477 | 16509405
+> [ 255.995700] (5:node@c-4.me) 780765 | 16509405
+> [ 255.995700] (5:node@c-4.me) 1829341 | 16509405
+> [ 255.995700] (5:node@c-4.me) 3926493 | 16509405
+> [ 255.995700] (5:node@c-4.me) 8120797 | 16509405
+> [ 255.995700] (5:node@c-4.me) Predecessor: 10004760
+> [ 257.995700] (10:node@c-9.me) My finger table:
+> [ 257.995700] (10:node@c-9.me) Start | Succ
+> [ 257.995700] (10:node@c-9.me) 2015254 | 16728096
+> [ 257.995700] (10:node@c-9.me) 2015255 | 16728096
+> [ 257.995700] (10:node@c-9.me) 2015257 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015261 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015269 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015285 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015317 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015381 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015509 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015765 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2016277 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2017301 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2019349 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2023445 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2031637 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2048021 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2080789 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2146325 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2277397 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2539541 | 2015253
+> [ 257.995700] (10:node@c-9.me) 3063829 | 2015253
+> [ 257.995700] (10:node@c-9.me) 4112405 | 2015253
+> [ 257.995700] (10:node@c-9.me) 6209557 | 2015253
+> [ 257.995700] (10:node@c-9.me) 10403861 | 2015253
+> [ 257.995700] (10:node@c-9.me) Predecessor: -1
+> [ 263.995700] (3:node@c-2.me) My finger table:
+> [ 263.995700] (3:node@c-2.me) Start | Succ
+> [ 263.995700] (3:node@c-2.me) 533745 | 1319738
+> [ 263.995700] (3:node@c-2.me) 533746 | 1319738
+> [ 263.995700] (3:node@c-2.me) 533748 | 533744
+> [ 263.995700] (3:node@c-2.me) 533752 | 533744
+> [ 263.995700] (3:node@c-2.me) 533760 | 533744
+> [ 263.995700] (3:node@c-2.me) 533776 | 533744
+> [ 263.995700] (3:node@c-2.me) 533808 | 533744
+> [ 263.995700] (3:node@c-2.me) 533872 | 533744
+> [ 263.995700] (3:node@c-2.me) 534000 | 533744
+> [ 263.995700] (3:node@c-2.me) 534256 | 533744
+> [ 263.995700] (3:node@c-2.me) 534768 | 533744
+> [ 263.995700] (3:node@c-2.me) 535792 | 533744
+> [ 263.995700] (3:node@c-2.me) 537840 | 533744
+> [ 263.995700] (3:node@c-2.me) 541936 | 533744
+> [ 263.995700] (3:node@c-2.me) 550128 | 533744
+> [ 263.995700] (3:node@c-2.me) 566512 | 533744
+> [ 263.995700] (3:node@c-2.me) 599280 | 533744
+> [ 263.995700] (3:node@c-2.me) 664816 | 533744
+> [ 263.995700] (3:node@c-2.me) 795888 | 533744
+> [ 263.995700] (3:node@c-2.me) 1058032 | 533744
+> [ 263.995700] (3:node@c-2.me) 1582320 | 533744
+> [ 263.995700] (3:node@c-2.me) 2630896 | 533744
+> [ 263.995700] (3:node@c-2.me) 4728048 | 533744
+> [ 263.995700] (3:node@c-2.me) 8922352 | 533744
+> [ 263.995700] (3:node@c-2.me) Predecessor: 10874876
+> [ 264.995500] (9:node@c-8.me) My finger table:
+> [ 264.995500] (9:node@c-8.me) Start | Succ
+> [ 264.995500] (9:node@c-8.me) 6518809 | 10004760
+> [ 264.995500] (9:node@c-8.me) 6518810 | 10004760
+> [ 264.995500] (9:node@c-8.me) 6518812 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518816 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518824 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518840 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518872 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518936 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6519064 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6519320 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6519832 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6520856 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6522904 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6527000 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6535192 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6551576 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6584344 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6649880 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6780952 | 6518808
+> [ 264.995500] (9:node@c-8.me) 7043096 | 6518808
+> [ 264.995500] (9:node@c-8.me) 7567384 | 6518808
+> [ 264.995500] (9:node@c-8.me) 8615960 | 6518808
+> [ 264.995500] (9:node@c-8.me) 10713112 | 6518808
+> [ 264.995500] (9:node@c-8.me) 14907416 | 6518808
+> [ 264.995500] (9:node@c-8.me) Predecessor: 1319738
+> [ 310.994900] (4:node@c-3.me) My finger table:
+> [ 310.994900] (4:node@c-3.me) Start | Succ
+> [ 310.994900] (4:node@c-3.me) 1319739 | 6518808
+> [ 310.994900] (4:node@c-3.me) 1319740 | 6518808
+> [ 310.994900] (4:node@c-3.me) 1319742 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319746 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319754 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319770 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319802 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319866 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319994 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1320250 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1320762 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1321786 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1323834 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1327930 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1336122 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1352506 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1385274 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1450810 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1581882 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1844026 | 1319738
+> [ 310.994900] (4:node@c-3.me) 2368314 | 1319738
+> [ 310.994900] (4:node@c-3.me) 3416890 | 1319738
+> [ 310.994900] (4:node@c-3.me) 5514042 | 1319738
+> [ 310.994900] (4:node@c-3.me) 9708346 | 1319738
+> [ 310.994900] (4:node@c-3.me) Predecessor: 533744
+> [ 335.994500] (7:node@c-6.me) My finger table:
+> [ 335.994500] (7:node@c-6.me) Start | Succ
+> [ 335.994500] (7:node@c-6.me) 16728097 | 42
+> [ 335.994500] (7:node@c-6.me) 16728098 | 42
+> [ 335.994500] (7:node@c-6.me) 16728100 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728104 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728112 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728128 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728160 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728224 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728352 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728608 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16729120 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16730144 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16732192 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16736288 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16744480 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16760864 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16416 | 16728096
+> [ 335.994500] (7:node@c-6.me) 81952 | 16728096
+> [ 335.994500] (7:node@c-6.me) 213024 | 16728096
+> [ 335.994500] (7:node@c-6.me) 475168 | 16728096
+> [ 335.994500] (7:node@c-6.me) 999456 | 16728096
+> [ 335.994500] (7:node@c-6.me) 2048032 | 16728096
+> [ 335.994500] (7:node@c-6.me) 4145184 | 16728096
+> [ 335.994500] (7:node@c-6.me) 8339488 | 16728096
+> [ 335.994500] (7:node@c-6.me) Predecessor: 16509405
+> [ 366.994000] (3:node@c-2.me) My finger table:
+> [ 366.994000] (3:node@c-2.me) Start | Succ
+> [ 366.994000] (3:node@c-2.me) 533745 | 1319738
+> [ 366.994000] (3:node@c-2.me) 533746 | 1319738
+> [ 366.994000] (3:node@c-2.me) 533748 | 533744
+> [ 366.994000] (3:node@c-2.me) 533752 | 533744
+> [ 366.994000] (3:node@c-2.me) 533760 | 533744
+> [ 366.994000] (3:node@c-2.me) 533776 | 533744
+> [ 366.994000] (3:node@c-2.me) 533808 | 533744
+> [ 366.994000] (3:node@c-2.me) 533872 | 533744
+> [ 366.994000] (3:node@c-2.me) 534000 | 533744
+> [ 366.994000] (3:node@c-2.me) 534256 | 533744
+> [ 366.994000] (3:node@c-2.me) 534768 | 533744
+> [ 366.994000] (3:node@c-2.me) 535792 | 533744
+> [ 366.994000] (3:node@c-2.me) 537840 | 533744
+> [ 366.994000] (3:node@c-2.me) 541936 | 533744
+> [ 366.994000] (3:node@c-2.me) 550128 | 533744
+> [ 366.994000] (3:node@c-2.me) 566512 | 533744
+> [ 366.994000] (3:node@c-2.me) 599280 | 533744
+> [ 366.994000] (3:node@c-2.me) 664816 | 533744
+> [ 366.994000] (3:node@c-2.me) 795888 | 533744
+> [ 366.994000] (3:node@c-2.me) 1058032 | 533744
+> [ 366.994000] (3:node@c-2.me) 1582320 | 533744
+> [ 366.994000] (3:node@c-2.me) 2630896 | 533744
+> [ 366.994000] (3:node@c-2.me) 4728048 | 533744
+> [ 366.994000] (3:node@c-2.me) 8922352 | 533744
+> [ 366.994000] (3:node@c-2.me) Predecessor: 366680
+> [ 370.993500] (6:node@c-5.me) My finger table:
+> [ 370.993500] (6:node@c-5.me) Start | Succ
+> [ 370.993500] (6:node@c-5.me) 10874877 | 533744
+> [ 370.993500] (6:node@c-5.me) 10874878 | 533744
+> [ 370.993500] (6:node@c-5.me) 10874880 | 533744
+> [ 370.993500] (6:node@c-5.me) 10874884 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10874892 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10874908 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10874940 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875004 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875132 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875388 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875900 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10876924 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10878972 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10883068 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10891260 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10907644 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10940412 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11005948 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11137020 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11399164 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11923452 | 10874876
+> [ 370.993500] (6:node@c-5.me) 12972028 | 10874876
+> [ 370.993500] (6:node@c-5.me) 15069180 | 10874876
+> [ 370.993500] (6:node@c-5.me) 2486268 | 10874876
+> [ 370.993500] (6:node@c-5.me) Predecessor: -1
+> [ 375.993800] (2:node@c-1.me) My finger table:
+> [ 375.993800] (2:node@c-1.me) Start | Succ
+> [ 375.993800] (2:node@c-1.me) 366681 | 533744
+> [ 375.993800] (2:node@c-1.me) 366682 | 1319738
+> [ 375.993800] (2:node@c-1.me) 366684 | 533744
+> [ 375.993800] (2:node@c-1.me) 366688 | 366680
+> [ 375.993800] (2:node@c-1.me) 366696 | 366680
+> [ 375.993800] (2:node@c-1.me) 366712 | 366680
+> [ 375.993800] (2:node@c-1.me) 366744 | 366680
+> [ 375.993800] (2:node@c-1.me) 366808 | 366680
+> [ 375.993800] (2:node@c-1.me) 366936 | 366680
+> [ 375.993800] (2:node@c-1.me) 367192 | 366680
+> [ 375.993800] (2:node@c-1.me) 367704 | 366680
+> [ 375.993800] (2:node@c-1.me) 368728 | 366680
+> [ 375.993800] (2:node@c-1.me) 370776 | 366680
+> [ 375.993800] (2:node@c-1.me) 374872 | 366680
+> [ 375.993800] (2:node@c-1.me) 383064 | 366680
+> [ 375.993800] (2:node@c-1.me) 399448 | 366680
+> [ 375.993800] (2:node@c-1.me) 432216 | 366680
+> [ 375.993800] (2:node@c-1.me) 497752 | 366680
+> [ 375.993800] (2:node@c-1.me) 628824 | 366680
+> [ 375.993800] (2:node@c-1.me) 890968 | 366680
+> [ 375.993800] (2:node@c-1.me) 1415256 | 366680
+> [ 375.993800] (2:node@c-1.me) 2463832 | 366680
+> [ 375.993800] (2:node@c-1.me) 4560984 | 366680
+> [ 375.993800] (2:node@c-1.me) 8755288 | 366680
+> [ 375.993800] (2:node@c-1.me) Predecessor: 42
+> [ 376.993800] (1:node@c-0.me) My finger table:
+> [ 376.993800] (1:node@c-0.me) Start | Succ
+> [ 376.993800] (1:node@c-0.me) 43 | 366680
+> [ 376.993800] (1:node@c-0.me) 44 | 366680
+> [ 376.993800] (1:node@c-0.me) 46 | 366680
+> [ 376.993800] (1:node@c-0.me) 50 | 42
+> [ 376.993800] (1:node@c-0.me) 58 | 42
+> [ 376.993800] (1:node@c-0.me) 74 | 42
+> [ 376.993800] (1:node@c-0.me) 106 | 42
+> [ 376.993800] (1:node@c-0.me) 170 | 42
+> [ 376.993800] (1:node@c-0.me) 298 | 42
+> [ 376.993800] (1:node@c-0.me) 554 | 42
+> [ 376.993800] (1:node@c-0.me) 1066 | 42
+> [ 376.993800] (1:node@c-0.me) 2090 | 42
+> [ 376.993800] (1:node@c-0.me) 4138 | 42
+> [ 376.993800] (1:node@c-0.me) 8234 | 42
+> [ 376.993800] (1:node@c-0.me) 16426 | 42
+> [ 376.993800] (1:node@c-0.me) 32810 | 42
+> [ 376.993800] (1:node@c-0.me) 65578 | 42
+> [ 376.993800] (1:node@c-0.me) 131114 | 42
+> [ 376.993800] (1:node@c-0.me) 262186 | 42
+> [ 376.993800] (1:node@c-0.me) 524330 | 42
+> [ 376.993800] (1:node@c-0.me) 1048618 | 42
+> [ 376.993800] (1:node@c-0.me) 2097194 | 42
+> [ 376.993800] (1:node@c-0.me) 4194346 | 42
+> [ 376.993800] (1:node@c-0.me) 8388650 | 42
+> [ 376.993800] (1:node@c-0.me) Predecessor: 16728096
+> [ 376.993800] (4:node@c-3.me) My finger table:
+> [ 376.993800] (4:node@c-3.me) Start | Succ
+> [ 376.993800] (4:node@c-3.me) 1319739 | 6518808
+> [ 376.993800] (4:node@c-3.me) 1319740 | 6518808
+> [ 376.993800] (4:node@c-3.me) 1319742 | 6518808
+> [ 376.993800] (4:node@c-3.me) 1319746 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319754 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319770 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319802 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319866 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319994 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1320250 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1320762 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1321786 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1323834 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1327930 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1336122 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1352506 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1385274 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1450810 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1581882 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1844026 | 1319738
+> [ 376.993800] (4:node@c-3.me) 2368314 | 1319738
+> [ 376.993800] (4:node@c-3.me) 3416890 | 1319738
+> [ 376.993800] (4:node@c-3.me) 5514042 | 1319738
+> [ 376.993800] (4:node@c-3.me) 9708346 | 1319738
+> [ 376.993800] (4:node@c-3.me) Predecessor: 533744
+> [ 378.993800] (10:node@c-9.me) My finger table:
+> [ 378.993800] (10:node@c-9.me) Start | Succ
+> [ 378.993800] (10:node@c-9.me) 2015254 | 10004760
+> [ 378.993800] (10:node@c-9.me) 2015255 | 16728096
+> [ 378.993800] (10:node@c-9.me) 2015257 | 10004760
+> [ 378.993800] (10:node@c-9.me) 2015261 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015269 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015285 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015317 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015381 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015509 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015765 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2016277 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2017301 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2019349 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2023445 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2031637 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2048021 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2080789 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2146325 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2277397 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2539541 | 2015253
+> [ 378.993800] (10:node@c-9.me) 3063829 | 2015253
+> [ 378.993800] (10:node@c-9.me) 4112405 | 2015253
+> [ 378.993800] (10:node@c-9.me) 6209557 | 2015253
+> [ 378.993800] (10:node@c-9.me) 10403861 | 2015253
+> [ 378.993800] (10:node@c-9.me) Predecessor: -1
+> [ 378.993800] (5:node@c-4.me) My finger table:
+> [ 378.993800] (5:node@c-4.me) Start | Succ
+> [ 378.993800] (5:node@c-4.me) 16509406 | 16728096
+> [ 378.993800] (5:node@c-4.me) 16509407 | 42
+> [ 378.993800] (5:node@c-4.me) 16509409 | 16728096
+> [ 378.993800] (5:node@c-4.me) 16509413 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509421 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509437 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509469 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509533 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509661 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509917 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16510429 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16511453 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16513501 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16517597 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16525789 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16542173 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16574941 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16640477 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16771549 | 16509405
+> [ 378.993800] (5:node@c-4.me) 256477 | 16509405
+> [ 378.993800] (5:node@c-4.me) 780765 | 16509405
+> [ 378.993800] (5:node@c-4.me) 1829341 | 16509405
+> [ 378.993800] (5:node@c-4.me) 3926493 | 16509405
+> [ 378.993800] (5:node@c-4.me) 8120797 | 16509405
+> [ 378.993800] (5:node@c-4.me) Predecessor: 10004760
+> [ 379.993800] (8:node@c-7.me) My finger table:
+> [ 379.993800] (8:node@c-7.me) Start | Succ
+> [ 379.993800] (8:node@c-7.me) 10004761 | 16509405
+> [ 379.993800] (8:node@c-7.me) 10004762 | 16509405
+> [ 379.993800] (8:node@c-7.me) 10004764 | 16509405
+> [ 379.993800] (8:node@c-7.me) 10004768 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004776 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004792 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004824 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004888 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10005016 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10005272 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10005784 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10006808 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10008856 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10012952 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10021144 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10037528 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10070296 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10135832 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10266904 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10529048 | 10004760
+> [ 379.993800] (8:node@c-7.me) 11053336 | 10004760
+> [ 379.993800] (8:node@c-7.me) 12101912 | 10004760
+> [ 379.993800] (8:node@c-7.me) 14199064 | 10004760
+> [ 379.993800] (8:node@c-7.me) 1616152 | 10004760
+> [ 379.993800] (8:node@c-7.me) Predecessor: 6518808
+> [ 385.993700] (3:node@c-2.me) My finger table:
+> [ 385.993700] (3:node@c-2.me) Start | Succ
+> [ 385.993700] (3:node@c-2.me) 533745 | 1319738
+> [ 385.993700] (3:node@c-2.me) 533746 | 1319738
+> [ 385.993700] (3:node@c-2.me) 533748 | 1319738
+> [ 385.993700] (3:node@c-2.me) 533752 | 533744
+> [ 385.993700] (3:node@c-2.me) 533760 | 533744
+> [ 385.993700] (3:node@c-2.me) 533776 | 533744
+> [ 385.993700] (3:node@c-2.me) 533808 | 533744
+> [ 385.993700] (3:node@c-2.me) 533872 | 533744
+> [ 385.993700] (3:node@c-2.me) 534000 | 533744
+> [ 385.993700] (3:node@c-2.me) 534256 | 533744
+> [ 385.993700] (3:node@c-2.me) 534768 | 533744
+> [ 385.993700] (3:node@c-2.me) 535792 | 533744
+> [ 385.993700] (3:node@c-2.me) 537840 | 533744
+> [ 385.993700] (3:node@c-2.me) 541936 | 533744
+> [ 385.993700] (3:node@c-2.me) 550128 | 533744
+> [ 385.993700] (3:node@c-2.me) 566512 | 533744
+> [ 385.993700] (3:node@c-2.me) 599280 | 533744
+> [ 385.993700] (3:node@c-2.me) 664816 | 533744
+> [ 385.993700] (3:node@c-2.me) 795888 | 533744
+> [ 385.993700] (3:node@c-2.me) 1058032 | 533744
+> [ 385.993700] (3:node@c-2.me) 1582320 | 533744
+> [ 385.993700] (3:node@c-2.me) 2630896 | 533744
+> [ 385.993700] (3:node@c-2.me) 4728048 | 533744
+> [ 385.993700] (3:node@c-2.me) 8922352 | 533744
+> [ 385.993700] (3:node@c-2.me) Predecessor: 366680
+> [ 387.993700] (7:node@c-6.me) My finger table:
+> [ 387.993700] (7:node@c-6.me) Start | Succ
+> [ 387.993700] (7:node@c-6.me) 16728097 | 42
+> [ 387.993700] (7:node@c-6.me) 16728098 | 42
+> [ 387.993700] (7:node@c-6.me) 16728100 | 42
+> [ 387.993700] (7:node@c-6.me) 16728104 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728112 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728128 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728160 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728224 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728352 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728608 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16729120 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16730144 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16732192 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16736288 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16744480 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16760864 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16416 | 16728096
+> [ 387.993700] (7:node@c-6.me) 81952 | 16728096
+> [ 387.993700] (7:node@c-6.me) 213024 | 16728096
+> [ 387.993700] (7:node@c-6.me) 475168 | 16728096
+> [ 387.993700] (7:node@c-6.me) 999456 | 16728096
+> [ 387.993700] (7:node@c-6.me) 2048032 | 16728096
+> [ 387.993700] (7:node@c-6.me) 4145184 | 16728096
+> [ 387.993700] (7:node@c-6.me) 8339488 | 16728096
+> [ 387.993700] (7:node@c-6.me) Predecessor: 16509405
+> [ 389.993600] (9:node@c-8.me) My finger table:
+> [ 389.993600] (9:node@c-8.me) Start | Succ
+> [ 389.993600] (9:node@c-8.me) 6518809 | 10004760
+> [ 389.993600] (9:node@c-8.me) 6518810 | 10004760
+> [ 389.993600] (9:node@c-8.me) 6518812 | 10004760
+> [ 389.993600] (9:node@c-8.me) 6518816 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518824 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518840 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518872 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518936 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6519064 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6519320 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6519832 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6520856 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6522904 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6527000 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6535192 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6551576 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6584344 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6649880 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6780952 | 6518808
+> [ 389.993600] (9:node@c-8.me) 7043096 | 6518808
+> [ 389.993600] (9:node@c-8.me) 7567384 | 6518808
+> [ 389.993600] (9:node@c-8.me) 8615960 | 6518808
+> [ 389.993600] (9:node@c-8.me) 10713112 | 6518808
+> [ 389.993600] (9:node@c-8.me) 14907416 | 6518808
+> [ 389.993600] (9:node@c-8.me) Predecessor: 1319738
+> [ 435.993000] (9:node@c-8.me) My finger table:
+> [ 435.993000] (9:node@c-8.me) Start | Succ
+> [ 435.993000] (9:node@c-8.me) 6518809 | 10004760
+> [ 435.993000] (9:node@c-8.me) 6518810 | 10004760
+> [ 435.993000] (9:node@c-8.me) 6518812 | 10004760
+> [ 435.993000] (9:node@c-8.me) 6518816 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518824 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518840 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518872 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518936 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6519064 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6519320 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6519832 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6520856 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6522904 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6527000 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6535192 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6551576 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6584344 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6649880 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6780952 | 6518808
+> [ 435.993000] (9:node@c-8.me) 7043096 | 6518808
+> [ 435.993000] (9:node@c-8.me) 7567384 | 6518808
+> [ 435.993000] (9:node@c-8.me) 8615960 | 6518808
+> [ 435.993000] (9:node@c-8.me) 10713112 | 6518808
+> [ 435.993000] (9:node@c-8.me) 14907416 | 6518808
+> [ 435.993000] (9:node@c-8.me) Predecessor: 2015253
+> [ 492.992000] (6:node@c-5.me) My finger table:
+> [ 492.992000] (6:node@c-5.me) Start | Succ
+> [ 492.992000] (6:node@c-5.me) 10874877 | 16509405
+> [ 492.992000] (6:node@c-5.me) 10874878 | 533744
+> [ 492.992000] (6:node@c-5.me) 10874880 | 533744
+> [ 492.992000] (6:node@c-5.me) 10874884 | 16509405
+> [ 492.992000] (6:node@c-5.me) 10874892 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10874908 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10874940 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875004 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875132 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875388 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875900 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10876924 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10878972 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10883068 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10891260 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10907644 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10940412 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11005948 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11137020 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11399164 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11923452 | 10874876
+> [ 492.992000] (6:node@c-5.me) 12972028 | 10874876
+> [ 492.992000] (6:node@c-5.me) 15069180 | 10874876
+> [ 492.992000] (6:node@c-5.me) 2486268 | 10874876
+> [ 492.992000] (6:node@c-5.me) Predecessor: -1
+> [ 500.991800] (1:node@c-0.me) My finger table:
+> [ 500.991800] (1:node@c-0.me) Start | Succ
+> [ 500.991800] (1:node@c-0.me) 43 | 366680
+> [ 500.991800] (1:node@c-0.me) 44 | 366680
+> [ 500.991800] (1:node@c-0.me) 46 | 366680
+> [ 500.991800] (1:node@c-0.me) 50 | 366680
+> [ 500.991800] (1:node@c-0.me) 58 | 42
+> [ 500.991800] (1:node@c-0.me) 74 | 42
+> [ 500.991800] (1:node@c-0.me) 106 | 42
+> [ 500.991800] (1:node@c-0.me) 170 | 42
+> [ 500.991800] (1:node@c-0.me) 298 | 42
+> [ 500.991800] (1:node@c-0.me) 554 | 42
+> [ 500.991800] (1:node@c-0.me) 1066 | 42
+> [ 500.991800] (1:node@c-0.me) 2090 | 42
+> [ 500.991800] (1:node@c-0.me) 4138 | 42
+> [ 500.991800] (1:node@c-0.me) 8234 | 42
+> [ 500.991800] (1:node@c-0.me) 16426 | 42
+> [ 500.991800] (1:node@c-0.me) 32810 | 42
+> [ 500.991800] (1:node@c-0.me) 65578 | 42
+> [ 500.991800] (1:node@c-0.me) 131114 | 42
+> [ 500.991800] (1:node@c-0.me) 262186 | 42
+> [ 500.991800] (1:node@c-0.me) 524330 | 42
+> [ 500.991800] (1:node@c-0.me) 1048618 | 42
+> [ 500.991800] (1:node@c-0.me) 2097194 | 42
+> [ 500.991800] (1:node@c-0.me) 4194346 | 42
+> [ 500.991800] (1:node@c-0.me) 8388650 | 42
+> [ 500.991800] (1:node@c-0.me) Predecessor: 16728096
+> [ 504.991900] (5:node@c-4.me) My finger table:
+> [ 504.991900] (5:node@c-4.me) Start | Succ
+> [ 504.991900] (5:node@c-4.me) 16509406 | 16728096
+> [ 504.991900] (5:node@c-4.me) 16509407 | 42
+> [ 504.991900] (5:node@c-4.me) 16509409 | 16728096
+> [ 504.991900] (5:node@c-4.me) 16509413 | 16728096
+> [ 504.991900] (5:node@c-4.me) 16509421 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509437 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509469 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509533 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509661 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509917 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16510429 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16511453 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16513501 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16517597 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16525789 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16542173 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16574941 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16640477 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16771549 | 16509405
+> [ 504.991900] (5:node@c-4.me) 256477 | 16509405
+> [ 504.991900] (5:node@c-4.me) 780765 | 16509405
+> [ 504.991900] (5:node@c-4.me) 1829341 | 16509405
+> [ 504.991900] (5:node@c-4.me) 3926493 | 16509405
+> [ 504.991900] (5:node@c-4.me) 8120797 | 16509405
+> [ 504.991900] (5:node@c-4.me) Predecessor: 10004760
+> [ 508.991700] (4:node@c-3.me) My finger table:
+> [ 508.991700] (4:node@c-3.me) Start | Succ
+> [ 508.991700] (4:node@c-3.me) 1319739 | 2015253
+> [ 508.991700] (4:node@c-3.me) 1319740 | 6518808
+> [ 508.991700] (4:node@c-3.me) 1319742 | 6518808
+> [ 508.991700] (4:node@c-3.me) 1319746 | 2015253
+> [ 508.991700] (4:node@c-3.me) 1319754 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319770 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319802 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319866 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319994 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1320250 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1320762 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1321786 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1323834 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1327930 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1336122 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1352506 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1385274 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1450810 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1581882 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1844026 | 1319738
+> [ 508.991700] (4:node@c-3.me) 2368314 | 1319738
+> [ 508.991700] (4:node@c-3.me) 3416890 | 1319738
+> [ 508.991700] (4:node@c-3.me) 5514042 | 1319738
+> [ 508.991700] (4:node@c-3.me) 9708346 | 1319738
+> [ 508.991700] (4:node@c-3.me) Predecessor: 533744
+> [ 509.991700] (10:node@c-9.me) My finger table:
+> [ 509.991700] (10:node@c-9.me) Start | Succ
+> [ 509.991700] (10:node@c-9.me) 2015254 | 6518808
+> [ 509.991700] (10:node@c-9.me) 2015255 | 16728096
+> [ 509.991700] (10:node@c-9.me) 2015257 | 10004760
+> [ 509.991700] (10:node@c-9.me) 2015261 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015269 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015285 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015317 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015381 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015509 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015765 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2016277 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2017301 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2019349 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2023445 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2031637 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2048021 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2080789 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2146325 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2277397 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2539541 | 2015253
+> [ 509.991700] (10:node@c-9.me) 3063829 | 2015253
+> [ 509.991700] (10:node@c-9.me) 4112405 | 2015253
+> [ 509.991700] (10:node@c-9.me) 6209557 | 2015253
+> [ 509.991700] (10:node@c-9.me) 10403861 | 2015253
+> [ 509.991700] (10:node@c-9.me) Predecessor: 1319738
+> [ 513.991600] (2:node@c-1.me) My finger table:
+> [ 513.991600] (2:node@c-1.me) Start | Succ
+> [ 513.991600] (2:node@c-1.me) 366681 | 533744
+> [ 513.991600] (2:node@c-1.me) 366682 | 1319738
+> [ 513.991600] (2:node@c-1.me) 366684 | 533744
+> [ 513.991600] (2:node@c-1.me) 366688 | 533744
+> [ 513.991600] (2:node@c-1.me) 366696 | 366680
+> [ 513.991600] (2:node@c-1.me) 366712 | 366680
+> [ 513.991600] (2:node@c-1.me) 366744 | 366680
+> [ 513.991600] (2:node@c-1.me) 366808 | 366680
+> [ 513.991600] (2:node@c-1.me) 366936 | 366680
+> [ 513.991600] (2:node@c-1.me) 367192 | 366680
+> [ 513.991600] (2:node@c-1.me) 367704 | 366680
+> [ 513.991600] (2:node@c-1.me) 368728 | 366680
+> [ 513.991600] (2:node@c-1.me) 370776 | 366680
+> [ 513.991600] (2:node@c-1.me) 374872 | 366680
+> [ 513.991600] (2:node@c-1.me) 383064 | 366680
+> [ 513.991600] (2:node@c-1.me) 399448 | 366680
+> [ 513.991600] (2:node@c-1.me) 432216 | 366680
+> [ 513.991600] (2:node@c-1.me) 497752 | 366680
+> [ 513.991600] (2:node@c-1.me) 628824 | 366680
+> [ 513.991600] (2:node@c-1.me) 890968 | 366680
+> [ 513.991600] (2:node@c-1.me) 1415256 | 366680
+> [ 513.991600] (2:node@c-1.me) 2463832 | 366680
+> [ 513.991600] (2:node@c-1.me) 4560984 | 366680
+> [ 513.991600] (2:node@c-1.me) 8755288 | 366680
+> [ 513.991600] (2:node@c-1.me) Predecessor: 42
+> [ 516.991600] (10:node@c-9.me) My finger table:
+> [ 516.991600] (10:node@c-9.me) Start | Succ
+> [ 516.991600] (10:node@c-9.me) 2015254 | 6518808
+> [ 516.991600] (10:node@c-9.me) 2015255 | 16728096
+> [ 516.991600] (10:node@c-9.me) 2015257 | 10004760
+> [ 516.991600] (10:node@c-9.me) 2015261 | 6518808
+> [ 516.991600] (10:node@c-9.me) 2015269 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015285 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015317 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015381 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015509 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015765 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2016277 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2017301 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2019349 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2023445 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2031637 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2048021 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2080789 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2146325 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2277397 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2539541 | 2015253
+> [ 516.991600] (10:node@c-9.me) 3063829 | 2015253
+> [ 516.991600] (10:node@c-9.me) 4112405 | 2015253
+> [ 516.991600] (10:node@c-9.me) 6209557 | 2015253
+> [ 516.991600] (10:node@c-9.me) 10403861 | 2015253
+> [ 516.991600] (10:node@c-9.me) Predecessor: 1319738
+> [ 516.991600] (3:node@c-2.me) My finger table:
+> [ 516.991600] (3:node@c-2.me) Start | Succ
+> [ 516.991600] (3:node@c-2.me) 533745 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533746 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533748 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533752 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533760 | 533744
+> [ 516.991600] (3:node@c-2.me) 533776 | 533744
+> [ 516.991600] (3:node@c-2.me) 533808 | 533744
+> [ 516.991600] (3:node@c-2.me) 533872 | 533744
+> [ 516.991600] (3:node@c-2.me) 534000 | 533744
+> [ 516.991600] (3:node@c-2.me) 534256 | 533744
+> [ 516.991600] (3:node@c-2.me) 534768 | 533744
+> [ 516.991600] (3:node@c-2.me) 535792 | 533744
+> [ 516.991600] (3:node@c-2.me) 537840 | 533744
+> [ 516.991600] (3:node@c-2.me) 541936 | 533744
+> [ 516.991600] (3:node@c-2.me) 550128 | 533744
+> [ 516.991600] (3:node@c-2.me) 566512 | 533744
+> [ 516.991600] (3:node@c-2.me) 599280 | 533744
+> [ 516.991600] (3:node@c-2.me) 664816 | 533744
+> [ 516.991600] (3:node@c-2.me) 795888 | 533744
+> [ 516.991600] (3:node@c-2.me) 1058032 | 533744
+> [ 516.991600] (3:node@c-2.me) 1582320 | 533744
+> [ 516.991600] (3:node@c-2.me) 2630896 | 533744
+> [ 516.991600] (3:node@c-2.me) 4728048 | 533744
+> [ 516.991600] (3:node@c-2.me) 8922352 | 533744
+> [ 516.991600] (3:node@c-2.me) Predecessor: 366680
+> [ 519.991600] (7:node@c-6.me) My finger table:
+> [ 519.991600] (7:node@c-6.me) Start | Succ
+> [ 519.991600] (7:node@c-6.me) 16728097 | 42
+> [ 519.991600] (7:node@c-6.me) 16728098 | 42
+> [ 519.991600] (7:node@c-6.me) 16728100 | 42
+> [ 519.991600] (7:node@c-6.me) 16728104 | 42
+> [ 519.991600] (7:node@c-6.me) 16728112 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728128 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728160 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728224 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728352 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728608 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16729120 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16730144 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16732192 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16736288 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16744480 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16760864 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16416 | 16728096
+> [ 519.991600] (7:node@c-6.me) 81952 | 16728096
+> [ 519.991600] (7:node@c-6.me) 213024 | 16728096
+> [ 519.991600] (7:node@c-6.me) 475168 | 16728096
+> [ 519.991600] (7:node@c-6.me) 999456 | 16728096
+> [ 519.991600] (7:node@c-6.me) 2048032 | 16728096
+> [ 519.991600] (7:node@c-6.me) 4145184 | 16728096
+> [ 519.991600] (7:node@c-6.me) 8339488 | 16728096
+> [ 519.991600] (7:node@c-6.me) Predecessor: 16509405
+> [ 524.991500] (8:node@c-7.me) My finger table:
+> [ 524.991500] (8:node@c-7.me) Start | Succ
+> [ 524.991500] (8:node@c-7.me) 10004761 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004762 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004764 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004768 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004776 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10004792 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10004824 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10004888 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10005016 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10005272 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10005784 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10006808 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10008856 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10012952 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10021144 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10037528 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10070296 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10135832 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10266904 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10529048 | 10004760
+> [ 524.991500] (8:node@c-7.me) 11053336 | 10004760
+> [ 524.991500] (8:node@c-7.me) 12101912 | 10004760
+> [ 524.991500] (8:node@c-7.me) 14199064 | 10004760
+> [ 524.991500] (8:node@c-7.me) 1616152 | 10004760
+> [ 524.991500] (8:node@c-7.me) Predecessor: 6518808
+> [ 529.991500] (5:node@c-4.me) My finger table:
+> [ 529.991500] (5:node@c-4.me) Start | Succ
+> [ 529.991500] (5:node@c-4.me) 16509406 | 16728096
+> [ 529.991500] (5:node@c-4.me) 16509407 | 42
+> [ 529.991500] (5:node@c-4.me) 16509409 | 16728096
+> [ 529.991500] (5:node@c-4.me) 16509413 | 16728096
+> [ 529.991500] (5:node@c-4.me) 16509421 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509437 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509469 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509533 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509661 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509917 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16510429 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16511453 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16513501 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16517597 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16525789 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16542173 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16574941 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16640477 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16771549 | 16509405
+> [ 529.991500] (5:node@c-4.me) 256477 | 16509405
+> [ 529.991500] (5:node@c-4.me) 780765 | 16509405
+> [ 529.991500] (5:node@c-4.me) 1829341 | 16509405
+> [ 529.991500] (5:node@c-4.me) 3926493 | 16509405
+> [ 529.991500] (5:node@c-4.me) 8120797 | 16509405
+> [ 529.991500] (5:node@c-4.me) Predecessor: 10874876
+> [ 540.991400] (9:node@c-8.me) My finger table:
+> [ 540.991400] (9:node@c-8.me) Start | Succ
+> [ 540.991400] (9:node@c-8.me) 6518809 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518810 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518812 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518816 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518824 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6518840 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6518872 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6518936 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6519064 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6519320 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6519832 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6520856 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6522904 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6527000 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6535192 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6551576 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6584344 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6649880 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6780952 | 6518808
+> [ 540.991400] (9:node@c-8.me) 7043096 | 6518808
+> [ 540.991400] (9:node@c-8.me) 7567384 | 6518808
+> [ 540.991400] (9:node@c-8.me) 8615960 | 6518808
+> [ 540.991400] (9:node@c-8.me) 10713112 | 6518808
+> [ 540.991400] (9:node@c-8.me) 14907416 | 6518808
+> [ 540.991400] (9:node@c-8.me) Predecessor: 2015253
+> [ 613.990100] (6:node@c-5.me) My finger table:
+> [ 613.990100] (6:node@c-5.me) Start | Succ
+> [ 613.990100] (6:node@c-5.me) 10874877 | 16509405
+> [ 613.990100] (6:node@c-5.me) 10874878 | 533744
+> [ 613.990100] (6:node@c-5.me) 10874880 | 533744
+> [ 613.990100] (6:node@c-5.me) 10874884 | 16509405
+> [ 613.990100] (6:node@c-5.me) 10874892 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10874908 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10874940 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875004 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875132 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875388 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875900 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10876924 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10878972 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10883068 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10891260 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10907644 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10940412 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11005948 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11137020 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11399164 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11923452 | 10874876
+> [ 613.990100] (6:node@c-5.me) 12972028 | 10874876
+> [ 613.990100] (6:node@c-5.me) 15069180 | 10874876
+> [ 613.990100] (6:node@c-5.me) 2486268 | 10874876
+> [ 613.990100] (6:node@c-5.me) Predecessor: 10004760
+> [ 629.989800] (1:node@c-0.me) My finger table:
+> [ 629.989800] (1:node@c-0.me) Start | Succ
+> [ 629.989800] (1:node@c-0.me) 43 | 366680
+> [ 629.989800] (1:node@c-0.me) 44 | 366680
+> [ 629.989800] (1:node@c-0.me) 46 | 366680
+> [ 629.989800] (1:node@c-0.me) 50 | 366680
+> [ 629.989800] (1:node@c-0.me) 58 | 366680
+> [ 629.989800] (1:node@c-0.me) 74 | 42
+> [ 629.989800] (1:node@c-0.me) 106 | 42
+> [ 629.989800] (1:node@c-0.me) 170 | 42
+> [ 629.989800] (1:node@c-0.me) 298 | 42
+> [ 629.989800] (1:node@c-0.me) 554 | 42
+> [ 629.989800] (1:node@c-0.me) 1066 | 42
+> [ 629.989800] (1:node@c-0.me) 2090 | 42
+> [ 629.989800] (1:node@c-0.me) 4138 | 42
+> [ 629.989800] (1:node@c-0.me) 8234 | 42
+> [ 629.989800] (1:node@c-0.me) 16426 | 42
+> [ 629.989800] (1:node@c-0.me) 32810 | 42
+> [ 629.989800] (1:node@c-0.me) 65578 | 42
+> [ 629.989800] (1:node@c-0.me) 131114 | 42
+> [ 629.989800] (1:node@c-0.me) 262186 | 42
+> [ 629.989800] (1:node@c-0.me) 524330 | 42
+> [ 629.989800] (1:node@c-0.me) 1048618 | 42
+> [ 629.989800] (1:node@c-0.me) 2097194 | 42
+> [ 629.989800] (1:node@c-0.me) 4194346 | 42
+> [ 629.989800] (1:node@c-0.me) 8388650 | 42
+> [ 629.989800] (1:node@c-0.me) Predecessor: 16728096
+> [ 629.989800] (6:node@c-5.me) My finger table:
+> [ 629.989800] (6:node@c-5.me) Start | Succ
+> [ 629.989800] (6:node@c-5.me) 10874877 | 16509405
+> [ 629.989800] (6:node@c-5.me) 10874878 | 533744
+> [ 629.989800] (6:node@c-5.me) 10874880 | 533744
+> [ 629.989800] (6:node@c-5.me) 10874884 | 16509405
+> [ 629.989800] (6:node@c-5.me) 10874892 | 16509405
+> [ 629.989800] (6:node@c-5.me) 10874908 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10874940 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875004 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875132 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875388 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875900 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10876924 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10878972 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10883068 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10891260 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10907644 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10940412 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11005948 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11137020 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11399164 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11923452 | 10874876
+> [ 629.989800] (6:node@c-5.me) 12972028 | 10874876
+> [ 629.989800] (6:node@c-5.me) 15069180 | 10874876
+> [ 629.989800] (6:node@c-5.me) 2486268 | 10874876
+> [ 629.989800] (6:node@c-5.me) Predecessor: 10004760
+> [ 632.989700] (4:node@c-3.me) My finger table:
+> [ 632.989700] (4:node@c-3.me) Start | Succ
+> [ 632.989700] (4:node@c-3.me) 1319739 | 2015253
+> [ 632.989700] (4:node@c-3.me) 1319740 | 6518808
+> [ 632.989700] (4:node@c-3.me) 1319742 | 6518808
+> [ 632.989700] (4:node@c-3.me) 1319746 | 2015253
+> [ 632.989700] (4:node@c-3.me) 1319754 | 2015253
+> [ 632.989700] (4:node@c-3.me) 1319770 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1319802 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1319866 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1319994 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1320250 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1320762 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1321786 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1323834 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1327930 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1336122 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1352506 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1385274 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1450810 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1581882 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1844026 | 1319738
+> [ 632.989700] (4:node@c-3.me) 2368314 | 1319738
+> [ 632.989700] (4:node@c-3.me) 3416890 | 1319738
+> [ 632.989700] (4:node@c-3.me) 5514042 | 1319738
+> [ 632.989700] (4:node@c-3.me) 9708346 | 1319738
+> [ 632.989700] (4:node@c-3.me) Predecessor: 533744
+> [ 637.989600] (2:node@c-1.me) My finger table:
+> [ 637.989600] (2:node@c-1.me) Start | Succ
+> [ 637.989600] (2:node@c-1.me) 366681 | 533744
+> [ 637.989600] (2:node@c-1.me) 366682 | 1319738
+> [ 637.989600] (2:node@c-1.me) 366684 | 533744
+> [ 637.989600] (2:node@c-1.me) 366688 | 533744
+> [ 637.989600] (2:node@c-1.me) 366696 | 533744
+> [ 637.989600] (2:node@c-1.me) 366712 | 366680
+> [ 637.989600] (2:node@c-1.me) 366744 | 366680
+> [ 637.989600] (2:node@c-1.me) 366808 | 366680
+> [ 637.989600] (2:node@c-1.me) 366936 | 366680
+> [ 637.989600] (2:node@c-1.me) 367192 | 366680
+> [ 637.989600] (2:node@c-1.me) 367704 | 366680
+> [ 637.989600] (2:node@c-1.me) 368728 | 366680
+> [ 637.989600] (2:node@c-1.me) 370776 | 366680
+> [ 637.989600] (2:node@c-1.me) 374872 | 366680
+> [ 637.989600] (2:node@c-1.me) 383064 | 366680
+> [ 637.989600] (2:node@c-1.me) 399448 | 366680
+> [ 637.989600] (2:node@c-1.me) 432216 | 366680
+> [ 637.989600] (2:node@c-1.me) 497752 | 366680
+> [ 637.989600] (2:node@c-1.me) 628824 | 366680
+> [ 637.989600] (2:node@c-1.me) 890968 | 366680
+> [ 637.989600] (2:node@c-1.me) 1415256 | 366680
+> [ 637.989600] (2:node@c-1.me) 2463832 | 366680
+> [ 637.989600] (2:node@c-1.me) 4560984 | 366680
+> [ 637.989600] (2:node@c-1.me) 8755288 | 366680
+> [ 637.989600] (2:node@c-1.me) Predecessor: 42
+> [ 638.989600] (3:node@c-2.me) My finger table:
+> [ 638.989600] (3:node@c-2.me) Start | Succ
+> [ 638.989600] (3:node@c-2.me) 533745 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533746 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533748 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533752 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533760 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533776 | 533744
+> [ 638.989600] (3:node@c-2.me) 533808 | 533744
+> [ 638.989600] (3:node@c-2.me) 533872 | 533744
+> [ 638.989600] (3:node@c-2.me) 534000 | 533744
+> [ 638.989600] (3:node@c-2.me) 534256 | 533744
+> [ 638.989600] (3:node@c-2.me) 534768 | 533744
+> [ 638.989600] (3:node@c-2.me) 535792 | 533744
+> [ 638.989600] (3:node@c-2.me) 537840 | 533744
+> [ 638.989600] (3:node@c-2.me) 541936 | 533744
+> [ 638.989600] (3:node@c-2.me) 550128 | 533744
+> [ 638.989600] (3:node@c-2.me) 566512 | 533744
+> [ 638.989600] (3:node@c-2.me) 599280 | 533744
+> [ 638.989600] (3:node@c-2.me) 664816 | 533744
+> [ 638.989600] (3:node@c-2.me) 795888 | 533744
+> [ 638.989600] (3:node@c-2.me) 1058032 | 533744
+> [ 638.989600] (3:node@c-2.me) 1582320 | 533744
+> [ 638.989600] (3:node@c-2.me) 2630896 | 533744
+> [ 638.989600] (3:node@c-2.me) 4728048 | 533744
+> [ 638.989600] (3:node@c-2.me) 8922352 | 533744
+> [ 638.989600] (3:node@c-2.me) Predecessor: 366680
+> [ 641.989600] (10:node@c-9.me) My finger table:
+> [ 641.989600] (10:node@c-9.me) Start | Succ
+> [ 641.989600] (10:node@c-9.me) 2015254 | 6518808
+> [ 641.989600] (10:node@c-9.me) 2015255 | 16728096
+> [ 641.989600] (10:node@c-9.me) 2015257 | 10004760
+> [ 641.989600] (10:node@c-9.me) 2015261 | 6518808
+> [ 641.989600] (10:node@c-9.me) 2015269 | 6518808
+> [ 641.989600] (10:node@c-9.me) 2015285 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015317 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015381 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015509 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015765 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2016277 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2017301 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2019349 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2023445 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2031637 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2048021 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2080789 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2146325 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2277397 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2539541 | 2015253
+> [ 641.989600] (10:node@c-9.me) 3063829 | 2015253
+> [ 641.989600] (10:node@c-9.me) 4112405 | 2015253
+> [ 641.989600] (10:node@c-9.me) 6209557 | 2015253
+> [ 641.989600] (10:node@c-9.me) 10403861 | 2015253
+> [ 641.989600] (10:node@c-9.me) Predecessor: 1319738
+> [ 645.989500] (7:node@c-6.me) My finger table:
+> [ 645.989500] (7:node@c-6.me) Start | Succ
+> [ 645.989500] (7:node@c-6.me) 16728097 | 42
+> [ 645.989500] (7:node@c-6.me) 16728098 | 42
+> [ 645.989500] (7:node@c-6.me) 16728100 | 42
+> [ 645.989500] (7:node@c-6.me) 16728104 | 42
+> [ 645.989500] (7:node@c-6.me) 16728112 | 42
+> [ 645.989500] (7:node@c-6.me) 16728128 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728160 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728224 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728352 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728608 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16729120 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16730144 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16732192 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16736288 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16744480 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16760864 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16416 | 16728096
+> [ 645.989500] (7:node@c-6.me) 81952 | 16728096
+> [ 645.989500] (7:node@c-6.me) 213024 | 16728096
+> [ 645.989500] (7:node@c-6.me) 475168 | 16728096
+> [ 645.989500] (7:node@c-6.me) 999456 | 16728096
+> [ 645.989500] (7:node@c-6.me) 2048032 | 16728096
+> [ 645.989500] (7:node@c-6.me) 4145184 | 16728096
+> [ 645.989500] (7:node@c-6.me) 8339488 | 16728096
+> [ 645.989500] (7:node@c-6.me) Predecessor: 16509405
+> [ 645.989600] (5:node@c-4.me) My finger table:
+> [ 645.989600] (5:node@c-4.me) Start | Succ
+> [ 645.989600] (5:node@c-4.me) 16509406 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509407 | 42
+> [ 645.989600] (5:node@c-4.me) 16509409 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509413 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509421 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509437 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509469 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509533 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509661 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509917 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16510429 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16511453 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16513501 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16517597 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16525789 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16542173 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16574941 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16640477 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16771549 | 16509405
+> [ 645.989600] (5:node@c-4.me) 256477 | 16509405
+> [ 645.989600] (5:node@c-4.me) 780765 | 16509405
+> [ 645.989600] (5:node@c-4.me) 1829341 | 16509405
+> [ 645.989600] (5:node@c-4.me) 3926493 | 16509405
+> [ 645.989600] (5:node@c-4.me) 8120797 | 16509405
+> [ 645.989600] (5:node@c-4.me) Predecessor: 10874876
+> [ 655.989400] (8:node@c-7.me) My finger table:
+> [ 655.989400] (8:node@c-7.me) Start | Succ
+> [ 655.989400] (8:node@c-7.me) 10004761 | 10874876
+> [ 655.989400] (8:node@c-7.me) 10004762 | 16509405
+> [ 655.989400] (8:node@c-7.me) 10004764 | 16509405
+> [ 655.989400] (8:node@c-7.me) 10004768 | 16509405
+> [ 655.989400] (8:node@c-7.me) 10004776 | 10874876
+> [ 655.989400] (8:node@c-7.me) 10004792 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10004824 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10004888 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10005016 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10005272 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10005784 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10006808 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10008856 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10012952 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10021144 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10037528 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10070296 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10135832 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10266904 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10529048 | 10004760
+> [ 655.989400] (8:node@c-7.me) 11053336 | 10004760
+> [ 655.989400] (8:node@c-7.me) 12101912 | 10004760
+> [ 655.989400] (8:node@c-7.me) 14199064 | 10004760
+> [ 655.989400] (8:node@c-7.me) 1616152 | 10004760
+> [ 655.989400] (8:node@c-7.me) Predecessor: 6518808
+> [ 662.989300] (9:node@c-8.me) My finger table:
+> [ 662.989300] (9:node@c-8.me) Start | Succ
+> [ 662.989300] (9:node@c-8.me) 6518809 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518810 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518812 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518816 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518824 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518840 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6518872 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6518936 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6519064 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6519320 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6519832 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6520856 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6522904 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6527000 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6535192 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6551576 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6584344 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6649880 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6780952 | 6518808
+> [ 662.989300] (9:node@c-8.me) 7043096 | 6518808
+> [ 662.989300] (9:node@c-8.me) 7567384 | 6518808
+> [ 662.989300] (9:node@c-8.me) 8615960 | 6518808
+> [ 662.989300] (9:node@c-8.me) 10713112 | 6518808
+> [ 662.989300] (9:node@c-8.me) 14907416 | 6518808
+> [ 662.989300] (9:node@c-8.me) Predecessor: 2015253
+> [ 754.987800] (1:node@c-0.me) My finger table:
+> [ 754.987800] (1:node@c-0.me) Start | Succ
+> [ 754.987800] (1:node@c-0.me) 43 | 366680
+> [ 754.987800] (1:node@c-0.me) 44 | 366680
+> [ 754.987800] (1:node@c-0.me) 46 | 366680
+> [ 754.987800] (1:node@c-0.me) 50 | 366680
+> [ 754.987800] (1:node@c-0.me) 58 | 366680
+> [ 754.987800] (1:node@c-0.me) 74 | 366680
+> [ 754.987800] (1:node@c-0.me) 106 | 42
+> [ 754.987800] (1:node@c-0.me) 170 | 42
+> [ 754.987800] (1:node@c-0.me) 298 | 42
+> [ 754.987800] (1:node@c-0.me) 554 | 42
+> [ 754.987800] (1:node@c-0.me) 1066 | 42
+> [ 754.987800] (1:node@c-0.me) 2090 | 42
+> [ 754.987800] (1:node@c-0.me) 4138 | 42
+> [ 754.987800] (1:node@c-0.me) 8234 | 42
+> [ 754.987800] (1:node@c-0.me) 16426 | 42
+> [ 754.987800] (1:node@c-0.me) 32810 | 42
+> [ 754.987800] (1:node@c-0.me) 65578 | 42
+> [ 754.987800] (1:node@c-0.me) 131114 | 42
+> [ 754.987800] (1:node@c-0.me) 262186 | 42
+> [ 754.987800] (1:node@c-0.me) 524330 | 42
+> [ 754.987800] (1:node@c-0.me) 1048618 | 42
+> [ 754.987800] (1:node@c-0.me) 2097194 | 42
+> [ 754.987800] (1:node@c-0.me) 4194346 | 42
+> [ 754.987800] (1:node@c-0.me) 8388650 | 42
+> [ 754.987800] (1:node@c-0.me) Predecessor: 16728096
+> [ 757.987800] (4:node@c-3.me) My finger table:
+> [ 757.987800] (4:node@c-3.me) Start | Succ
+> [ 757.987800] (4:node@c-3.me) 1319739 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319740 | 6518808
+> [ 757.987800] (4:node@c-3.me) 1319742 | 6518808
+> [ 757.987800] (4:node@c-3.me) 1319746 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319754 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319770 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319802 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1319866 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1319994 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1320250 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1320762 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1321786 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1323834 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1327930 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1336122 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1352506 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1385274 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1450810 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1581882 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1844026 | 1319738
+> [ 757.987800] (4:node@c-3.me) 2368314 | 1319738
+> [ 757.987800] (4:node@c-3.me) 3416890 | 1319738
+> [ 757.987800] (4:node@c-3.me) 5514042 | 1319738
+> [ 757.987800] (4:node@c-3.me) 9708346 | 1319738
+> [ 757.987800] (4:node@c-3.me) Predecessor: 533744
+> [ 762.987700] (10:node@c-9.me) My finger table:
+> [ 762.987700] (10:node@c-9.me) Start | Succ
+> [ 762.987700] (10:node@c-9.me) 2015254 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015255 | 16728096
+> [ 762.987700] (10:node@c-9.me) 2015257 | 10004760
+> [ 762.987700] (10:node@c-9.me) 2015261 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015269 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015285 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015317 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2015381 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2015509 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2015765 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2016277 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2017301 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2019349 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2023445 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2031637 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2048021 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2080789 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2146325 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2277397 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2539541 | 2015253
+> [ 762.987700] (10:node@c-9.me) 3063829 | 2015253
+> [ 762.987700] (10:node@c-9.me) 4112405 | 2015253
+> [ 762.987700] (10:node@c-9.me) 6209557 | 2015253
+> [ 762.987700] (10:node@c-9.me) 10403861 | 2015253
+> [ 762.987700] (10:node@c-9.me) Predecessor: 1319738
+> [ 762.987700] (6:node@c-5.me) My finger table:
+> [ 762.987700] (6:node@c-5.me) Start | Succ
+> [ 762.987700] (6:node@c-5.me) 10874877 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874878 | 533744
+> [ 762.987700] (6:node@c-5.me) 10874880 | 533744
+> [ 762.987700] (6:node@c-5.me) 10874884 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874892 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874908 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874940 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875004 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875132 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875388 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875900 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10876924 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10878972 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10883068 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10891260 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10907644 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10940412 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11005948 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11137020 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11399164 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11923452 | 10874876
+> [ 762.987700] (6:node@c-5.me) 12972028 | 10874876
+> [ 762.987700] (6:node@c-5.me) 15069180 | 10874876
+> [ 762.987700] (6:node@c-5.me) 2486268 | 10874876
+> [ 762.987700] (6:node@c-5.me) Predecessor: 10004760
+> [ 767.987600] (2:node@c-1.me) My finger table:
+> [ 767.987600] (2:node@c-1.me) Start | Succ
+> [ 767.987600] (2:node@c-1.me) 366681 | 533744
+> [ 767.987600] (2:node@c-1.me) 366682 | 1319738
+> [ 767.987600] (2:node@c-1.me) 366684 | 533744
+> [ 767.987600] (2:node@c-1.me) 366688 | 533744
+> [ 767.987600] (2:node@c-1.me) 366696 | 533744
+> [ 767.987600] (2:node@c-1.me) 366712 | 533744
+> [ 767.987600] (2:node@c-1.me) 366744 | 366680
+> [ 767.987600] (2:node@c-1.me) 366808 | 366680
+> [ 767.987600] (2:node@c-1.me) 366936 | 366680
+> [ 767.987600] (2:node@c-1.me) 367192 | 366680
+> [ 767.987600] (2:node@c-1.me) 367704 | 366680
+> [ 767.987600] (2:node@c-1.me) 368728 | 366680
+> [ 767.987600] (2:node@c-1.me) 370776 | 366680
+> [ 767.987600] (2:node@c-1.me) 374872 | 366680
+> [ 767.987600] (2:node@c-1.me) 383064 | 366680
+> [ 767.987600] (2:node@c-1.me) 399448 | 366680
+> [ 767.987600] (2:node@c-1.me) 432216 | 366680
+> [ 767.987600] (2:node@c-1.me) 497752 | 366680
+> [ 767.987600] (2:node@c-1.me) 628824 | 366680
+> [ 767.987600] (2:node@c-1.me) 890968 | 366680
+> [ 767.987600] (2:node@c-1.me) 1415256 | 366680
+> [ 767.987600] (2:node@c-1.me) 2463832 | 366680
+> [ 767.987600] (2:node@c-1.me) 4560984 | 366680
+> [ 767.987600] (2:node@c-1.me) 8755288 | 366680
+> [ 767.987600] (2:node@c-1.me) Predecessor: 42
+> [ 771.987500] (5:node@c-4.me) My finger table:
+> [ 771.987500] (5:node@c-4.me) Start | Succ
+> [ 771.987500] (5:node@c-4.me) 16509406 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509407 | 42
+> [ 771.987500] (5:node@c-4.me) 16509409 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509413 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509421 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509437 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509469 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16509533 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16509661 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16509917 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16510429 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16511453 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16513501 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16517597 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16525789 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16542173 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16574941 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16640477 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16771549 | 16509405
+> [ 771.987500] (5:node@c-4.me) 256477 | 16509405
+> [ 771.987500] (5:node@c-4.me) 780765 | 16509405
+> [ 771.987500] (5:node@c-4.me) 1829341 | 16509405
+> [ 771.987500] (5:node@c-4.me) 3926493 | 16509405
+> [ 771.987500] (5:node@c-4.me) 8120797 | 16509405
+> [ 771.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 776.987500] (3:node@c-2.me) My finger table:
+> [ 776.987500] (3:node@c-2.me) Start | Succ
+> [ 776.987500] (3:node@c-2.me) 533745 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533746 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533748 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533752 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533760 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533776 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533808 | 533744
+> [ 776.987500] (3:node@c-2.me) 533872 | 533744
+> [ 776.987500] (3:node@c-2.me) 534000 | 533744
+> [ 776.987500] (3:node@c-2.me) 534256 | 533744
+> [ 776.987500] (3:node@c-2.me) 534768 | 533744
+> [ 776.987500] (3:node@c-2.me) 535792 | 533744
+> [ 776.987500] (3:node@c-2.me) 537840 | 533744
+> [ 776.987500] (3:node@c-2.me) 541936 | 533744
+> [ 776.987500] (3:node@c-2.me) 550128 | 533744
+> [ 776.987500] (3:node@c-2.me) 566512 | 533744
+> [ 776.987500] (3:node@c-2.me) 599280 | 533744
+> [ 776.987500] (3:node@c-2.me) 664816 | 533744
+> [ 776.987500] (3:node@c-2.me) 795888 | 533744
+> [ 776.987500] (3:node@c-2.me) 1058032 | 533744
+> [ 776.987500] (3:node@c-2.me) 1582320 | 533744
+> [ 776.987500] (3:node@c-2.me) 2630896 | 533744
+> [ 776.987500] (3:node@c-2.me) 4728048 | 533744
+> [ 776.987500] (3:node@c-2.me) 8922352 | 533744
+> [ 776.987500] (3:node@c-2.me) Predecessor: 366680
+> [ 823.987500] (8:node@c-7.me) My finger table:
+> [ 823.987500] (8:node@c-7.me) Start | Succ
+> [ 823.987500] (8:node@c-7.me) 10004761 | 10874876
+> [ 823.987500] (8:node@c-7.me) 10004762 | 16509405
+> [ 823.987500] (8:node@c-7.me) 10004764 | 16509405
+> [ 823.987500] (8:node@c-7.me) 10004768 | 16509405
+> [ 823.987500] (8:node@c-7.me) 10004776 | 10874876
+> [ 823.987500] (8:node@c-7.me) 10004792 | 10874876
+> [ 823.987500] (8:node@c-7.me) 10004824 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10004888 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10005016 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10005272 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10005784 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10006808 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10008856 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10012952 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10021144 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10037528 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10070296 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10135832 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10266904 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10529048 | 10004760
+> [ 823.987500] (8:node@c-7.me) 11053336 | 10004760
+> [ 823.987500] (8:node@c-7.me) 12101912 | 10004760
+> [ 823.987500] (8:node@c-7.me) 14199064 | 10004760
+> [ 823.987500] (8:node@c-7.me) 1616152 | 10004760
+> [ 823.987500] (8:node@c-7.me) Predecessor: 6518808
+> [ 824.987500] (7:node@c-6.me) My finger table:
+> [ 824.987500] (7:node@c-6.me) Start | Succ
+> [ 824.987500] (7:node@c-6.me) 16728097 | 42
+> [ 824.987500] (7:node@c-6.me) 16728098 | 42
+> [ 824.987500] (7:node@c-6.me) 16728100 | 42
+> [ 824.987500] (7:node@c-6.me) 16728104 | 42
+> [ 824.987500] (7:node@c-6.me) 16728112 | 42
+> [ 824.987500] (7:node@c-6.me) 16728128 | 42
+> [ 824.987500] (7:node@c-6.me) 16728160 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16728224 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16728352 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16728608 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16729120 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16730144 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16732192 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16736288 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16744480 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16760864 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16416 | 16728096
+> [ 824.987500] (7:node@c-6.me) 81952 | 16728096
+> [ 824.987500] (7:node@c-6.me) 213024 | 16728096
+> [ 824.987500] (7:node@c-6.me) 475168 | 16728096
+> [ 824.987500] (7:node@c-6.me) 999456 | 16728096
+> [ 824.987500] (7:node@c-6.me) 2048032 | 16728096
+> [ 824.987500] (7:node@c-6.me) 4145184 | 16728096
+> [ 824.987500] (7:node@c-6.me) 8339488 | 16728096
+> [ 824.987500] (7:node@c-6.me) Predecessor: 16509405
+> [ 876.987500] (9:node@c-8.me) My finger table:
+> [ 876.987500] (9:node@c-8.me) Start | Succ
+> [ 876.987500] (9:node@c-8.me) 6518809 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518810 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518812 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518816 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518824 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518840 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518872 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6518936 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6519064 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6519320 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6519832 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6520856 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6522904 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6527000 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6535192 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6551576 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6584344 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6649880 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6780952 | 6518808
+> [ 876.987500] (9:node@c-8.me) 7043096 | 6518808
+> [ 876.987500] (9:node@c-8.me) 7567384 | 6518808
+> [ 876.987500] (9:node@c-8.me) 8615960 | 6518808
+> [ 876.987500] (9:node@c-8.me) 10713112 | 6518808
+> [ 876.987500] (9:node@c-8.me) 14907416 | 6518808
+> [ 876.987500] (9:node@c-8.me) Predecessor: 2015253
+> [ 880.986500] (1:node@c-0.me) My finger table:
+> [ 880.986500] (1:node@c-0.me) Start | Succ
+> [ 880.986500] (1:node@c-0.me) 43 | 366680
+> [ 880.986500] (1:node@c-0.me) 44 | 366680
+> [ 880.986500] (1:node@c-0.me) 46 | 366680
+> [ 880.986500] (1:node@c-0.me) 50 | 366680
+> [ 880.986500] (1:node@c-0.me) 58 | 366680
+> [ 880.986500] (1:node@c-0.me) 74 | 366680
+> [ 880.986500] (1:node@c-0.me) 106 | 366680
+> [ 880.986500] (1:node@c-0.me) 170 | 42
+> [ 880.986500] (1:node@c-0.me) 298 | 42
+> [ 880.986500] (1:node@c-0.me) 554 | 42
+> [ 880.986500] (1:node@c-0.me) 1066 | 42
+> [ 880.986500] (1:node@c-0.me) 2090 | 42
+> [ 880.986500] (1:node@c-0.me) 4138 | 42
+> [ 880.986500] (1:node@c-0.me) 8234 | 42
+> [ 880.986500] (1:node@c-0.me) 16426 | 42
+> [ 880.986500] (1:node@c-0.me) 32810 | 42
+> [ 880.986500] (1:node@c-0.me) 65578 | 42
+> [ 880.986500] (1:node@c-0.me) 131114 | 42
+> [ 880.986500] (1:node@c-0.me) 262186 | 42
+> [ 880.986500] (1:node@c-0.me) 524330 | 42
+> [ 880.986500] (1:node@c-0.me) 1048618 | 42
+> [ 880.986500] (1:node@c-0.me) 2097194 | 42
+> [ 880.986500] (1:node@c-0.me) 4194346 | 42
+> [ 880.986500] (1:node@c-0.me) 8388650 | 42
+> [ 880.986500] (1:node@c-0.me) Predecessor: 16728096
+> [ 904.987100] (3:node@c-2.me) My finger table:
+> [ 904.987100] (3:node@c-2.me) Start | Succ
+> [ 904.987100] (3:node@c-2.me) 533745 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533746 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533748 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533752 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533760 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533776 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533808 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533872 | 533744
+> [ 904.987100] (3:node@c-2.me) 534000 | 533744
+> [ 904.987100] (3:node@c-2.me) 534256 | 533744
+> [ 904.987100] (3:node@c-2.me) 534768 | 533744
+> [ 904.987100] (3:node@c-2.me) 535792 | 533744
+> [ 904.987100] (3:node@c-2.me) 537840 | 533744
+> [ 904.987100] (3:node@c-2.me) 541936 | 533744
+> [ 904.987100] (3:node@c-2.me) 550128 | 533744
+> [ 904.987100] (3:node@c-2.me) 566512 | 533744
+> [ 904.987100] (3:node@c-2.me) 599280 | 533744
+> [ 904.987100] (3:node@c-2.me) 664816 | 533744
+> [ 904.987100] (3:node@c-2.me) 795888 | 533744
+> [ 904.987100] (3:node@c-2.me) 1058032 | 533744
+> [ 904.987100] (3:node@c-2.me) 1582320 | 533744
+> [ 904.987100] (3:node@c-2.me) 2630896 | 533744
+> [ 904.987100] (3:node@c-2.me) 4728048 | 533744
+> [ 904.987100] (3:node@c-2.me) 8922352 | 533744
+> [ 904.987100] (3:node@c-2.me) Predecessor: 366680
+> [ 924.987500] (5:node@c-4.me) My finger table:
+> [ 924.987500] (5:node@c-4.me) Start | Succ
+> [ 924.987500] (5:node@c-4.me) 16509406 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509407 | 42
+> [ 924.987500] (5:node@c-4.me) 16509409 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509413 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509421 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509437 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509469 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509533 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16509661 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16509917 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16510429 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16511453 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16513501 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16517597 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16525789 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16542173 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16574941 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16640477 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16771549 | 16509405
+> [ 924.987500] (5:node@c-4.me) 256477 | 16509405
+> [ 924.987500] (5:node@c-4.me) 780765 | 16509405
+> [ 924.987500] (5:node@c-4.me) 1829341 | 16509405
+> [ 924.987500] (5:node@c-4.me) 3926493 | 16509405
+> [ 924.987500] (5:node@c-4.me) 8120797 | 16509405
+> [ 924.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 936.987400] (6:node@c-5.me) My finger table:
+> [ 936.987400] (6:node@c-5.me) Start | Succ
+> [ 936.987400] (6:node@c-5.me) 10874877 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874878 | 533744
+> [ 936.987400] (6:node@c-5.me) 10874880 | 533744
+> [ 936.987400] (6:node@c-5.me) 10874884 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874892 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874908 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874940 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10875004 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10875132 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10875388 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10875900 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10876924 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10878972 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10883068 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10891260 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10907644 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10940412 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11005948 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11137020 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11399164 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11923452 | 10874876
+> [ 936.987400] (6:node@c-5.me) 12972028 | 10874876
+> [ 936.987400] (6:node@c-5.me) 15069180 | 10874876
+> [ 936.987400] (6:node@c-5.me) 2486268 | 10874876
+> [ 936.987400] (6:node@c-5.me) Predecessor: 10004760
+> [ 945.985300] (7:node@c-6.me) My finger table:
+> [ 945.985300] (7:node@c-6.me) Start | Succ
+> [ 945.985300] (7:node@c-6.me) 16728097 | 42
+> [ 945.985300] (7:node@c-6.me) 16728098 | 42
+> [ 945.985300] (7:node@c-6.me) 16728100 | 42
+> [ 945.985300] (7:node@c-6.me) 16728104 | 42
+> [ 945.985300] (7:node@c-6.me) 16728112 | 42
+> [ 945.985300] (7:node@c-6.me) 16728128 | 42
+> [ 945.985300] (7:node@c-6.me) 16728160 | 42
+> [ 945.985300] (7:node@c-6.me) 16728224 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16728352 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16728608 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16729120 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16730144 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16732192 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16736288 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16744480 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16760864 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16416 | 16728096
+> [ 945.985300] (7:node@c-6.me) 81952 | 16728096
+> [ 945.985300] (7:node@c-6.me) 213024 | 16728096
+> [ 945.985300] (7:node@c-6.me) 475168 | 16728096
+> [ 945.985300] (7:node@c-6.me) 999456 | 16728096
+> [ 945.985300] (7:node@c-6.me) 2048032 | 16728096
+> [ 945.985300] (7:node@c-6.me) 4145184 | 16728096
+> [ 945.985300] (7:node@c-6.me) 8339488 | 16728096
+> [ 945.985300] (7:node@c-6.me) Predecessor: 16509405
+> [ 952.985200] (2:node@c-1.me) My finger table:
+> [ 952.985200] (2:node@c-1.me) Start | Succ
+> [ 952.985200] (2:node@c-1.me) 366681 | 533744
+> [ 952.985200] (2:node@c-1.me) 366682 | 1319738
+> [ 952.985200] (2:node@c-1.me) 366684 | 533744
+> [ 952.985200] (2:node@c-1.me) 366688 | 533744
+> [ 952.985200] (2:node@c-1.me) 366696 | 533744
+> [ 952.985200] (2:node@c-1.me) 366712 | 533744
+> [ 952.985200] (2:node@c-1.me) 366744 | 533744
+> [ 952.985200] (2:node@c-1.me) 366808 | 366680
+> [ 952.985200] (2:node@c-1.me) 366936 | 366680
+> [ 952.985200] (2:node@c-1.me) 367192 | 366680
+> [ 952.985200] (2:node@c-1.me) 367704 | 366680
+> [ 952.985200] (2:node@c-1.me) 368728 | 366680
+> [ 952.985200] (2:node@c-1.me) 370776 | 366680
+> [ 952.985200] (2:node@c-1.me) 374872 | 366680
+> [ 952.985200] (2:node@c-1.me) 383064 | 366680
+> [ 952.985200] (2:node@c-1.me) 399448 | 366680
+> [ 952.985200] (2:node@c-1.me) 432216 | 366680
+> [ 952.985200] (2:node@c-1.me) 497752 | 366680
+> [ 952.985200] (2:node@c-1.me) 628824 | 366680
+> [ 952.985200] (2:node@c-1.me) 890968 | 366680
+> [ 952.985200] (2:node@c-1.me) 1415256 | 366680
+> [ 952.985200] (2:node@c-1.me) 2463832 | 366680
+> [ 952.985200] (2:node@c-1.me) 4560984 | 366680
+> [ 952.985200] (2:node@c-1.me) 8755288 | 366680
+> [ 952.985200] (2:node@c-1.me) Predecessor: 42
+> [ 967.986900] (4:node@c-3.me) My finger table:
+> [ 967.986900] (4:node@c-3.me) Start | Succ
+> [ 967.986900] (4:node@c-3.me) 1319739 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319740 | 6518808
+> [ 967.986900] (4:node@c-3.me) 1319742 | 6518808
+> [ 967.986900] (4:node@c-3.me) 1319746 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319754 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319770 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319802 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319866 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1319994 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1320250 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1320762 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1321786 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1323834 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1327930 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1336122 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1352506 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1385274 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1450810 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1581882 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1844026 | 1319738
+> [ 967.986900] (4:node@c-3.me) 2368314 | 1319738
+> [ 967.986900] (4:node@c-3.me) 3416890 | 1319738
+> [ 967.986900] (4:node@c-3.me) 5514042 | 1319738
+> [ 967.986900] (4:node@c-3.me) 9708346 | 1319738
+> [ 967.986900] (4:node@c-3.me) Predecessor: 533744
+> [1207.985300] (0:@) Messages created: 1690
+> [1207.985300] (0:@) Simulated time: 1207.99
#! ./tesh
-p Testing the Chord implementation with MSG
+p> Testing the Chord implementation with MSG
! output sort
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT -nb_bits=6 ${srcdir:=.}/../msg_platform.xml ${srcdir:=.}/chord.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (8:node@Jacquelin) 17 | 1
> [ 0.000000] (8:node@Jacquelin) 33 | 1
> [ 0.000000] (8:node@Jacquelin) Predecessor: -1
-> [ 6.274448] (1:node@Gatien) My finger table:
-> [ 6.274448] (1:node@Gatien) Start | Succ
-> [ 6.274448] (1:node@Gatien) 49 | 1
-> [ 6.274448] (1:node@Gatien) 50 | 48
-> [ 6.274448] (1:node@Gatien) 52 | 48
-> [ 6.274448] (1:node@Gatien) 56 | 48
-> [ 6.274448] (1:node@Gatien) 0 | 48
-> [ 6.274448] (1:node@Gatien) 16 | 48
-> [ 6.274448] (1:node@Gatien) Predecessor: -1
-> [ 10.888356] (2:node@McGee) My finger table:
-> [ 10.888356] (2:node@McGee) Start | Succ
-> [ 10.888356] (2:node@McGee) 43 | 1
-> [ 10.888356] (2:node@McGee) 44 | 42
-> [ 10.888356] (2:node@McGee) 46 | 42
-> [ 10.888356] (2:node@McGee) 50 | 42
-> [ 10.888356] (2:node@McGee) 58 | 42
-> [ 10.888356] (2:node@McGee) 10 | 42
-> [ 10.888356] (2:node@McGee) Predecessor: -1
-> [ 18.043675] (3:node@iRMX) My finger table:
-> [ 18.043675] (3:node@iRMX) Start | Succ
-> [ 18.043675] (3:node@iRMX) 39 | 1
-> [ 18.043675] (3:node@iRMX) 40 | 38
-> [ 18.043675] (3:node@iRMX) 42 | 38
-> [ 18.043675] (3:node@iRMX) 46 | 38
-> [ 18.043675] (3:node@iRMX) 54 | 38
-> [ 18.043675] (3:node@iRMX) 6 | 38
-> [ 18.043675] (3:node@iRMX) Predecessor: -1
-> [ 20.005344] (4:node@Geoff) My finger table:
-> [ 20.005344] (4:node@Geoff) Start | Succ
-> [ 20.005344] (4:node@Geoff) 33 | 1
-> [ 20.005344] (4:node@Geoff) 34 | 32
-> [ 20.005344] (4:node@Geoff) 36 | 32
-> [ 20.005344] (4:node@Geoff) 40 | 32
-> [ 20.005344] (4:node@Geoff) 48 | 32
-> [ 20.005344] (4:node@Geoff) 0 | 32
-> [ 20.005344] (4:node@Geoff) Predecessor: -1
-> [ 26.812602] (5:node@TeX) My finger table:
-> [ 26.812602] (5:node@TeX) Start | Succ
-> [ 26.812602] (5:node@TeX) 22 | 1
-> [ 26.812602] (5:node@TeX) 23 | 21
-> [ 26.812602] (5:node@TeX) 25 | 21
-> [ 26.812602] (5:node@TeX) 29 | 21
-> [ 26.812602] (5:node@TeX) 37 | 21
-> [ 26.812602] (5:node@TeX) 53 | 21
-> [ 26.812602] (5:node@TeX) Predecessor: -1
-> [ 30.925131] (6:node@Jean_Yves) My finger table:
-> [ 30.925131] (6:node@Jean_Yves) Start | Succ
-> [ 30.925131] (6:node@Jean_Yves) 15 | 1
-> [ 30.925131] (6:node@Jean_Yves) 16 | 14
-> [ 30.925131] (6:node@Jean_Yves) 18 | 14
-> [ 30.925131] (6:node@Jean_Yves) 22 | 14
-> [ 30.925131] (6:node@Jean_Yves) 30 | 14
-> [ 30.925131] (6:node@Jean_Yves) 46 | 14
-> [ 30.925131] (6:node@Jean_Yves) Predecessor: -1
-> [ 36.048886] (7:node@Boivin) My finger table:
-> [ 36.048886] (7:node@Boivin) Start | Succ
-> [ 36.048886] (7:node@Boivin) 9 | 1
-> [ 36.048886] (7:node@Boivin) 10 | 8
-> [ 36.048886] (7:node@Boivin) 12 | 8
-> [ 36.048886] (7:node@Boivin) 16 | 8
-> [ 36.048886] (7:node@Boivin) 24 | 8
-> [ 36.048886] (7:node@Boivin) 40 | 8
-> [ 36.048886] (7:node@Boivin) Predecessor: -1
-> [ 75.000000] (8:node@Jacquelin) My finger table:
-> [ 75.000000] (8:node@Jacquelin) Start | Succ
-> [ 75.000000] (8:node@Jacquelin) 2 | 1
-> [ 75.000000] (8:node@Jacquelin) 3 | 1
-> [ 75.000000] (8:node@Jacquelin) 5 | 1
-> [ 75.000000] (8:node@Jacquelin) 9 | 1
-> [ 75.000000] (8:node@Jacquelin) 17 | 1
-> [ 75.000000] (8:node@Jacquelin) 33 | 1
-> [ 75.000000] (8:node@Jacquelin) Predecessor: 32
-> [ 80.000000] (8:node@Jacquelin) My finger table:
-> [ 80.000000] (8:node@Jacquelin) Start | Succ
-> [ 80.000000] (8:node@Jacquelin) 2 | 1
-> [ 80.000000] (8:node@Jacquelin) 3 | 1
-> [ 80.000000] (8:node@Jacquelin) 5 | 1
-> [ 80.000000] (8:node@Jacquelin) 9 | 1
-> [ 80.000000] (8:node@Jacquelin) 17 | 1
-> [ 80.000000] (8:node@Jacquelin) 33 | 1
-> [ 80.000000] (8:node@Jacquelin) Predecessor: 42
-> [ 81.274448] (8:node@Jacquelin) My finger table:
-> [ 81.274448] (8:node@Jacquelin) Start | Succ
-> [ 81.274448] (8:node@Jacquelin) 2 | 42
-> [ 81.274448] (8:node@Jacquelin) 3 | 1
-> [ 81.274448] (8:node@Jacquelin) 5 | 1
-> [ 81.274448] (8:node@Jacquelin) 9 | 1
-> [ 81.274448] (8:node@Jacquelin) 17 | 1
-> [ 81.274448] (8:node@Jacquelin) 33 | 1
-> [ 81.274448] (8:node@Jacquelin) Predecessor: 48
-> [116.655207] (2:node@McGee) My finger table:
-> [116.655207] (2:node@McGee) Start | Succ
-> [116.655207] (2:node@McGee) 43 | 48
-> [116.655207] (2:node@McGee) 44 | 42
-> [116.655207] (2:node@McGee) 46 | 42
-> [116.655207] (2:node@McGee) 50 | 42
-> [116.655207] (2:node@McGee) 58 | 42
-> [116.655207] (2:node@McGee) 10 | 42
-> [116.655207] (2:node@McGee) Predecessor: 1
-> [141.383343] (1:node@Gatien) My finger table:
-> [141.383343] (1:node@Gatien) Start | Succ
-> [141.383343] (1:node@Gatien) 49 | 1
-> [141.383343] (1:node@Gatien) 50 | 48
-> [141.383343] (1:node@Gatien) 52 | 48
-> [141.383343] (1:node@Gatien) 56 | 48
-> [141.383343] (1:node@Gatien) 0 | 48
-> [141.383343] (1:node@Gatien) 16 | 48
-> [141.383343] (1:node@Gatien) Predecessor: 42
-> [193.730915] (2:node@McGee) My finger table:
-> [193.730915] (2:node@McGee) Start | Succ
-> [193.730915] (2:node@McGee) 43 | 48
-> [193.730915] (2:node@McGee) 44 | 42
-> [193.730915] (2:node@McGee) 46 | 42
-> [193.730915] (2:node@McGee) 50 | 42
-> [193.730915] (2:node@McGee) 58 | 42
-> [193.730915] (2:node@McGee) 10 | 42
-> [193.730915] (2:node@McGee) Predecessor: 8
-> [242.028917] (1:node@Gatien) My finger table:
-> [242.028917] (1:node@Gatien) Start | Succ
-> [242.028917] (1:node@Gatien) 49 | 1
-> [242.028917] (1:node@Gatien) 50 | 1
-> [242.028917] (1:node@Gatien) 52 | 48
-> [242.028917] (1:node@Gatien) 56 | 48
-> [242.028917] (1:node@Gatien) 0 | 48
-> [242.028917] (1:node@Gatien) 16 | 48
-> [242.028917] (1:node@Gatien) Predecessor: 42
-> [242.939681] (2:node@McGee) My finger table:
-> [242.939681] (2:node@McGee) Start | Succ
-> [242.939681] (2:node@McGee) 43 | 48
-> [242.939681] (2:node@McGee) 44 | 42
-> [242.939681] (2:node@McGee) 46 | 42
-> [242.939681] (2:node@McGee) 50 | 42
-> [242.939681] (2:node@McGee) 58 | 42
-> [242.939681] (2:node@McGee) 10 | 42
-> [242.939681] (2:node@McGee) Predecessor: 38
-> [246.478513] (2:node@McGee) My finger table:
-> [246.478513] (2:node@McGee) Start | Succ
-> [246.478513] (2:node@McGee) 43 | 48
-> [246.478513] (2:node@McGee) 44 | 48
-> [246.478513] (2:node@McGee) 46 | 42
-> [246.478513] (2:node@McGee) 50 | 42
-> [246.478513] (2:node@McGee) 58 | 42
-> [246.478513] (2:node@McGee) 10 | 42
-> [246.478513] (2:node@McGee) Predecessor: 38
-> [248.768529] (7:node@Boivin) My finger table:
-> [248.768529] (7:node@Boivin) Start | Succ
-> [248.768529] (7:node@Boivin) 9 | 38
-> [248.768529] (7:node@Boivin) 10 | 38
-> [248.768529] (7:node@Boivin) 12 | 8
-> [248.768529] (7:node@Boivin) 16 | 8
-> [248.768529] (7:node@Boivin) 24 | 8
-> [248.768529] (7:node@Boivin) 40 | 8
-> [248.768529] (7:node@Boivin) Predecessor: -1
-> [255.578816] (4:node@Geoff) My finger table:
-> [255.578816] (4:node@Geoff) Start | Succ
-> [255.578816] (4:node@Geoff) 33 | 42
-> [255.578816] (4:node@Geoff) 34 | 42
-> [255.578816] (4:node@Geoff) 36 | 32
-> [255.578816] (4:node@Geoff) 40 | 32
-> [255.578816] (4:node@Geoff) 48 | 32
-> [255.578816] (4:node@Geoff) 0 | 32
-> [255.578816] (4:node@Geoff) Predecessor: -1
-> [268.081409] (8:node@Jacquelin) My finger table:
-> [268.081409] (8:node@Jacquelin) Start | Succ
-> [268.081409] (8:node@Jacquelin) 2 | 8
-> [268.081409] (8:node@Jacquelin) 3 | 8
-> [268.081409] (8:node@Jacquelin) 5 | 1
-> [268.081409] (8:node@Jacquelin) 9 | 1
-> [268.081409] (8:node@Jacquelin) 17 | 1
-> [268.081409] (8:node@Jacquelin) 33 | 1
-> [268.081409] (8:node@Jacquelin) Predecessor: 48
-> [269.130295] (7:node@Boivin) My finger table:
-> [269.130295] (7:node@Boivin) Start | Succ
-> [269.130295] (7:node@Boivin) 9 | 38
-> [269.130295] (7:node@Boivin) 10 | 38
-> [269.130295] (7:node@Boivin) 12 | 8
-> [269.130295] (7:node@Boivin) 16 | 8
-> [269.130295] (7:node@Boivin) 24 | 8
-> [269.130295] (7:node@Boivin) 40 | 8
-> [269.130295] (7:node@Boivin) Predecessor: 1
-> [272.405922] (3:node@iRMX) My finger table:
-> [272.405922] (3:node@iRMX) Start | Succ
-> [272.405922] (3:node@iRMX) 39 | 42
-> [272.405922] (3:node@iRMX) 40 | 42
-> [272.405922] (3:node@iRMX) 42 | 38
-> [272.405922] (3:node@iRMX) 46 | 38
-> [272.405922] (3:node@iRMX) 54 | 38
-> [272.405922] (3:node@iRMX) 6 | 38
-> [272.405922] (3:node@iRMX) Predecessor: -1
-> [284.571217] (5:node@TeX) My finger table:
-> [284.571217] (5:node@TeX) Start | Succ
-> [284.571217] (5:node@TeX) 22 | 38
-> [284.571217] (5:node@TeX) 23 | 38
-> [284.571217] (5:node@TeX) 25 | 21
-> [284.571217] (5:node@TeX) 29 | 21
-> [284.571217] (5:node@TeX) 37 | 21
-> [284.571217] (5:node@TeX) 53 | 21
-> [284.571217] (5:node@TeX) Predecessor: -1
-> [289.289472] (3:node@iRMX) My finger table:
-> [289.289472] (3:node@iRMX) Start | Succ
-> [289.289472] (3:node@iRMX) 39 | 42
-> [289.289472] (3:node@iRMX) 40 | 42
-> [289.289472] (3:node@iRMX) 42 | 38
-> [289.289472] (3:node@iRMX) 46 | 38
-> [289.289472] (3:node@iRMX) 54 | 38
-> [289.289472] (3:node@iRMX) 6 | 38
-> [289.289472] (3:node@iRMX) Predecessor: 21
-> [305.097152] (6:node@Jean_Yves) My finger table:
-> [305.097152] (6:node@Jean_Yves) Start | Succ
-> [305.097152] (6:node@Jean_Yves) 15 | 21
-> [305.097152] (6:node@Jean_Yves) 16 | 21
-> [305.097152] (6:node@Jean_Yves) 18 | 14
-> [305.097152] (6:node@Jean_Yves) 22 | 14
-> [305.097152] (6:node@Jean_Yves) 30 | 14
-> [305.097152] (6:node@Jean_Yves) 46 | 14
-> [305.097152] (6:node@Jean_Yves) Predecessor: -1
-> [313.745119] (3:node@iRMX) My finger table:
-> [313.745119] (3:node@iRMX) Start | Succ
-> [313.745119] (3:node@iRMX) 39 | 42
-> [313.745119] (3:node@iRMX) 40 | 42
-> [313.745119] (3:node@iRMX) 42 | 38
-> [313.745119] (3:node@iRMX) 46 | 38
-> [313.745119] (3:node@iRMX) 54 | 38
-> [313.745119] (3:node@iRMX) 6 | 38
-> [313.745119] (3:node@iRMX) Predecessor: 32
-> [338.952043] (5:node@TeX) My finger table:
-> [338.952043] (5:node@TeX) Start | Succ
-> [338.952043] (5:node@TeX) 22 | 32
-> [338.952043] (5:node@TeX) 23 | 38
-> [338.952043] (5:node@TeX) 25 | 21
-> [338.952043] (5:node@TeX) 29 | 21
-> [338.952043] (5:node@TeX) 37 | 21
-> [338.952043] (5:node@TeX) 53 | 21
-> [338.952043] (5:node@TeX) Predecessor: 14
-> [359.463171] (4:node@Geoff) My finger table:
-> [359.463171] (4:node@Geoff) Start | Succ
-> [359.463171] (4:node@Geoff) 33 | 38
-> [359.463171] (4:node@Geoff) 34 | 42
-> [359.463171] (4:node@Geoff) 36 | 32
-> [359.463171] (4:node@Geoff) 40 | 32
-> [359.463171] (4:node@Geoff) 48 | 32
-> [359.463171] (4:node@Geoff) 0 | 32
-> [359.463171] (4:node@Geoff) Predecessor: 21
-> [365.649541] (1:node@Gatien) My finger table:
-> [365.649541] (1:node@Gatien) Start | Succ
-> [365.649541] (1:node@Gatien) 49 | 1
-> [365.649541] (1:node@Gatien) 50 | 1
-> [365.649541] (1:node@Gatien) 52 | 1
-> [365.649541] (1:node@Gatien) 56 | 48
-> [365.649541] (1:node@Gatien) 0 | 48
-> [365.649541] (1:node@Gatien) 16 | 48
-> [365.649541] (1:node@Gatien) Predecessor: 42
-> [367.870562] (2:node@McGee) My finger table:
-> [367.870562] (2:node@McGee) Start | Succ
-> [367.870562] (2:node@McGee) 43 | 48
-> [367.870562] (2:node@McGee) 44 | 48
-> [367.870562] (2:node@McGee) 46 | 48
-> [367.870562] (2:node@McGee) 50 | 42
-> [367.870562] (2:node@McGee) 58 | 42
-> [367.870562] (2:node@McGee) 10 | 42
-> [367.870562] (2:node@McGee) Predecessor: 38
-> [371.550256] (7:node@Boivin) My finger table:
-> [371.550256] (7:node@Boivin) Start | Succ
-> [371.550256] (7:node@Boivin) 9 | 21
-> [371.550256] (7:node@Boivin) 10 | 38
-> [371.550256] (7:node@Boivin) 12 | 21
-> [371.550256] (7:node@Boivin) 16 | 8
-> [371.550256] (7:node@Boivin) 24 | 8
-> [371.550256] (7:node@Boivin) 40 | 8
-> [371.550256] (7:node@Boivin) Predecessor: 1
-> [388.564180] (4:node@Geoff) My finger table:
-> [388.564180] (4:node@Geoff) Start | Succ
-> [388.564180] (4:node@Geoff) 33 | 38
-> [388.564180] (4:node@Geoff) 34 | 42
-> [388.564180] (4:node@Geoff) 36 | 38
-> [388.564180] (4:node@Geoff) 40 | 32
-> [388.564180] (4:node@Geoff) 48 | 32
-> [388.564180] (4:node@Geoff) 0 | 32
-> [388.564180] (4:node@Geoff) Predecessor: 21
-> [389.021761] (8:node@Jacquelin) My finger table:
-> [389.021761] (8:node@Jacquelin) Start | Succ
-> [389.021761] (8:node@Jacquelin) 2 | 8
-> [389.021761] (8:node@Jacquelin) 3 | 8
-> [389.021761] (8:node@Jacquelin) 5 | 8
-> [389.021761] (8:node@Jacquelin) 9 | 1
-> [389.021761] (8:node@Jacquelin) 17 | 1
-> [389.021761] (8:node@Jacquelin) 33 | 1
-> [389.021761] (8:node@Jacquelin) Predecessor: 48
-> [393.088792] (3:node@iRMX) My finger table:
-> [393.088792] (3:node@iRMX) Start | Succ
-> [393.088792] (3:node@iRMX) 39 | 42
-> [393.088792] (3:node@iRMX) 40 | 42
-> [393.088792] (3:node@iRMX) 42 | 42
-> [393.088792] (3:node@iRMX) 46 | 38
-> [393.088792] (3:node@iRMX) 54 | 38
-> [393.088792] (3:node@iRMX) 6 | 38
-> [393.088792] (3:node@iRMX) Predecessor: 32
-> [412.961743] (5:node@TeX) My finger table:
-> [412.961743] (5:node@TeX) Start | Succ
-> [412.961743] (5:node@TeX) 22 | 32
-> [412.961743] (5:node@TeX) 23 | 38
-> [412.961743] (5:node@TeX) 25 | 32
-> [412.961743] (5:node@TeX) 29 | 21
-> [412.961743] (5:node@TeX) 37 | 21
-> [412.961743] (5:node@TeX) 53 | 21
-> [412.961743] (5:node@TeX) Predecessor: 14
-> [434.596538] (6:node@Jean_Yves) My finger table:
-> [434.596538] (6:node@Jean_Yves) Start | Succ
-> [434.596538] (6:node@Jean_Yves) 15 | 21
-> [434.596538] (6:node@Jean_Yves) 16 | 21
-> [434.596538] (6:node@Jean_Yves) 18 | 14
-> [434.596538] (6:node@Jean_Yves) 22 | 14
-> [434.596538] (6:node@Jean_Yves) 30 | 14
-> [434.596538] (6:node@Jean_Yves) 46 | 14
-> [434.596538] (6:node@Jean_Yves) Predecessor: 8
-> [443.806985] (6:node@Jean_Yves) My finger table:
-> [443.806985] (6:node@Jean_Yves) Start | Succ
-> [443.806985] (6:node@Jean_Yves) 15 | 21
-> [443.806985] (6:node@Jean_Yves) 16 | 21
-> [443.806985] (6:node@Jean_Yves) 18 | 21
-> [443.806985] (6:node@Jean_Yves) 22 | 14
-> [443.806985] (6:node@Jean_Yves) 30 | 14
-> [443.806985] (6:node@Jean_Yves) 46 | 14
-> [443.806985] (6:node@Jean_Yves) Predecessor: 8
-> [488.763655] (1:node@Gatien) My finger table:
-> [488.763655] (1:node@Gatien) Start | Succ
-> [488.763655] (1:node@Gatien) 49 | 1
-> [488.763655] (1:node@Gatien) 50 | 1
-> [488.763655] (1:node@Gatien) 52 | 1
-> [488.763655] (1:node@Gatien) 56 | 1
-> [488.763655] (1:node@Gatien) 0 | 48
-> [488.763655] (1:node@Gatien) 16 | 48
-> [488.763655] (1:node@Gatien) Predecessor: 42
-> [502.910503] (2:node@McGee) My finger table:
-> [502.910503] (2:node@McGee) Start | Succ
-> [502.910503] (2:node@McGee) 43 | 48
-> [502.910503] (2:node@McGee) 44 | 48
-> [502.910503] (2:node@McGee) 46 | 48
-> [502.910503] (2:node@McGee) 50 | 1
-> [502.910503] (2:node@McGee) 58 | 42
-> [502.910503] (2:node@McGee) 10 | 42
-> [502.910503] (2:node@McGee) Predecessor: 38
-> [511.133139] (8:node@Jacquelin) My finger table:
-> [511.133139] (8:node@Jacquelin) Start | Succ
-> [511.133139] (8:node@Jacquelin) 2 | 8
-> [511.133139] (8:node@Jacquelin) 3 | 8
-> [511.133139] (8:node@Jacquelin) 5 | 8
-> [511.133139] (8:node@Jacquelin) 9 | 14
-> [511.133139] (8:node@Jacquelin) 17 | 1
-> [511.133139] (8:node@Jacquelin) 33 | 1
-> [511.133139] (8:node@Jacquelin) Predecessor: 48
-> [528.169821] (7:node@Boivin) My finger table:
-> [528.169821] (7:node@Boivin) Start | Succ
-> [528.169821] (7:node@Boivin) 9 | 14
-> [528.169821] (7:node@Boivin) 10 | 38
-> [528.169821] (7:node@Boivin) 12 | 21
-> [528.169821] (7:node@Boivin) 16 | 21
-> [528.169821] (7:node@Boivin) 24 | 8
-> [528.169821] (7:node@Boivin) 40 | 8
-> [528.169821] (7:node@Boivin) Predecessor: 1
-> [538.778249] (3:node@iRMX) My finger table:
-> [538.778249] (3:node@iRMX) Start | Succ
-> [538.778249] (3:node@iRMX) 39 | 42
-> [538.778249] (3:node@iRMX) 40 | 42
-> [538.778249] (3:node@iRMX) 42 | 42
-> [538.778249] (3:node@iRMX) 46 | 48
-> [538.778249] (3:node@iRMX) 54 | 38
-> [538.778249] (3:node@iRMX) 6 | 38
-> [538.778249] (3:node@iRMX) Predecessor: 32
-> [561.853873] (5:node@TeX) My finger table:
-> [561.853873] (5:node@TeX) Start | Succ
-> [561.853873] (5:node@TeX) 22 | 32
-> [561.853873] (5:node@TeX) 23 | 38
-> [561.853873] (5:node@TeX) 25 | 32
-> [561.853873] (5:node@TeX) 29 | 32
-> [561.853873] (5:node@TeX) 37 | 21
-> [561.853873] (5:node@TeX) 53 | 21
-> [561.853873] (5:node@TeX) Predecessor: 14
-> [564.892208] (4:node@Geoff) My finger table:
-> [564.892208] (4:node@Geoff) Start | Succ
-> [564.892208] (4:node@Geoff) 33 | 38
-> [564.892208] (4:node@Geoff) 34 | 42
-> [564.892208] (4:node@Geoff) 36 | 38
-> [564.892208] (4:node@Geoff) 40 | 42
-> [564.892208] (4:node@Geoff) 48 | 32
-> [564.892208] (4:node@Geoff) 0 | 32
-> [564.892208] (4:node@Geoff) Predecessor: 21
-> [580.440544] (6:node@Jean_Yves) My finger table:
-> [580.440544] (6:node@Jean_Yves) Start | Succ
-> [580.440544] (6:node@Jean_Yves) 15 | 21
-> [580.440544] (6:node@Jean_Yves) 16 | 21
-> [580.440544] (6:node@Jean_Yves) 18 | 21
-> [580.440544] (6:node@Jean_Yves) 22 | 32
-> [580.440544] (6:node@Jean_Yves) 30 | 14
-> [580.440544] (6:node@Jean_Yves) 46 | 14
-> [580.440544] (6:node@Jean_Yves) Predecessor: 8
-> [805.312658] (0:@) Messages created: 789
-> [805.312658] (0:@) Simulated time: 805.313
+> [ 6.274348] (1:node@Gatien) My finger table:
+> [ 6.274348] (1:node@Gatien) Start | Succ
+> [ 6.274348] (1:node@Gatien) 49 | 1
+> [ 6.274348] (1:node@Gatien) 50 | 48
+> [ 6.274348] (1:node@Gatien) 52 | 48
+> [ 6.274348] (1:node@Gatien) 56 | 48
+> [ 6.274348] (1:node@Gatien) 0 | 48
+> [ 6.274348] (1:node@Gatien) 16 | 48
+> [ 6.274348] (1:node@Gatien) Predecessor: -1
+> [ 10.888156] (2:node@McGee) My finger table:
+> [ 10.888156] (2:node@McGee) Start | Succ
+> [ 10.888156] (2:node@McGee) 43 | 1
+> [ 10.888156] (2:node@McGee) 44 | 42
+> [ 10.888156] (2:node@McGee) 46 | 42
+> [ 10.888156] (2:node@McGee) 50 | 42
+> [ 10.888156] (2:node@McGee) 58 | 42
+> [ 10.888156] (2:node@McGee) 10 | 42
+> [ 10.888156] (2:node@McGee) Predecessor: -1
+> [ 18.043375] (3:node@iRMX) My finger table:
+> [ 18.043375] (3:node@iRMX) Start | Succ
+> [ 18.043375] (3:node@iRMX) 39 | 1
+> [ 18.043375] (3:node@iRMX) 40 | 38
+> [ 18.043375] (3:node@iRMX) 42 | 38
+> [ 18.043375] (3:node@iRMX) 46 | 38
+> [ 18.043375] (3:node@iRMX) 54 | 38
+> [ 18.043375] (3:node@iRMX) 6 | 38
+> [ 18.043375] (3:node@iRMX) Predecessor: -1
+> [ 20.004944] (4:node@Geoff) My finger table:
+> [ 20.004944] (4:node@Geoff) Start | Succ
+> [ 20.004944] (4:node@Geoff) 33 | 1
+> [ 20.004944] (4:node@Geoff) 34 | 32
+> [ 20.004944] (4:node@Geoff) 36 | 32
+> [ 20.004944] (4:node@Geoff) 40 | 32
+> [ 20.004944] (4:node@Geoff) 48 | 32
+> [ 20.004944] (4:node@Geoff) 0 | 32
+> [ 20.004944] (4:node@Geoff) Predecessor: -1
+> [ 26.812102] (5:node@TeX) My finger table:
+> [ 26.812102] (5:node@TeX) Start | Succ
+> [ 26.812102] (5:node@TeX) 22 | 1
+> [ 26.812102] (5:node@TeX) 23 | 21
+> [ 26.812102] (5:node@TeX) 25 | 21
+> [ 26.812102] (5:node@TeX) 29 | 21
+> [ 26.812102] (5:node@TeX) 37 | 21
+> [ 26.812102] (5:node@TeX) 53 | 21
+> [ 26.812102] (5:node@TeX) Predecessor: -1
+> [ 30.924531] (6:node@Jean_Yves) My finger table:
+> [ 30.924531] (6:node@Jean_Yves) Start | Succ
+> [ 30.924531] (6:node@Jean_Yves) 15 | 1
+> [ 30.924531] (6:node@Jean_Yves) 16 | 14
+> [ 30.924531] (6:node@Jean_Yves) 18 | 14
+> [ 30.924531] (6:node@Jean_Yves) 22 | 14
+> [ 30.924531] (6:node@Jean_Yves) 30 | 14
+> [ 30.924531] (6:node@Jean_Yves) 46 | 14
+> [ 30.924531] (6:node@Jean_Yves) Predecessor: -1
+> [ 36.048186] (7:node@Boivin) My finger table:
+> [ 36.048186] (7:node@Boivin) Start | Succ
+> [ 36.048186] (7:node@Boivin) 9 | 1
+> [ 36.048186] (7:node@Boivin) 10 | 8
+> [ 36.048186] (7:node@Boivin) 12 | 8
+> [ 36.048186] (7:node@Boivin) 16 | 8
+> [ 36.048186] (7:node@Boivin) 24 | 8
+> [ 36.048186] (7:node@Boivin) 40 | 8
+> [ 36.048186] (7:node@Boivin) Predecessor: -1
+> [ 74.998500] (8:node@Jacquelin) My finger table:
+> [ 74.998500] (8:node@Jacquelin) Start | Succ
+> [ 74.998500] (8:node@Jacquelin) 2 | 1
+> [ 74.998500] (8:node@Jacquelin) 3 | 1
+> [ 74.998500] (8:node@Jacquelin) 5 | 1
+> [ 74.998500] (8:node@Jacquelin) 9 | 1
+> [ 74.998500] (8:node@Jacquelin) 17 | 1
+> [ 74.998500] (8:node@Jacquelin) 33 | 1
+> [ 74.998500] (8:node@Jacquelin) Predecessor: 32
+> [ 75.886856] (8:node@Jacquelin) My finger table:
+> [ 75.886856] (8:node@Jacquelin) Start | Succ
+> [ 75.886856] (8:node@Jacquelin) 2 | 32
+> [ 75.886856] (8:node@Jacquelin) 3 | 1
+> [ 75.886856] (8:node@Jacquelin) 5 | 1
+> [ 75.886856] (8:node@Jacquelin) 9 | 1
+> [ 75.886856] (8:node@Jacquelin) 17 | 1
+> [ 75.886856] (8:node@Jacquelin) 33 | 1
+> [ 75.886856] (8:node@Jacquelin) Predecessor: 42
+> [ 77.161304] (8:node@Jacquelin) My finger table:
+> [ 77.161304] (8:node@Jacquelin) Start | Succ
+> [ 77.161304] (8:node@Jacquelin) 2 | 32
+> [ 77.161304] (8:node@Jacquelin) 3 | 1
+> [ 77.161304] (8:node@Jacquelin) 5 | 1
+> [ 77.161304] (8:node@Jacquelin) 9 | 1
+> [ 77.161304] (8:node@Jacquelin) 17 | 1
+> [ 77.161304] (8:node@Jacquelin) 33 | 1
+> [ 77.161304] (8:node@Jacquelin) Predecessor: 48
+> [102.428555] (4:node@Geoff) My finger table:
+> [102.428555] (4:node@Geoff) Start | Succ
+> [102.428555] (4:node@Geoff) 33 | 48
+> [102.428555] (4:node@Geoff) 34 | 32
+> [102.428555] (4:node@Geoff) 36 | 32
+> [102.428555] (4:node@Geoff) 40 | 32
+> [102.428555] (4:node@Geoff) 48 | 32
+> [102.428555] (4:node@Geoff) 0 | 32
+> [102.428555] (4:node@Geoff) Predecessor: 1
+> [128.446154] (1:node@Gatien) My finger table:
+> [128.446154] (1:node@Gatien) Start | Succ
+> [128.446154] (1:node@Gatien) 49 | 1
+> [128.446154] (1:node@Gatien) 50 | 48
+> [128.446154] (1:node@Gatien) 52 | 48
+> [128.446154] (1:node@Gatien) 56 | 48
+> [128.446154] (1:node@Gatien) 0 | 48
+> [128.446154] (1:node@Gatien) 16 | 48
+> [128.446154] (1:node@Gatien) Predecessor: 32
+> [138.445954] (1:node@Gatien) My finger table:
+> [138.445954] (1:node@Gatien) Start | Succ
+> [138.445954] (1:node@Gatien) 49 | 1
+> [138.445954] (1:node@Gatien) 50 | 48
+> [138.445954] (1:node@Gatien) 52 | 48
+> [138.445954] (1:node@Gatien) 56 | 48
+> [138.445954] (1:node@Gatien) 0 | 48
+> [138.445954] (1:node@Gatien) 16 | 48
+> [138.445954] (1:node@Gatien) Predecessor: 42
+> [211.728421] (2:node@McGee) My finger table:
+> [211.728421] (2:node@McGee) Start | Succ
+> [211.728421] (2:node@McGee) 43 | 48
+> [211.728421] (2:node@McGee) 44 | 42
+> [211.728421] (2:node@McGee) 46 | 42
+> [211.728421] (2:node@McGee) 50 | 42
+> [211.728421] (2:node@McGee) 58 | 42
+> [211.728421] (2:node@McGee) 10 | 42
+> [211.728421] (2:node@McGee) Predecessor: 38
+> [248.221993] (1:node@Gatien) My finger table:
+> [248.221993] (1:node@Gatien) Start | Succ
+> [248.221993] (1:node@Gatien) 49 | 1
+> [248.221993] (1:node@Gatien) 50 | 1
+> [248.221993] (1:node@Gatien) 52 | 48
+> [248.221993] (1:node@Gatien) 56 | 48
+> [248.221993] (1:node@Gatien) 0 | 48
+> [248.221993] (1:node@Gatien) 16 | 48
+> [248.221993] (1:node@Gatien) Predecessor: 42
+> [251.135518] (7:node@Boivin) My finger table:
+> [251.135518] (7:node@Boivin) Start | Succ
+> [251.135518] (7:node@Boivin) 9 | 38
+> [251.135518] (7:node@Boivin) 10 | 38
+> [251.135518] (7:node@Boivin) 12 | 8
+> [251.135518] (7:node@Boivin) 16 | 8
+> [251.135518] (7:node@Boivin) 24 | 8
+> [251.135518] (7:node@Boivin) 40 | 8
+> [251.135518] (7:node@Boivin) Predecessor: -1
+> [259.451693] (2:node@McGee) My finger table:
+> [259.451693] (2:node@McGee) Start | Succ
+> [259.451693] (2:node@McGee) 43 | 48
+> [259.451693] (2:node@McGee) 44 | 48
+> [259.451693] (2:node@McGee) 46 | 42
+> [259.451693] (2:node@McGee) 50 | 42
+> [259.451693] (2:node@McGee) 58 | 42
+> [259.451693] (2:node@McGee) 10 | 42
+> [259.451693] (2:node@McGee) Predecessor: 38
+> [309.452319] (4:node@Geoff) My finger table:
+> [309.452319] (4:node@Geoff) Start | Succ
+> [309.452319] (4:node@Geoff) 33 | 38
+> [309.452319] (4:node@Geoff) 34 | 38
+> [309.452319] (4:node@Geoff) 36 | 32
+> [309.452319] (4:node@Geoff) 40 | 32
+> [309.452319] (4:node@Geoff) 48 | 32
+> [309.452319] (4:node@Geoff) 0 | 32
+> [309.452319] (4:node@Geoff) Predecessor: 1
+> [309.457663] (8:node@Jacquelin) My finger table:
+> [309.457663] (8:node@Jacquelin) Start | Succ
+> [309.457663] (8:node@Jacquelin) 2 | 32
+> [309.457663] (8:node@Jacquelin) 3 | 32
+> [309.457663] (8:node@Jacquelin) 5 | 1
+> [309.457663] (8:node@Jacquelin) 9 | 1
+> [309.457663] (8:node@Jacquelin) 17 | 1
+> [309.457663] (8:node@Jacquelin) 33 | 1
+> [309.457663] (8:node@Jacquelin) Predecessor: 48
+> [323.904249] (6:node@Jean_Yves) My finger table:
+> [323.904249] (6:node@Jean_Yves) Start | Succ
+> [323.904249] (6:node@Jean_Yves) 15 | 38
+> [323.904249] (6:node@Jean_Yves) 16 | 38
+> [323.904249] (6:node@Jean_Yves) 18 | 14
+> [323.904249] (6:node@Jean_Yves) 22 | 14
+> [323.904249] (6:node@Jean_Yves) 30 | 14
+> [323.904249] (6:node@Jean_Yves) 46 | 14
+> [323.904249] (6:node@Jean_Yves) Predecessor: -1
+> [325.353251] (3:node@iRMX) My finger table:
+> [325.353251] (3:node@iRMX) Start | Succ
+> [325.353251] (3:node@iRMX) 39 | 42
+> [325.353251] (3:node@iRMX) 40 | 38
+> [325.353251] (3:node@iRMX) 42 | 38
+> [325.353251] (3:node@iRMX) 46 | 38
+> [325.353251] (3:node@iRMX) 54 | 38
+> [325.353251] (3:node@iRMX) 6 | 38
+> [325.353251] (3:node@iRMX) Predecessor: 32
+> [330.576799] (3:node@iRMX) My finger table:
+> [330.576799] (3:node@iRMX) Start | Succ
+> [330.576799] (3:node@iRMX) 39 | 42
+> [330.576799] (3:node@iRMX) 40 | 42
+> [330.576799] (3:node@iRMX) 42 | 38
+> [330.576799] (3:node@iRMX) 46 | 38
+> [330.576799] (3:node@iRMX) 54 | 38
+> [330.576799] (3:node@iRMX) 6 | 38
+> [330.576799] (3:node@iRMX) Predecessor: 32
+> [352.615320] (5:node@TeX) My finger table:
+> [352.615320] (5:node@TeX) Start | Succ
+> [352.615320] (5:node@TeX) 22 | 32
+> [352.615320] (5:node@TeX) 23 | 32
+> [352.615320] (5:node@TeX) 25 | 21
+> [352.615320] (5:node@TeX) 29 | 21
+> [352.615320] (5:node@TeX) 37 | 21
+> [352.615320] (5:node@TeX) 53 | 21
+> [352.615320] (5:node@TeX) Predecessor: -1
+> [369.575244] (1:node@Gatien) My finger table:
+> [369.575244] (1:node@Gatien) Start | Succ
+> [369.575244] (1:node@Gatien) 49 | 1
+> [369.575244] (1:node@Gatien) 50 | 1
+> [369.575244] (1:node@Gatien) 52 | 1
+> [369.575244] (1:node@Gatien) 56 | 48
+> [369.575244] (1:node@Gatien) 0 | 48
+> [369.575244] (1:node@Gatien) 16 | 48
+> [369.575244] (1:node@Gatien) Predecessor: 42
+> [382.882723] (2:node@McGee) My finger table:
+> [382.882723] (2:node@McGee) Start | Succ
+> [382.882723] (2:node@McGee) 43 | 48
+> [382.882723] (2:node@McGee) 44 | 48
+> [382.882723] (2:node@McGee) 46 | 48
+> [382.882723] (2:node@McGee) 50 | 42
+> [382.882723] (2:node@McGee) 58 | 42
+> [382.882723] (2:node@McGee) 10 | 42
+> [382.882723] (2:node@McGee) Predecessor: 38
+> [384.345510] (4:node@Geoff) My finger table:
+> [384.345510] (4:node@Geoff) Start | Succ
+> [384.345510] (4:node@Geoff) 33 | 38
+> [384.345510] (4:node@Geoff) 34 | 38
+> [384.345510] (4:node@Geoff) 36 | 32
+> [384.345510] (4:node@Geoff) 40 | 32
+> [384.345510] (4:node@Geoff) 48 | 32
+> [384.345510] (4:node@Geoff) 0 | 32
+> [384.345510] (4:node@Geoff) Predecessor: 21
+> [420.326446] (7:node@Boivin) My finger table:
+> [420.326446] (7:node@Boivin) Start | Succ
+> [420.326446] (7:node@Boivin) 9 | 21
+> [420.326446] (7:node@Boivin) 10 | 38
+> [420.326446] (7:node@Boivin) 12 | 21
+> [420.326446] (7:node@Boivin) 16 | 8
+> [420.326446] (7:node@Boivin) 24 | 8
+> [420.326446] (7:node@Boivin) 40 | 8
+> [420.326446] (7:node@Boivin) Predecessor: -1
+> [440.893903] (5:node@TeX) My finger table:
+> [440.893903] (5:node@TeX) Start | Succ
+> [440.893903] (5:node@TeX) 22 | 32
+> [440.893903] (5:node@TeX) 23 | 32
+> [440.893903] (5:node@TeX) 25 | 21
+> [440.893903] (5:node@TeX) 29 | 21
+> [440.893903] (5:node@TeX) 37 | 21
+> [440.893903] (5:node@TeX) 53 | 21
+> [440.893903] (5:node@TeX) Predecessor: 14
+> [479.759018] (3:node@iRMX) My finger table:
+> [479.759018] (3:node@iRMX) Start | Succ
+> [479.759018] (3:node@iRMX) 39 | 42
+> [479.759018] (3:node@iRMX) 40 | 42
+> [479.759018] (3:node@iRMX) 42 | 42
+> [479.759018] (3:node@iRMX) 46 | 38
+> [479.759018] (3:node@iRMX) 54 | 38
+> [479.759018] (3:node@iRMX) 6 | 38
+> [479.759018] (3:node@iRMX) Predecessor: 32
+> [482.033272] (4:node@Geoff) My finger table:
+> [482.033272] (4:node@Geoff) Start | Succ
+> [482.033272] (4:node@Geoff) 33 | 38
+> [482.033272] (4:node@Geoff) 34 | 38
+> [482.033272] (4:node@Geoff) 36 | 38
+> [482.033272] (4:node@Geoff) 40 | 32
+> [482.033272] (4:node@Geoff) 48 | 32
+> [482.033272] (4:node@Geoff) 0 | 32
+> [482.033272] (4:node@Geoff) Predecessor: 21
+> [490.659190] (1:node@Gatien) My finger table:
+> [490.659190] (1:node@Gatien) Start | Succ
+> [490.659190] (1:node@Gatien) 49 | 1
+> [490.659190] (1:node@Gatien) 50 | 1
+> [490.659190] (1:node@Gatien) 52 | 1
+> [490.659190] (1:node@Gatien) 56 | 1
+> [490.659190] (1:node@Gatien) 0 | 48
+> [490.659190] (1:node@Gatien) 16 | 48
+> [490.659190] (1:node@Gatien) Predecessor: 42
+> [498.176314] (3:node@iRMX) My finger table:
+> [498.176314] (3:node@iRMX) Start | Succ
+> [498.176314] (3:node@iRMX) 39 | 42
+> [498.176314] (3:node@iRMX) 40 | 42
+> [498.176314] (3:node@iRMX) 42 | 42
+> [498.176314] (3:node@iRMX) 46 | 38
+> [498.176314] (3:node@iRMX) 54 | 38
+> [498.176314] (3:node@iRMX) 6 | 38
+> [498.176314] (3:node@iRMX) Predecessor: 32
+> [498.611193] (6:node@Jean_Yves) My finger table:
+> [498.611193] (6:node@Jean_Yves) Start | Succ
+> [498.611193] (6:node@Jean_Yves) 15 | 21
+> [498.611193] (6:node@Jean_Yves) 16 | 38
+> [498.611193] (6:node@Jean_Yves) 18 | 21
+> [498.611193] (6:node@Jean_Yves) 22 | 14
+> [498.611193] (6:node@Jean_Yves) 30 | 14
+> [498.611193] (6:node@Jean_Yves) 46 | 14
+> [498.611193] (6:node@Jean_Yves) Predecessor: -1
+> [500.558742] (8:node@Jacquelin) My finger table:
+> [500.558742] (8:node@Jacquelin) Start | Succ
+> [500.558742] (8:node@Jacquelin) 2 | 14
+> [500.558742] (8:node@Jacquelin) 3 | 32
+> [500.558742] (8:node@Jacquelin) 5 | 14
+> [500.558742] (8:node@Jacquelin) 9 | 1
+> [500.558742] (8:node@Jacquelin) 17 | 1
+> [500.558742] (8:node@Jacquelin) 33 | 1
+> [500.558742] (8:node@Jacquelin) Predecessor: 48
+> [505.760908] (2:node@McGee) My finger table:
+> [505.760908] (2:node@McGee) Start | Succ
+> [505.760908] (2:node@McGee) 43 | 48
+> [505.760908] (2:node@McGee) 44 | 48
+> [505.760908] (2:node@McGee) 46 | 48
+> [505.760908] (2:node@McGee) 50 | 1
+> [505.760908] (2:node@McGee) 58 | 42
+> [505.760908] (2:node@McGee) 10 | 42
+> [505.760908] (2:node@McGee) Predecessor: 38
+> [509.829088] (5:node@TeX) My finger table:
+> [509.829088] (5:node@TeX) Start | Succ
+> [509.829088] (5:node@TeX) 22 | 32
+> [509.829088] (5:node@TeX) 23 | 32
+> [509.829088] (5:node@TeX) 25 | 32
+> [509.829088] (5:node@TeX) 29 | 21
+> [509.829088] (5:node@TeX) 37 | 21
+> [509.829088] (5:node@TeX) 53 | 21
+> [509.829088] (5:node@TeX) Predecessor: 14
+> [533.786389] (6:node@Jean_Yves) My finger table:
+> [533.786389] (6:node@Jean_Yves) Start | Succ
+> [533.786389] (6:node@Jean_Yves) 15 | 21
+> [533.786389] (6:node@Jean_Yves) 16 | 38
+> [533.786389] (6:node@Jean_Yves) 18 | 21
+> [533.786389] (6:node@Jean_Yves) 22 | 14
+> [533.786389] (6:node@Jean_Yves) 30 | 14
+> [533.786389] (6:node@Jean_Yves) 46 | 14
+> [533.786389] (6:node@Jean_Yves) Predecessor: 8
+> [549.075353] (7:node@Boivin) My finger table:
+> [549.075353] (7:node@Boivin) Start | Succ
+> [549.075353] (7:node@Boivin) 9 | 14
+> [549.075353] (7:node@Boivin) 10 | 38
+> [549.075353] (7:node@Boivin) 12 | 21
+> [549.075353] (7:node@Boivin) 16 | 21
+> [549.075353] (7:node@Boivin) 24 | 8
+> [549.075353] (7:node@Boivin) 40 | 8
+> [549.075353] (7:node@Boivin) Predecessor: -1
+> [753.389688] (0:@) Messages created: 605
+> [753.389688] (0:@) Simulated time: 753.39
! output sort
$ $SG_TEST_EXENV ${bindir:=.}/chord$EXEEXT ${srcdir:=.}/../../platforms/cluster.xml ${srcdir:=.}/chord10.xml --log=msg_chord.thres:verbose "--log=root.fmt:[%11.6r]%e(%i:%P@%h)%e%m%n" --cfg=network/model:Constant
> [ 5.000000] (8:node@c-7.me) 14199064 | 10004760
> [ 5.000000] (8:node@c-7.me) 1616152 | 10004760
> [ 5.000000] (8:node@c-7.me) Predecessor: -1
-> [ 6.000000] (2:node@c-1.me) My finger table:
-> [ 6.000000] (2:node@c-1.me) Start | Succ
-> [ 6.000000] (2:node@c-1.me) 366681 | 42
-> [ 6.000000] (2:node@c-1.me) 366682 | 366680
-> [ 6.000000] (2:node@c-1.me) 366684 | 366680
-> [ 6.000000] (2:node@c-1.me) 366688 | 366680
-> [ 6.000000] (2:node@c-1.me) 366696 | 366680
-> [ 6.000000] (2:node@c-1.me) 366712 | 366680
-> [ 6.000000] (2:node@c-1.me) 366744 | 366680
-> [ 6.000000] (2:node@c-1.me) 366808 | 366680
-> [ 6.000000] (2:node@c-1.me) 366936 | 366680
-> [ 6.000000] (2:node@c-1.me) 367192 | 366680
-> [ 6.000000] (2:node@c-1.me) 367704 | 366680
-> [ 6.000000] (2:node@c-1.me) 368728 | 366680
-> [ 6.000000] (2:node@c-1.me) 370776 | 366680
-> [ 6.000000] (2:node@c-1.me) 374872 | 366680
-> [ 6.000000] (2:node@c-1.me) 383064 | 366680
-> [ 6.000000] (2:node@c-1.me) 399448 | 366680
-> [ 6.000000] (2:node@c-1.me) 432216 | 366680
-> [ 6.000000] (2:node@c-1.me) 497752 | 366680
-> [ 6.000000] (2:node@c-1.me) 628824 | 366680
-> [ 6.000000] (2:node@c-1.me) 890968 | 366680
-> [ 6.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 6.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 6.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 6.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 6.000000] (2:node@c-1.me) Predecessor: -1
-> [ 8.000000] (7:node@c-6.me) My finger table:
-> [ 8.000000] (7:node@c-6.me) Start | Succ
-> [ 8.000000] (7:node@c-6.me) 16728097 | 1319738
-> [ 8.000000] (7:node@c-6.me) 16728098 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 8.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 8.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 8.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 8.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 8.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 8.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 8.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 8.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 8.000000] (7:node@c-6.me) Predecessor: -1
-> [ 9.000000] (10:node@c-9.me) My finger table:
-> [ 9.000000] (10:node@c-9.me) Start | Succ
-> [ 9.000000] (10:node@c-9.me) 2015254 | 1319738
-> [ 9.000000] (10:node@c-9.me) 2015255 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015257 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 9.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 9.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 9.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 9.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 9.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 9.000000] (10:node@c-9.me) Predecessor: -1
-> [ 11.000000] (4:node@c-3.me) My finger table:
-> [ 11.000000] (4:node@c-3.me) Start | Succ
-> [ 11.000000] (4:node@c-3.me) 1319739 | 42
-> [ 11.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 11.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 11.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 11.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 11.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 11.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 11.000000] (4:node@c-3.me) Predecessor: -1
-> [ 16.000000] (9:node@c-8.me) My finger table:
-> [ 16.000000] (9:node@c-8.me) Start | Succ
-> [ 16.000000] (9:node@c-8.me) 6518809 | 42
-> [ 16.000000] (9:node@c-8.me) 6518810 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 16.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 16.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 16.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 16.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 16.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 16.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 16.000000] (9:node@c-8.me) Predecessor: -1
-> [ 26.000000] (4:node@c-3.me) My finger table:
-> [ 26.000000] (4:node@c-3.me) Start | Succ
-> [ 26.000000] (4:node@c-3.me) 1319739 | 42
-> [ 26.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 26.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 26.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 26.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 26.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 26.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 26.000000] (4:node@c-3.me) Predecessor: 16728096
-> [ 31.000000] (2:node@c-1.me) My finger table:
-> [ 31.000000] (2:node@c-1.me) Start | Succ
-> [ 31.000000] (2:node@c-1.me) 366681 | 42
-> [ 31.000000] (2:node@c-1.me) 366682 | 366680
-> [ 31.000000] (2:node@c-1.me) 366684 | 366680
-> [ 31.000000] (2:node@c-1.me) 366688 | 366680
-> [ 31.000000] (2:node@c-1.me) 366696 | 366680
-> [ 31.000000] (2:node@c-1.me) 366712 | 366680
-> [ 31.000000] (2:node@c-1.me) 366744 | 366680
-> [ 31.000000] (2:node@c-1.me) 366808 | 366680
-> [ 31.000000] (2:node@c-1.me) 366936 | 366680
-> [ 31.000000] (2:node@c-1.me) 367192 | 366680
-> [ 31.000000] (2:node@c-1.me) 367704 | 366680
-> [ 31.000000] (2:node@c-1.me) 368728 | 366680
-> [ 31.000000] (2:node@c-1.me) 370776 | 366680
-> [ 31.000000] (2:node@c-1.me) 374872 | 366680
-> [ 31.000000] (2:node@c-1.me) 383064 | 366680
-> [ 31.000000] (2:node@c-1.me) 399448 | 366680
-> [ 31.000000] (2:node@c-1.me) 432216 | 366680
-> [ 31.000000] (2:node@c-1.me) 497752 | 366680
-> [ 31.000000] (2:node@c-1.me) 628824 | 366680
-> [ 31.000000] (2:node@c-1.me) 890968 | 366680
-> [ 31.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 31.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 31.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 31.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 31.000000] (2:node@c-1.me) Predecessor: 16509405
-> [ 32.000000] (5:node@c-4.me) My finger table:
-> [ 32.000000] (5:node@c-4.me) Start | Succ
-> [ 32.000000] (5:node@c-4.me) 16509406 | 366680
-> [ 32.000000] (5:node@c-4.me) 16509407 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509409 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509413 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 32.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 32.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 32.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 32.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 32.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 32.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 32.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 38.000000] (3:node@c-2.me) My finger table:
-> [ 38.000000] (3:node@c-2.me) Start | Succ
-> [ 38.000000] (3:node@c-2.me) 533745 | 16509405
-> [ 38.000000] (3:node@c-2.me) 533746 | 533744
-> [ 38.000000] (3:node@c-2.me) 533748 | 533744
-> [ 38.000000] (3:node@c-2.me) 533752 | 533744
-> [ 38.000000] (3:node@c-2.me) 533760 | 533744
-> [ 38.000000] (3:node@c-2.me) 533776 | 533744
-> [ 38.000000] (3:node@c-2.me) 533808 | 533744
-> [ 38.000000] (3:node@c-2.me) 533872 | 533744
-> [ 38.000000] (3:node@c-2.me) 534000 | 533744
-> [ 38.000000] (3:node@c-2.me) 534256 | 533744
-> [ 38.000000] (3:node@c-2.me) 534768 | 533744
-> [ 38.000000] (3:node@c-2.me) 535792 | 533744
-> [ 38.000000] (3:node@c-2.me) 537840 | 533744
-> [ 38.000000] (3:node@c-2.me) 541936 | 533744
-> [ 38.000000] (3:node@c-2.me) 550128 | 533744
-> [ 38.000000] (3:node@c-2.me) 566512 | 533744
-> [ 38.000000] (3:node@c-2.me) 599280 | 533744
-> [ 38.000000] (3:node@c-2.me) 664816 | 533744
-> [ 38.000000] (3:node@c-2.me) 795888 | 533744
-> [ 38.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 38.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 38.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 38.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 38.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 38.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 50.000000] (1:node@c-0.me) My finger table:
-> [ 50.000000] (1:node@c-0.me) Start | Succ
-> [ 50.000000] (1:node@c-0.me) 43 | 42
-> [ 50.000000] (1:node@c-0.me) 44 | 42
-> [ 50.000000] (1:node@c-0.me) 46 | 42
-> [ 50.000000] (1:node@c-0.me) 50 | 42
-> [ 50.000000] (1:node@c-0.me) 58 | 42
-> [ 50.000000] (1:node@c-0.me) 74 | 42
-> [ 50.000000] (1:node@c-0.me) 106 | 42
-> [ 50.000000] (1:node@c-0.me) 170 | 42
-> [ 50.000000] (1:node@c-0.me) 298 | 42
-> [ 50.000000] (1:node@c-0.me) 554 | 42
-> [ 50.000000] (1:node@c-0.me) 1066 | 42
-> [ 50.000000] (1:node@c-0.me) 2090 | 42
-> [ 50.000000] (1:node@c-0.me) 4138 | 42
-> [ 50.000000] (1:node@c-0.me) 8234 | 42
-> [ 50.000000] (1:node@c-0.me) 16426 | 42
-> [ 50.000000] (1:node@c-0.me) 32810 | 42
-> [ 50.000000] (1:node@c-0.me) 65578 | 42
-> [ 50.000000] (1:node@c-0.me) 131114 | 42
-> [ 50.000000] (1:node@c-0.me) 262186 | 42
-> [ 50.000000] (1:node@c-0.me) 524330 | 42
-> [ 50.000000] (1:node@c-0.me) 1048618 | 42
-> [ 50.000000] (1:node@c-0.me) 2097194 | 42
-> [ 50.000000] (1:node@c-0.me) 4194346 | 42
-> [ 50.000000] (1:node@c-0.me) 8388650 | 42
-> [ 50.000000] (1:node@c-0.me) Predecessor: 366680
-> [ 60.000000] (1:node@c-0.me) My finger table:
-> [ 60.000000] (1:node@c-0.me) Start | Succ
-> [ 60.000000] (1:node@c-0.me) 43 | 42
-> [ 60.000000] (1:node@c-0.me) 44 | 42
-> [ 60.000000] (1:node@c-0.me) 46 | 42
-> [ 60.000000] (1:node@c-0.me) 50 | 42
-> [ 60.000000] (1:node@c-0.me) 58 | 42
-> [ 60.000000] (1:node@c-0.me) 74 | 42
-> [ 60.000000] (1:node@c-0.me) 106 | 42
-> [ 60.000000] (1:node@c-0.me) 170 | 42
-> [ 60.000000] (1:node@c-0.me) 298 | 42
-> [ 60.000000] (1:node@c-0.me) 554 | 42
-> [ 60.000000] (1:node@c-0.me) 1066 | 42
-> [ 60.000000] (1:node@c-0.me) 2090 | 42
-> [ 60.000000] (1:node@c-0.me) 4138 | 42
-> [ 60.000000] (1:node@c-0.me) 8234 | 42
-> [ 60.000000] (1:node@c-0.me) 16426 | 42
-> [ 60.000000] (1:node@c-0.me) 32810 | 42
-> [ 60.000000] (1:node@c-0.me) 65578 | 42
-> [ 60.000000] (1:node@c-0.me) 131114 | 42
-> [ 60.000000] (1:node@c-0.me) 262186 | 42
-> [ 60.000000] (1:node@c-0.me) 524330 | 42
-> [ 60.000000] (1:node@c-0.me) 1048618 | 42
-> [ 60.000000] (1:node@c-0.me) 2097194 | 42
-> [ 60.000000] (1:node@c-0.me) 4194346 | 42
-> [ 60.000000] (1:node@c-0.me) 8388650 | 42
-> [ 60.000000] (1:node@c-0.me) Predecessor: 1319738
-> [ 70.000000] (1:node@c-0.me) My finger table:
-> [ 70.000000] (1:node@c-0.me) Start | Succ
-> [ 70.000000] (1:node@c-0.me) 43 | 1319738
-> [ 70.000000] (1:node@c-0.me) 44 | 42
-> [ 70.000000] (1:node@c-0.me) 46 | 42
-> [ 70.000000] (1:node@c-0.me) 50 | 42
-> [ 70.000000] (1:node@c-0.me) 58 | 42
-> [ 70.000000] (1:node@c-0.me) 74 | 42
-> [ 70.000000] (1:node@c-0.me) 106 | 42
-> [ 70.000000] (1:node@c-0.me) 170 | 42
-> [ 70.000000] (1:node@c-0.me) 298 | 42
-> [ 70.000000] (1:node@c-0.me) 554 | 42
-> [ 70.000000] (1:node@c-0.me) 1066 | 42
-> [ 70.000000] (1:node@c-0.me) 2090 | 42
-> [ 70.000000] (1:node@c-0.me) 4138 | 42
-> [ 70.000000] (1:node@c-0.me) 8234 | 42
-> [ 70.000000] (1:node@c-0.me) 16426 | 42
-> [ 70.000000] (1:node@c-0.me) 32810 | 42
-> [ 70.000000] (1:node@c-0.me) 65578 | 42
-> [ 70.000000] (1:node@c-0.me) 131114 | 42
-> [ 70.000000] (1:node@c-0.me) 262186 | 42
-> [ 70.000000] (1:node@c-0.me) 524330 | 42
-> [ 70.000000] (1:node@c-0.me) 1048618 | 42
-> [ 70.000000] (1:node@c-0.me) 2097194 | 42
-> [ 70.000000] (1:node@c-0.me) 4194346 | 42
-> [ 70.000000] (1:node@c-0.me) 8388650 | 42
-> [ 70.000000] (1:node@c-0.me) Predecessor: 6518808
-> [ 85.000000] (4:node@c-3.me) My finger table:
-> [ 85.000000] (4:node@c-3.me) Start | Succ
-> [ 85.000000] (4:node@c-3.me) 1319739 | 6518808
-> [ 85.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 85.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 85.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 85.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 85.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 85.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 85.000000] (4:node@c-3.me) Predecessor: 42
-> [ 86.000000] (8:node@c-7.me) My finger table:
-> [ 86.000000] (8:node@c-7.me) Start | Succ
-> [ 86.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 86.000000] (8:node@c-7.me) 10004762 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004764 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 86.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 86.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 86.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 86.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 86.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 86.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 90.000000] (7:node@c-6.me) My finger table:
-> [ 90.000000] (7:node@c-6.me) Start | Succ
-> [ 90.000000] (7:node@c-6.me) 16728097 | 1319738
-> [ 90.000000] (7:node@c-6.me) 16728098 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 90.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 90.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 90.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 90.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 90.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 90.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 90.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 90.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 90.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 109.000000] (9:node@c-8.me) My finger table:
-> [ 109.000000] (9:node@c-8.me) Start | Succ
-> [ 109.000000] (9:node@c-8.me) 6518809 | 42
-> [ 109.000000] (9:node@c-8.me) 6518810 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 109.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 109.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 109.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 109.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 109.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 109.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 109.000000] (9:node@c-8.me) Predecessor: 366680
-> [ 110.000000] (9:node@c-8.me) My finger table:
-> [ 110.000000] (9:node@c-8.me) Start | Succ
-> [ 110.000000] (9:node@c-8.me) 6518809 | 42
-> [ 110.000000] (9:node@c-8.me) 6518810 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 110.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 110.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 110.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 110.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 110.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 110.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 110.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 174.000000] (1:node@c-0.me) My finger table:
-> [ 174.000000] (1:node@c-0.me) Start | Succ
-> [ 174.000000] (1:node@c-0.me) 43 | 1319738
-> [ 174.000000] (1:node@c-0.me) 44 | 42
-> [ 174.000000] (1:node@c-0.me) 46 | 42
-> [ 174.000000] (1:node@c-0.me) 50 | 42
-> [ 174.000000] (1:node@c-0.me) 58 | 42
-> [ 174.000000] (1:node@c-0.me) 74 | 42
-> [ 174.000000] (1:node@c-0.me) 106 | 42
-> [ 174.000000] (1:node@c-0.me) 170 | 42
-> [ 174.000000] (1:node@c-0.me) 298 | 42
-> [ 174.000000] (1:node@c-0.me) 554 | 42
-> [ 174.000000] (1:node@c-0.me) 1066 | 42
-> [ 174.000000] (1:node@c-0.me) 2090 | 42
-> [ 174.000000] (1:node@c-0.me) 4138 | 42
-> [ 174.000000] (1:node@c-0.me) 8234 | 42
-> [ 174.000000] (1:node@c-0.me) 16426 | 42
-> [ 174.000000] (1:node@c-0.me) 32810 | 42
-> [ 174.000000] (1:node@c-0.me) 65578 | 42
-> [ 174.000000] (1:node@c-0.me) 131114 | 42
-> [ 174.000000] (1:node@c-0.me) 262186 | 42
-> [ 174.000000] (1:node@c-0.me) 524330 | 42
-> [ 174.000000] (1:node@c-0.me) 1048618 | 42
-> [ 174.000000] (1:node@c-0.me) 2097194 | 42
-> [ 174.000000] (1:node@c-0.me) 4194346 | 42
-> [ 174.000000] (1:node@c-0.me) 8388650 | 42
-> [ 174.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 245.000000] (8:node@c-7.me) My finger table:
-> [ 245.000000] (8:node@c-7.me) Start | Succ
-> [ 245.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 245.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 245.000000] (8:node@c-7.me) 10004764 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 245.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 245.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 245.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 245.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 245.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 245.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 246.000000] (3:node@c-2.me) My finger table:
-> [ 246.000000] (3:node@c-2.me) Start | Succ
-> [ 246.000000] (3:node@c-2.me) 533745 | 10004760
-> [ 246.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 246.000000] (3:node@c-2.me) 533748 | 533744
-> [ 246.000000] (3:node@c-2.me) 533752 | 533744
-> [ 246.000000] (3:node@c-2.me) 533760 | 533744
-> [ 246.000000] (3:node@c-2.me) 533776 | 533744
-> [ 246.000000] (3:node@c-2.me) 533808 | 533744
-> [ 246.000000] (3:node@c-2.me) 533872 | 533744
-> [ 246.000000] (3:node@c-2.me) 534000 | 533744
-> [ 246.000000] (3:node@c-2.me) 534256 | 533744
-> [ 246.000000] (3:node@c-2.me) 534768 | 533744
-> [ 246.000000] (3:node@c-2.me) 535792 | 533744
-> [ 246.000000] (3:node@c-2.me) 537840 | 533744
-> [ 246.000000] (3:node@c-2.me) 541936 | 533744
-> [ 246.000000] (3:node@c-2.me) 550128 | 533744
-> [ 246.000000] (3:node@c-2.me) 566512 | 533744
-> [ 246.000000] (3:node@c-2.me) 599280 | 533744
-> [ 246.000000] (3:node@c-2.me) 664816 | 533744
-> [ 246.000000] (3:node@c-2.me) 795888 | 533744
-> [ 246.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 246.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 246.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 246.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 246.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 246.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 246.000000] (5:node@c-4.me) My finger table:
-> [ 246.000000] (5:node@c-4.me) Start | Succ
-> [ 246.000000] (5:node@c-4.me) 16509406 | 366680
-> [ 246.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 246.000000] (5:node@c-4.me) 16509409 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509413 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 246.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 246.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 246.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 246.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 246.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 246.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 246.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 247.000000] (6:node@c-5.me) My finger table:
-> [ 247.000000] (6:node@c-5.me) Start | Succ
-> [ 247.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 247.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 247.000000] (6:node@c-5.me) 10874880 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874884 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874892 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 247.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 247.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 247.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 247.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 247.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 247.000000] (6:node@c-5.me) Predecessor: -1
-> [ 247.000000] (7:node@c-6.me) My finger table:
-> [ 247.000000] (7:node@c-6.me) Start | Succ
-> [ 247.000000] (7:node@c-6.me) 16728097 | 42
-> [ 247.000000] (7:node@c-6.me) 16728098 | 42
-> [ 247.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 247.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 247.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 247.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 247.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 247.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 247.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 247.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 247.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 247.000000] (7:node@c-6.me) Predecessor: 2015253
-> [ 253.000000] (1:node@c-0.me) My finger table:
-> [ 253.000000] (1:node@c-0.me) Start | Succ
-> [ 253.000000] (1:node@c-0.me) 43 | 1319738
-> [ 253.000000] (1:node@c-0.me) 44 | 1319738
-> [ 253.000000] (1:node@c-0.me) 46 | 42
-> [ 253.000000] (1:node@c-0.me) 50 | 42
-> [ 253.000000] (1:node@c-0.me) 58 | 42
-> [ 253.000000] (1:node@c-0.me) 74 | 42
-> [ 253.000000] (1:node@c-0.me) 106 | 42
-> [ 253.000000] (1:node@c-0.me) 170 | 42
-> [ 253.000000] (1:node@c-0.me) 298 | 42
-> [ 253.000000] (1:node@c-0.me) 554 | 42
-> [ 253.000000] (1:node@c-0.me) 1066 | 42
-> [ 253.000000] (1:node@c-0.me) 2090 | 42
-> [ 253.000000] (1:node@c-0.me) 4138 | 42
-> [ 253.000000] (1:node@c-0.me) 8234 | 42
-> [ 253.000000] (1:node@c-0.me) 16426 | 42
-> [ 253.000000] (1:node@c-0.me) 32810 | 42
-> [ 253.000000] (1:node@c-0.me) 65578 | 42
-> [ 253.000000] (1:node@c-0.me) 131114 | 42
-> [ 253.000000] (1:node@c-0.me) 262186 | 42
-> [ 253.000000] (1:node@c-0.me) 524330 | 42
-> [ 253.000000] (1:node@c-0.me) 1048618 | 42
-> [ 253.000000] (1:node@c-0.me) 2097194 | 42
-> [ 253.000000] (1:node@c-0.me) 4194346 | 42
-> [ 253.000000] (1:node@c-0.me) 8388650 | 42
-> [ 253.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 255.000000] (2:node@c-1.me) My finger table:
-> [ 255.000000] (2:node@c-1.me) Start | Succ
-> [ 255.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 255.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 255.000000] (2:node@c-1.me) 366684 | 366680
-> [ 255.000000] (2:node@c-1.me) 366688 | 366680
-> [ 255.000000] (2:node@c-1.me) 366696 | 366680
-> [ 255.000000] (2:node@c-1.me) 366712 | 366680
-> [ 255.000000] (2:node@c-1.me) 366744 | 366680
-> [ 255.000000] (2:node@c-1.me) 366808 | 366680
-> [ 255.000000] (2:node@c-1.me) 366936 | 366680
-> [ 255.000000] (2:node@c-1.me) 367192 | 366680
-> [ 255.000000] (2:node@c-1.me) 367704 | 366680
-> [ 255.000000] (2:node@c-1.me) 368728 | 366680
-> [ 255.000000] (2:node@c-1.me) 370776 | 366680
-> [ 255.000000] (2:node@c-1.me) 374872 | 366680
-> [ 255.000000] (2:node@c-1.me) 383064 | 366680
-> [ 255.000000] (2:node@c-1.me) 399448 | 366680
-> [ 255.000000] (2:node@c-1.me) 432216 | 366680
-> [ 255.000000] (2:node@c-1.me) 497752 | 366680
-> [ 255.000000] (2:node@c-1.me) 628824 | 366680
-> [ 255.000000] (2:node@c-1.me) 890968 | 366680
-> [ 255.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 255.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 255.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 255.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 255.000000] (2:node@c-1.me) Predecessor: 16509405
-> [ 260.000000] (4:node@c-3.me) My finger table:
-> [ 260.000000] (4:node@c-3.me) Start | Succ
-> [ 260.000000] (4:node@c-3.me) 1319739 | 6518808
-> [ 260.000000] (4:node@c-3.me) 1319740 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 260.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 260.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 260.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 260.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 260.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 260.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 292.000000] (7:node@c-6.me) My finger table:
-> [ 292.000000] (7:node@c-6.me) Start | Succ
-> [ 292.000000] (7:node@c-6.me) 16728097 | 42
-> [ 292.000000] (7:node@c-6.me) 16728098 | 42
-> [ 292.000000] (7:node@c-6.me) 16728100 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 292.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 292.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 292.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 292.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 292.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 292.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 292.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 292.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 292.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 300.000000] (9:node@c-8.me) My finger table:
-> [ 300.000000] (9:node@c-8.me) Start | Succ
-> [ 300.000000] (9:node@c-8.me) 6518809 | 16728096
-> [ 300.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 300.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 300.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 300.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 300.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 300.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 300.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 300.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 300.000000] (9:node@c-8.me) Predecessor: 1319738
-> [ 301.000000] (10:node@c-9.me) My finger table:
-> [ 301.000000] (10:node@c-9.me) Start | Succ
-> [ 301.000000] (10:node@c-9.me) 2015254 | 16728096
-> [ 301.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 301.000000] (10:node@c-9.me) 2015257 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 301.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 301.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 301.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 301.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 301.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 301.000000] (10:node@c-9.me) Predecessor: -1
-> [ 302.000000] (2:node@c-1.me) My finger table:
-> [ 302.000000] (2:node@c-1.me) Start | Succ
-> [ 302.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 302.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 302.000000] (2:node@c-1.me) 366684 | 366680
-> [ 302.000000] (2:node@c-1.me) 366688 | 366680
-> [ 302.000000] (2:node@c-1.me) 366696 | 366680
-> [ 302.000000] (2:node@c-1.me) 366712 | 366680
-> [ 302.000000] (2:node@c-1.me) 366744 | 366680
-> [ 302.000000] (2:node@c-1.me) 366808 | 366680
-> [ 302.000000] (2:node@c-1.me) 366936 | 366680
-> [ 302.000000] (2:node@c-1.me) 367192 | 366680
-> [ 302.000000] (2:node@c-1.me) 367704 | 366680
-> [ 302.000000] (2:node@c-1.me) 368728 | 366680
-> [ 302.000000] (2:node@c-1.me) 370776 | 366680
-> [ 302.000000] (2:node@c-1.me) 374872 | 366680
-> [ 302.000000] (2:node@c-1.me) 383064 | 366680
-> [ 302.000000] (2:node@c-1.me) 399448 | 366680
-> [ 302.000000] (2:node@c-1.me) 432216 | 366680
-> [ 302.000000] (2:node@c-1.me) 497752 | 366680
-> [ 302.000000] (2:node@c-1.me) 628824 | 366680
-> [ 302.000000] (2:node@c-1.me) 890968 | 366680
-> [ 302.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 302.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 302.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 302.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 302.000000] (2:node@c-1.me) Predecessor: 42
-> [ 306.000000] (4:node@c-3.me) My finger table:
-> [ 306.000000] (4:node@c-3.me) Start | Succ
-> [ 306.000000] (4:node@c-3.me) 1319739 | 6518808
-> [ 306.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 306.000000] (4:node@c-3.me) 1319742 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 306.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 306.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 306.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 306.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 306.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 306.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 339.000000] (9:node@c-8.me) My finger table:
-> [ 339.000000] (9:node@c-8.me) Start | Succ
-> [ 339.000000] (9:node@c-8.me) 6518809 | 16728096
-> [ 339.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 339.000000] (9:node@c-8.me) 6518812 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 339.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 339.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 339.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 339.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 339.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 339.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 339.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 367.000000] (6:node@c-5.me) My finger table:
-> [ 367.000000] (6:node@c-5.me) Start | Succ
-> [ 367.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 367.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 367.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 367.000000] (6:node@c-5.me) 10874884 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10874892 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 367.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 367.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 367.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 367.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 367.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 367.000000] (6:node@c-5.me) Predecessor: -1
-> [ 368.000000] (3:node@c-2.me) My finger table:
-> [ 368.000000] (3:node@c-2.me) Start | Succ
-> [ 368.000000] (3:node@c-2.me) 533745 | 10004760
-> [ 368.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 368.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 368.000000] (3:node@c-2.me) 533752 | 533744
-> [ 368.000000] (3:node@c-2.me) 533760 | 533744
-> [ 368.000000] (3:node@c-2.me) 533776 | 533744
-> [ 368.000000] (3:node@c-2.me) 533808 | 533744
-> [ 368.000000] (3:node@c-2.me) 533872 | 533744
-> [ 368.000000] (3:node@c-2.me) 534000 | 533744
-> [ 368.000000] (3:node@c-2.me) 534256 | 533744
-> [ 368.000000] (3:node@c-2.me) 534768 | 533744
-> [ 368.000000] (3:node@c-2.me) 535792 | 533744
-> [ 368.000000] (3:node@c-2.me) 537840 | 533744
-> [ 368.000000] (3:node@c-2.me) 541936 | 533744
-> [ 368.000000] (3:node@c-2.me) 550128 | 533744
-> [ 368.000000] (3:node@c-2.me) 566512 | 533744
-> [ 368.000000] (3:node@c-2.me) 599280 | 533744
-> [ 368.000000] (3:node@c-2.me) 664816 | 533744
-> [ 368.000000] (3:node@c-2.me) 795888 | 533744
-> [ 368.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 368.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 368.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 368.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 368.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 368.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 368.000000] (5:node@c-4.me) My finger table:
-> [ 368.000000] (5:node@c-4.me) Start | Succ
-> [ 368.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 368.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 368.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 368.000000] (5:node@c-4.me) 16509413 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 368.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 368.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 368.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 368.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 368.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 368.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 368.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 370.000000] (8:node@c-7.me) My finger table:
-> [ 370.000000] (8:node@c-7.me) Start | Succ
-> [ 370.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 370.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 370.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 370.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 370.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 370.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 370.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 370.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 370.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 370.000000] (8:node@c-7.me) Predecessor: 533744
-> [ 373.000000] (7:node@c-6.me) My finger table:
-> [ 373.000000] (7:node@c-6.me) Start | Succ
-> [ 373.000000] (7:node@c-6.me) 16728097 | 42
-> [ 373.000000] (7:node@c-6.me) 16728098 | 42
-> [ 373.000000] (7:node@c-6.me) 16728100 | 42
-> [ 373.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 373.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 373.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 373.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 373.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 373.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 373.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 373.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 373.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 373.000000] (7:node@c-6.me) Predecessor: 6518808
-> [ 375.000000] (2:node@c-1.me) My finger table:
-> [ 375.000000] (2:node@c-1.me) Start | Succ
-> [ 375.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 375.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 375.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 375.000000] (2:node@c-1.me) 366688 | 366680
-> [ 375.000000] (2:node@c-1.me) 366696 | 366680
-> [ 375.000000] (2:node@c-1.me) 366712 | 366680
-> [ 375.000000] (2:node@c-1.me) 366744 | 366680
-> [ 375.000000] (2:node@c-1.me) 366808 | 366680
-> [ 375.000000] (2:node@c-1.me) 366936 | 366680
-> [ 375.000000] (2:node@c-1.me) 367192 | 366680
-> [ 375.000000] (2:node@c-1.me) 367704 | 366680
-> [ 375.000000] (2:node@c-1.me) 368728 | 366680
-> [ 375.000000] (2:node@c-1.me) 370776 | 366680
-> [ 375.000000] (2:node@c-1.me) 374872 | 366680
-> [ 375.000000] (2:node@c-1.me) 383064 | 366680
-> [ 375.000000] (2:node@c-1.me) 399448 | 366680
-> [ 375.000000] (2:node@c-1.me) 432216 | 366680
-> [ 375.000000] (2:node@c-1.me) 497752 | 366680
-> [ 375.000000] (2:node@c-1.me) 628824 | 366680
-> [ 375.000000] (2:node@c-1.me) 890968 | 366680
-> [ 375.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 375.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 375.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 375.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 375.000000] (2:node@c-1.me) Predecessor: 42
-> [ 382.000000] (1:node@c-0.me) My finger table:
-> [ 382.000000] (1:node@c-0.me) Start | Succ
-> [ 382.000000] (1:node@c-0.me) 43 | 366680
-> [ 382.000000] (1:node@c-0.me) 44 | 1319738
-> [ 382.000000] (1:node@c-0.me) 46 | 366680
-> [ 382.000000] (1:node@c-0.me) 50 | 42
-> [ 382.000000] (1:node@c-0.me) 58 | 42
-> [ 382.000000] (1:node@c-0.me) 74 | 42
-> [ 382.000000] (1:node@c-0.me) 106 | 42
-> [ 382.000000] (1:node@c-0.me) 170 | 42
-> [ 382.000000] (1:node@c-0.me) 298 | 42
-> [ 382.000000] (1:node@c-0.me) 554 | 42
-> [ 382.000000] (1:node@c-0.me) 1066 | 42
-> [ 382.000000] (1:node@c-0.me) 2090 | 42
-> [ 382.000000] (1:node@c-0.me) 4138 | 42
-> [ 382.000000] (1:node@c-0.me) 8234 | 42
-> [ 382.000000] (1:node@c-0.me) 16426 | 42
-> [ 382.000000] (1:node@c-0.me) 32810 | 42
-> [ 382.000000] (1:node@c-0.me) 65578 | 42
-> [ 382.000000] (1:node@c-0.me) 131114 | 42
-> [ 382.000000] (1:node@c-0.me) 262186 | 42
-> [ 382.000000] (1:node@c-0.me) 524330 | 42
-> [ 382.000000] (1:node@c-0.me) 1048618 | 42
-> [ 382.000000] (1:node@c-0.me) 2097194 | 42
-> [ 382.000000] (1:node@c-0.me) 4194346 | 42
-> [ 382.000000] (1:node@c-0.me) 8388650 | 42
-> [ 382.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 383.000000] (7:node@c-6.me) My finger table:
-> [ 383.000000] (7:node@c-6.me) Start | Succ
-> [ 383.000000] (7:node@c-6.me) 16728097 | 42
-> [ 383.000000] (7:node@c-6.me) 16728098 | 42
-> [ 383.000000] (7:node@c-6.me) 16728100 | 42
-> [ 383.000000] (7:node@c-6.me) 16728104 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 383.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 383.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 383.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 383.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 383.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 383.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 383.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 383.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 383.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 385.000000] (10:node@c-9.me) My finger table:
-> [ 385.000000] (10:node@c-9.me) Start | Succ
-> [ 385.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 385.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 385.000000] (10:node@c-9.me) 2015257 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 385.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 385.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 385.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 385.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 385.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 385.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 427.000000] (9:node@c-8.me) My finger table:
-> [ 427.000000] (9:node@c-8.me) Start | Succ
-> [ 427.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 427.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 427.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 427.000000] (9:node@c-8.me) 6518816 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 427.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 427.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 427.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 427.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 427.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 427.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 427.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 432.000000] (10:node@c-9.me) My finger table:
-> [ 432.000000] (10:node@c-9.me) Start | Succ
-> [ 432.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 432.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 432.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 432.000000] (10:node@c-9.me) 2015261 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 432.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 432.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 432.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 432.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 432.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 432.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 484.000000] (4:node@c-3.me) My finger table:
-> [ 484.000000] (4:node@c-3.me) Start | Succ
-> [ 484.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 484.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 484.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 484.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 484.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 484.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 484.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 484.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 484.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 484.000000] (4:node@c-3.me) Predecessor: 366680
-> [ 487.000000] (6:node@c-5.me) My finger table:
-> [ 487.000000] (6:node@c-5.me) Start | Succ
-> [ 487.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 487.000000] (6:node@c-5.me) 10874892 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 487.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 487.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 487.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 487.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 487.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 487.000000] (6:node@c-5.me) Predecessor: -1
-> [ 490.000000] (8:node@c-7.me) My finger table:
-> [ 490.000000] (8:node@c-7.me) Start | Succ
-> [ 490.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 490.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 490.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 490.000000] (8:node@c-7.me) 10004768 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 490.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 490.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 490.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 490.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 490.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 490.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 491.000000] (8:node@c-7.me) My finger table:
-> [ 491.000000] (8:node@c-7.me) Start | Succ
-> [ 491.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 491.000000] (8:node@c-7.me) 10004776 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 491.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 491.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 491.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 491.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 491.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 491.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 496.000000] (7:node@c-6.me) My finger table:
-> [ 496.000000] (7:node@c-6.me) Start | Succ
-> [ 496.000000] (7:node@c-6.me) 16728097 | 42
-> [ 496.000000] (7:node@c-6.me) 16728098 | 42
-> [ 496.000000] (7:node@c-6.me) 16728100 | 42
-> [ 496.000000] (7:node@c-6.me) 16728104 | 42
-> [ 496.000000] (7:node@c-6.me) 16728112 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 496.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 496.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 496.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 496.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 496.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 496.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 496.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 496.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 496.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 497.000000] (3:node@c-2.me) My finger table:
-> [ 497.000000] (3:node@c-2.me) Start | Succ
-> [ 497.000000] (3:node@c-2.me) 533745 | 6518808
-> [ 497.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 497.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 497.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 497.000000] (3:node@c-2.me) 533760 | 533744
-> [ 497.000000] (3:node@c-2.me) 533776 | 533744
-> [ 497.000000] (3:node@c-2.me) 533808 | 533744
-> [ 497.000000] (3:node@c-2.me) 533872 | 533744
-> [ 497.000000] (3:node@c-2.me) 534000 | 533744
-> [ 497.000000] (3:node@c-2.me) 534256 | 533744
-> [ 497.000000] (3:node@c-2.me) 534768 | 533744
-> [ 497.000000] (3:node@c-2.me) 535792 | 533744
-> [ 497.000000] (3:node@c-2.me) 537840 | 533744
-> [ 497.000000] (3:node@c-2.me) 541936 | 533744
-> [ 497.000000] (3:node@c-2.me) 550128 | 533744
-> [ 497.000000] (3:node@c-2.me) 566512 | 533744
-> [ 497.000000] (3:node@c-2.me) 599280 | 533744
-> [ 497.000000] (3:node@c-2.me) 664816 | 533744
-> [ 497.000000] (3:node@c-2.me) 795888 | 533744
-> [ 497.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 497.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 497.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 497.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 497.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 497.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 502.000000] (1:node@c-0.me) My finger table:
-> [ 502.000000] (1:node@c-0.me) Start | Succ
-> [ 502.000000] (1:node@c-0.me) 43 | 366680
-> [ 502.000000] (1:node@c-0.me) 44 | 1319738
-> [ 502.000000] (1:node@c-0.me) 46 | 366680
-> [ 502.000000] (1:node@c-0.me) 50 | 366680
-> [ 502.000000] (1:node@c-0.me) 58 | 42
-> [ 502.000000] (1:node@c-0.me) 74 | 42
-> [ 502.000000] (1:node@c-0.me) 106 | 42
-> [ 502.000000] (1:node@c-0.me) 170 | 42
-> [ 502.000000] (1:node@c-0.me) 298 | 42
-> [ 502.000000] (1:node@c-0.me) 554 | 42
-> [ 502.000000] (1:node@c-0.me) 1066 | 42
-> [ 502.000000] (1:node@c-0.me) 2090 | 42
-> [ 502.000000] (1:node@c-0.me) 4138 | 42
-> [ 502.000000] (1:node@c-0.me) 8234 | 42
-> [ 502.000000] (1:node@c-0.me) 16426 | 42
-> [ 502.000000] (1:node@c-0.me) 32810 | 42
-> [ 502.000000] (1:node@c-0.me) 65578 | 42
-> [ 502.000000] (1:node@c-0.me) 131114 | 42
-> [ 502.000000] (1:node@c-0.me) 262186 | 42
-> [ 502.000000] (1:node@c-0.me) 524330 | 42
-> [ 502.000000] (1:node@c-0.me) 1048618 | 42
-> [ 502.000000] (1:node@c-0.me) 2097194 | 42
-> [ 502.000000] (1:node@c-0.me) 4194346 | 42
-> [ 502.000000] (1:node@c-0.me) 8388650 | 42
-> [ 502.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 505.000000] (2:node@c-1.me) My finger table:
-> [ 505.000000] (2:node@c-1.me) Start | Succ
-> [ 505.000000] (2:node@c-1.me) 366681 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 505.000000] (2:node@c-1.me) 366696 | 366680
-> [ 505.000000] (2:node@c-1.me) 366712 | 366680
-> [ 505.000000] (2:node@c-1.me) 366744 | 366680
-> [ 505.000000] (2:node@c-1.me) 366808 | 366680
-> [ 505.000000] (2:node@c-1.me) 366936 | 366680
-> [ 505.000000] (2:node@c-1.me) 367192 | 366680
-> [ 505.000000] (2:node@c-1.me) 367704 | 366680
-> [ 505.000000] (2:node@c-1.me) 368728 | 366680
-> [ 505.000000] (2:node@c-1.me) 370776 | 366680
-> [ 505.000000] (2:node@c-1.me) 374872 | 366680
-> [ 505.000000] (2:node@c-1.me) 383064 | 366680
-> [ 505.000000] (2:node@c-1.me) 399448 | 366680
-> [ 505.000000] (2:node@c-1.me) 432216 | 366680
-> [ 505.000000] (2:node@c-1.me) 497752 | 366680
-> [ 505.000000] (2:node@c-1.me) 628824 | 366680
-> [ 505.000000] (2:node@c-1.me) 890968 | 366680
-> [ 505.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 505.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 505.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 505.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 505.000000] (2:node@c-1.me) Predecessor: 42
-> [ 513.000000] (5:node@c-4.me) My finger table:
-> [ 513.000000] (5:node@c-4.me) Start | Succ
-> [ 513.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 513.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 513.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 513.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 513.000000] (5:node@c-4.me) 16509421 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 513.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 513.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 513.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 513.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 513.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 513.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 513.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 558.000000] (9:node@c-8.me) My finger table:
-> [ 558.000000] (9:node@c-8.me) Start | Succ
-> [ 558.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 558.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 558.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 558.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 558.000000] (9:node@c-8.me) 6518824 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 558.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 558.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 558.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 558.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 558.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 558.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 558.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 573.000000] (10:node@c-9.me) My finger table:
-> [ 573.000000] (10:node@c-9.me) Start | Succ
-> [ 573.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 573.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 573.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 573.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 573.000000] (10:node@c-9.me) 2015269 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 573.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 573.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 573.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 573.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 573.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 573.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 600.000000] (4:node@c-3.me) My finger table:
-> [ 600.000000] (4:node@c-3.me) Start | Succ
-> [ 600.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 600.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 600.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 600.000000] (4:node@c-3.me) 1319746 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 600.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 600.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 600.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 600.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 600.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 600.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 610.000000] (6:node@c-5.me) My finger table:
-> [ 610.000000] (6:node@c-5.me) Start | Succ
-> [ 610.000000] (6:node@c-5.me) 10874877 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 610.000000] (6:node@c-5.me) 10874908 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 610.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 610.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 610.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 610.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 610.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 610.000000] (6:node@c-5.me) Predecessor: -1
-> [ 656.000000] (5:node@c-4.me) My finger table:
-> [ 656.000000] (5:node@c-4.me) Start | Succ
-> [ 656.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 656.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 656.000000] (5:node@c-4.me) 16509437 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 656.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 656.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 656.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 656.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 656.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 656.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 656.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 657.000000] (7:node@c-6.me) My finger table:
-> [ 657.000000] (7:node@c-6.me) Start | Succ
-> [ 657.000000] (7:node@c-6.me) 16728097 | 42
-> [ 657.000000] (7:node@c-6.me) 16728098 | 42
-> [ 657.000000] (7:node@c-6.me) 16728100 | 42
-> [ 657.000000] (7:node@c-6.me) 16728104 | 42
-> [ 657.000000] (7:node@c-6.me) 16728112 | 42
-> [ 657.000000] (7:node@c-6.me) 16728128 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 657.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 657.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 657.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 657.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 657.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 657.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 657.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 657.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 657.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 663.000000] (4:node@c-3.me) My finger table:
-> [ 663.000000] (4:node@c-3.me) Start | Succ
-> [ 663.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 663.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 663.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 663.000000] (4:node@c-3.me) 1319746 | 2015253
-> [ 663.000000] (4:node@c-3.me) 1319754 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 663.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 663.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 663.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 663.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 663.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 663.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 665.000000] (1:node@c-0.me) My finger table:
-> [ 665.000000] (1:node@c-0.me) Start | Succ
-> [ 665.000000] (1:node@c-0.me) 43 | 366680
-> [ 665.000000] (1:node@c-0.me) 44 | 1319738
-> [ 665.000000] (1:node@c-0.me) 46 | 366680
-> [ 665.000000] (1:node@c-0.me) 50 | 366680
-> [ 665.000000] (1:node@c-0.me) 58 | 366680
-> [ 665.000000] (1:node@c-0.me) 74 | 42
-> [ 665.000000] (1:node@c-0.me) 106 | 42
-> [ 665.000000] (1:node@c-0.me) 170 | 42
-> [ 665.000000] (1:node@c-0.me) 298 | 42
-> [ 665.000000] (1:node@c-0.me) 554 | 42
-> [ 665.000000] (1:node@c-0.me) 1066 | 42
-> [ 665.000000] (1:node@c-0.me) 2090 | 42
-> [ 665.000000] (1:node@c-0.me) 4138 | 42
-> [ 665.000000] (1:node@c-0.me) 8234 | 42
-> [ 665.000000] (1:node@c-0.me) 16426 | 42
-> [ 665.000000] (1:node@c-0.me) 32810 | 42
-> [ 665.000000] (1:node@c-0.me) 65578 | 42
-> [ 665.000000] (1:node@c-0.me) 131114 | 42
-> [ 665.000000] (1:node@c-0.me) 262186 | 42
-> [ 665.000000] (1:node@c-0.me) 524330 | 42
-> [ 665.000000] (1:node@c-0.me) 1048618 | 42
-> [ 665.000000] (1:node@c-0.me) 2097194 | 42
-> [ 665.000000] (1:node@c-0.me) 4194346 | 42
-> [ 665.000000] (1:node@c-0.me) 8388650 | 42
-> [ 665.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 669.000000] (8:node@c-7.me) My finger table:
-> [ 669.000000] (8:node@c-7.me) Start | Succ
-> [ 669.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004776 | 16509405
-> [ 669.000000] (8:node@c-7.me) 10004792 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 669.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 669.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 669.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 669.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 669.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 669.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 671.000000] (3:node@c-2.me) My finger table:
-> [ 671.000000] (3:node@c-2.me) Start | Succ
-> [ 671.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 671.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 671.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 671.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 671.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 671.000000] (3:node@c-2.me) 533776 | 533744
-> [ 671.000000] (3:node@c-2.me) 533808 | 533744
-> [ 671.000000] (3:node@c-2.me) 533872 | 533744
-> [ 671.000000] (3:node@c-2.me) 534000 | 533744
-> [ 671.000000] (3:node@c-2.me) 534256 | 533744
-> [ 671.000000] (3:node@c-2.me) 534768 | 533744
-> [ 671.000000] (3:node@c-2.me) 535792 | 533744
-> [ 671.000000] (3:node@c-2.me) 537840 | 533744
-> [ 671.000000] (3:node@c-2.me) 541936 | 533744
-> [ 671.000000] (3:node@c-2.me) 550128 | 533744
-> [ 671.000000] (3:node@c-2.me) 566512 | 533744
-> [ 671.000000] (3:node@c-2.me) 599280 | 533744
-> [ 671.000000] (3:node@c-2.me) 664816 | 533744
-> [ 671.000000] (3:node@c-2.me) 795888 | 533744
-> [ 671.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 671.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 671.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 671.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 671.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 671.000000] (3:node@c-2.me) Predecessor: 10874876
-> [ 678.000000] (9:node@c-8.me) My finger table:
-> [ 678.000000] (9:node@c-8.me) Start | Succ
-> [ 678.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 678.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518824 | 10004760
-> [ 678.000000] (9:node@c-8.me) 6518840 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 678.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 678.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 678.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 678.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 678.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 678.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 678.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 683.000000] (2:node@c-1.me) My finger table:
-> [ 683.000000] (2:node@c-1.me) Start | Succ
-> [ 683.000000] (2:node@c-1.me) 366681 | 533744
-> [ 683.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 683.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 683.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 683.000000] (2:node@c-1.me) 366696 | 533744
-> [ 683.000000] (2:node@c-1.me) 366712 | 366680
-> [ 683.000000] (2:node@c-1.me) 366744 | 366680
-> [ 683.000000] (2:node@c-1.me) 366808 | 366680
-> [ 683.000000] (2:node@c-1.me) 366936 | 366680
-> [ 683.000000] (2:node@c-1.me) 367192 | 366680
-> [ 683.000000] (2:node@c-1.me) 367704 | 366680
-> [ 683.000000] (2:node@c-1.me) 368728 | 366680
-> [ 683.000000] (2:node@c-1.me) 370776 | 366680
-> [ 683.000000] (2:node@c-1.me) 374872 | 366680
-> [ 683.000000] (2:node@c-1.me) 383064 | 366680
-> [ 683.000000] (2:node@c-1.me) 399448 | 366680
-> [ 683.000000] (2:node@c-1.me) 432216 | 366680
-> [ 683.000000] (2:node@c-1.me) 497752 | 366680
-> [ 683.000000] (2:node@c-1.me) 628824 | 366680
-> [ 683.000000] (2:node@c-1.me) 890968 | 366680
-> [ 683.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 683.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 683.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 683.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 683.000000] (2:node@c-1.me) Predecessor: 42
-> [ 684.000000] (3:node@c-2.me) My finger table:
-> [ 684.000000] (3:node@c-2.me) Start | Succ
-> [ 684.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 684.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 684.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 684.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 684.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 684.000000] (3:node@c-2.me) 533776 | 533744
-> [ 684.000000] (3:node@c-2.me) 533808 | 533744
-> [ 684.000000] (3:node@c-2.me) 533872 | 533744
-> [ 684.000000] (3:node@c-2.me) 534000 | 533744
-> [ 684.000000] (3:node@c-2.me) 534256 | 533744
-> [ 684.000000] (3:node@c-2.me) 534768 | 533744
-> [ 684.000000] (3:node@c-2.me) 535792 | 533744
-> [ 684.000000] (3:node@c-2.me) 537840 | 533744
-> [ 684.000000] (3:node@c-2.me) 541936 | 533744
-> [ 684.000000] (3:node@c-2.me) 550128 | 533744
-> [ 684.000000] (3:node@c-2.me) 566512 | 533744
-> [ 684.000000] (3:node@c-2.me) 599280 | 533744
-> [ 684.000000] (3:node@c-2.me) 664816 | 533744
-> [ 684.000000] (3:node@c-2.me) 795888 | 533744
-> [ 684.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 684.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 684.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 684.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 684.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 684.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 721.000000] (10:node@c-9.me) My finger table:
-> [ 721.000000] (10:node@c-9.me) Start | Succ
-> [ 721.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 721.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015269 | 6518808
-> [ 721.000000] (10:node@c-9.me) 2015285 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 721.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 721.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 721.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 721.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 721.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 721.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 744.000000] (6:node@c-5.me) My finger table:
-> [ 744.000000] (6:node@c-5.me) Start | Succ
-> [ 744.000000] (6:node@c-5.me) 10874877 | 16728096
-> [ 744.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 744.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 744.000000] (6:node@c-5.me) 10874940 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 744.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 744.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 744.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 744.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 744.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 744.000000] (6:node@c-5.me) Predecessor: -1
-> [ 777.000000] (7:node@c-6.me) My finger table:
-> [ 777.000000] (7:node@c-6.me) Start | Succ
-> [ 777.000000] (7:node@c-6.me) 16728097 | 42
-> [ 777.000000] (7:node@c-6.me) 16728098 | 42
-> [ 777.000000] (7:node@c-6.me) 16728100 | 42
-> [ 777.000000] (7:node@c-6.me) 16728104 | 42
-> [ 777.000000] (7:node@c-6.me) 16728112 | 42
-> [ 777.000000] (7:node@c-6.me) 16728128 | 42
-> [ 777.000000] (7:node@c-6.me) 16728160 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 777.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 777.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 777.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 777.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 777.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 777.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 777.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 777.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 777.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 786.000000] (5:node@c-4.me) My finger table:
-> [ 786.000000] (5:node@c-4.me) Start | Succ
-> [ 786.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 786.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509437 | 16728096
-> [ 786.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 786.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 786.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 786.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 786.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 786.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 786.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 786.000000] (5:node@c-4.me) Predecessor: 10004760
-> [ 787.000000] (4:node@c-3.me) My finger table:
-> [ 787.000000] (4:node@c-3.me) Start | Succ
-> [ 787.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 787.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319746 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319754 | 2015253
-> [ 787.000000] (4:node@c-3.me) 1319770 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 787.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 787.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 787.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 787.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 787.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 787.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 788.000000] (1:node@c-0.me) My finger table:
-> [ 788.000000] (1:node@c-0.me) Start | Succ
-> [ 788.000000] (1:node@c-0.me) 43 | 366680
-> [ 788.000000] (1:node@c-0.me) 44 | 1319738
-> [ 788.000000] (1:node@c-0.me) 46 | 366680
-> [ 788.000000] (1:node@c-0.me) 50 | 366680
-> [ 788.000000] (1:node@c-0.me) 58 | 366680
-> [ 788.000000] (1:node@c-0.me) 74 | 366680
-> [ 788.000000] (1:node@c-0.me) 106 | 42
-> [ 788.000000] (1:node@c-0.me) 170 | 42
-> [ 788.000000] (1:node@c-0.me) 298 | 42
-> [ 788.000000] (1:node@c-0.me) 554 | 42
-> [ 788.000000] (1:node@c-0.me) 1066 | 42
-> [ 788.000000] (1:node@c-0.me) 2090 | 42
-> [ 788.000000] (1:node@c-0.me) 4138 | 42
-> [ 788.000000] (1:node@c-0.me) 8234 | 42
-> [ 788.000000] (1:node@c-0.me) 16426 | 42
-> [ 788.000000] (1:node@c-0.me) 32810 | 42
-> [ 788.000000] (1:node@c-0.me) 65578 | 42
-> [ 788.000000] (1:node@c-0.me) 131114 | 42
-> [ 788.000000] (1:node@c-0.me) 262186 | 42
-> [ 788.000000] (1:node@c-0.me) 524330 | 42
-> [ 788.000000] (1:node@c-0.me) 1048618 | 42
-> [ 788.000000] (1:node@c-0.me) 2097194 | 42
-> [ 788.000000] (1:node@c-0.me) 4194346 | 42
-> [ 788.000000] (1:node@c-0.me) 8388650 | 42
-> [ 788.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 793.000000] (3:node@c-2.me) My finger table:
-> [ 793.000000] (3:node@c-2.me) Start | Succ
-> [ 793.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 793.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 793.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 793.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 793.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 793.000000] (3:node@c-2.me) 533776 | 1319738
-> [ 793.000000] (3:node@c-2.me) 533808 | 533744
-> [ 793.000000] (3:node@c-2.me) 533872 | 533744
-> [ 793.000000] (3:node@c-2.me) 534000 | 533744
-> [ 793.000000] (3:node@c-2.me) 534256 | 533744
-> [ 793.000000] (3:node@c-2.me) 534768 | 533744
-> [ 793.000000] (3:node@c-2.me) 535792 | 533744
-> [ 793.000000] (3:node@c-2.me) 537840 | 533744
-> [ 793.000000] (3:node@c-2.me) 541936 | 533744
-> [ 793.000000] (3:node@c-2.me) 550128 | 533744
-> [ 793.000000] (3:node@c-2.me) 566512 | 533744
-> [ 793.000000] (3:node@c-2.me) 599280 | 533744
-> [ 793.000000] (3:node@c-2.me) 664816 | 533744
-> [ 793.000000] (3:node@c-2.me) 795888 | 533744
-> [ 793.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 793.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 793.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 793.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 793.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 793.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 797.000000] (5:node@c-4.me) My finger table:
-> [ 797.000000] (5:node@c-4.me) Start | Succ
-> [ 797.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 797.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509437 | 16728096
-> [ 797.000000] (5:node@c-4.me) 16509469 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 797.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 797.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 797.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 797.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 797.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 797.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 797.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 798.000000] (8:node@c-7.me) My finger table:
-> [ 798.000000] (8:node@c-7.me) Start | Succ
-> [ 798.000000] (8:node@c-7.me) 10004761 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004776 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004792 | 16509405
-> [ 798.000000] (8:node@c-7.me) 10004824 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 798.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 798.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 798.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 798.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 798.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 798.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 801.000000] (9:node@c-8.me) My finger table:
-> [ 801.000000] (9:node@c-8.me) Start | Succ
-> [ 801.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 801.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518824 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518840 | 10004760
-> [ 801.000000] (9:node@c-8.me) 6518872 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 801.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 801.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 801.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 801.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 801.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 801.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 801.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 804.000000] (2:node@c-1.me) My finger table:
-> [ 804.000000] (2:node@c-1.me) Start | Succ
-> [ 804.000000] (2:node@c-1.me) 366681 | 533744
-> [ 804.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 804.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 804.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 804.000000] (2:node@c-1.me) 366696 | 533744
-> [ 804.000000] (2:node@c-1.me) 366712 | 533744
-> [ 804.000000] (2:node@c-1.me) 366744 | 366680
-> [ 804.000000] (2:node@c-1.me) 366808 | 366680
-> [ 804.000000] (2:node@c-1.me) 366936 | 366680
-> [ 804.000000] (2:node@c-1.me) 367192 | 366680
-> [ 804.000000] (2:node@c-1.me) 367704 | 366680
-> [ 804.000000] (2:node@c-1.me) 368728 | 366680
-> [ 804.000000] (2:node@c-1.me) 370776 | 366680
-> [ 804.000000] (2:node@c-1.me) 374872 | 366680
-> [ 804.000000] (2:node@c-1.me) 383064 | 366680
-> [ 804.000000] (2:node@c-1.me) 399448 | 366680
-> [ 804.000000] (2:node@c-1.me) 432216 | 366680
-> [ 804.000000] (2:node@c-1.me) 497752 | 366680
-> [ 804.000000] (2:node@c-1.me) 628824 | 366680
-> [ 804.000000] (2:node@c-1.me) 890968 | 366680
-> [ 804.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 804.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 804.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 804.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 804.000000] (2:node@c-1.me) Predecessor: 42
-> [ 843.000000] (10:node@c-9.me) My finger table:
-> [ 843.000000] (10:node@c-9.me) Start | Succ
-> [ 843.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 843.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015269 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015285 | 6518808
-> [ 843.000000] (10:node@c-9.me) 2015317 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 843.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 843.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 843.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 843.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 843.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 843.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 865.000000] (6:node@c-5.me) My finger table:
-> [ 865.000000] (6:node@c-5.me) Start | Succ
-> [ 865.000000] (6:node@c-5.me) 10874877 | 16509405
-> [ 865.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 865.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 865.000000] (6:node@c-5.me) 10874940 | 16509405
-> [ 865.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 865.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 865.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 865.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 865.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 865.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 865.000000] (6:node@c-5.me) Predecessor: -1
-> [ 870.000000] (6:node@c-5.me) My finger table:
-> [ 870.000000] (6:node@c-5.me) Start | Succ
-> [ 870.000000] (6:node@c-5.me) 10874877 | 16509405
-> [ 870.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 870.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 870.000000] (6:node@c-5.me) 10874940 | 16509405
-> [ 870.000000] (6:node@c-5.me) 10875004 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 870.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 870.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 870.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 870.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 870.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 870.000000] (6:node@c-5.me) Predecessor: 10004760
-> [ 910.000000] (5:node@c-4.me) My finger table:
-> [ 910.000000] (5:node@c-4.me) Start | Succ
-> [ 910.000000] (5:node@c-4.me) 16509406 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509407 | 366680
-> [ 910.000000] (5:node@c-4.me) 16509409 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509413 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509421 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509437 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509469 | 16728096
-> [ 910.000000] (5:node@c-4.me) 16509533 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16509661 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16509917 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16510429 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16511453 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16513501 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16517597 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16525789 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16542173 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16574941 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16640477 | 16509405
-> [ 910.000000] (5:node@c-4.me) 16771549 | 16509405
-> [ 910.000000] (5:node@c-4.me) 256477 | 16509405
-> [ 910.000000] (5:node@c-4.me) 780765 | 16509405
-> [ 910.000000] (5:node@c-4.me) 1829341 | 16509405
-> [ 910.000000] (5:node@c-4.me) 3926493 | 16509405
-> [ 910.000000] (5:node@c-4.me) 8120797 | 16509405
-> [ 910.000000] (5:node@c-4.me) Predecessor: 10874876
-> [ 912.000000] (1:node@c-0.me) My finger table:
-> [ 912.000000] (1:node@c-0.me) Start | Succ
-> [ 912.000000] (1:node@c-0.me) 43 | 366680
-> [ 912.000000] (1:node@c-0.me) 44 | 1319738
-> [ 912.000000] (1:node@c-0.me) 46 | 366680
-> [ 912.000000] (1:node@c-0.me) 50 | 366680
-> [ 912.000000] (1:node@c-0.me) 58 | 366680
-> [ 912.000000] (1:node@c-0.me) 74 | 366680
-> [ 912.000000] (1:node@c-0.me) 106 | 366680
-> [ 912.000000] (1:node@c-0.me) 170 | 42
-> [ 912.000000] (1:node@c-0.me) 298 | 42
-> [ 912.000000] (1:node@c-0.me) 554 | 42
-> [ 912.000000] (1:node@c-0.me) 1066 | 42
-> [ 912.000000] (1:node@c-0.me) 2090 | 42
-> [ 912.000000] (1:node@c-0.me) 4138 | 42
-> [ 912.000000] (1:node@c-0.me) 8234 | 42
-> [ 912.000000] (1:node@c-0.me) 16426 | 42
-> [ 912.000000] (1:node@c-0.me) 32810 | 42
-> [ 912.000000] (1:node@c-0.me) 65578 | 42
-> [ 912.000000] (1:node@c-0.me) 131114 | 42
-> [ 912.000000] (1:node@c-0.me) 262186 | 42
-> [ 912.000000] (1:node@c-0.me) 524330 | 42
-> [ 912.000000] (1:node@c-0.me) 1048618 | 42
-> [ 912.000000] (1:node@c-0.me) 2097194 | 42
-> [ 912.000000] (1:node@c-0.me) 4194346 | 42
-> [ 912.000000] (1:node@c-0.me) 8388650 | 42
-> [ 912.000000] (1:node@c-0.me) Predecessor: 16728096
-> [ 913.000000] (3:node@c-2.me) My finger table:
-> [ 913.000000] (3:node@c-2.me) Start | Succ
-> [ 913.000000] (3:node@c-2.me) 533745 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533746 | 10004760
-> [ 913.000000] (3:node@c-2.me) 533748 | 10004760
-> [ 913.000000] (3:node@c-2.me) 533752 | 6518808
-> [ 913.000000] (3:node@c-2.me) 533760 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533776 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533808 | 1319738
-> [ 913.000000] (3:node@c-2.me) 533872 | 533744
-> [ 913.000000] (3:node@c-2.me) 534000 | 533744
-> [ 913.000000] (3:node@c-2.me) 534256 | 533744
-> [ 913.000000] (3:node@c-2.me) 534768 | 533744
-> [ 913.000000] (3:node@c-2.me) 535792 | 533744
-> [ 913.000000] (3:node@c-2.me) 537840 | 533744
-> [ 913.000000] (3:node@c-2.me) 541936 | 533744
-> [ 913.000000] (3:node@c-2.me) 550128 | 533744
-> [ 913.000000] (3:node@c-2.me) 566512 | 533744
-> [ 913.000000] (3:node@c-2.me) 599280 | 533744
-> [ 913.000000] (3:node@c-2.me) 664816 | 533744
-> [ 913.000000] (3:node@c-2.me) 795888 | 533744
-> [ 913.000000] (3:node@c-2.me) 1058032 | 533744
-> [ 913.000000] (3:node@c-2.me) 1582320 | 533744
-> [ 913.000000] (3:node@c-2.me) 2630896 | 533744
-> [ 913.000000] (3:node@c-2.me) 4728048 | 533744
-> [ 913.000000] (3:node@c-2.me) 8922352 | 533744
-> [ 913.000000] (3:node@c-2.me) Predecessor: 366680
-> [ 921.000000] (8:node@c-7.me) My finger table:
-> [ 921.000000] (8:node@c-7.me) Start | Succ
-> [ 921.000000] (8:node@c-7.me) 10004761 | 10874876
-> [ 921.000000] (8:node@c-7.me) 10004762 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004764 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004768 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004776 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004792 | 16509405
-> [ 921.000000] (8:node@c-7.me) 10004824 | 10874876
-> [ 921.000000] (8:node@c-7.me) 10004888 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10005016 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10005272 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10005784 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10006808 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10008856 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10012952 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10021144 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10037528 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10070296 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10135832 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10266904 | 10004760
-> [ 921.000000] (8:node@c-7.me) 10529048 | 10004760
-> [ 921.000000] (8:node@c-7.me) 11053336 | 10004760
-> [ 921.000000] (8:node@c-7.me) 12101912 | 10004760
-> [ 921.000000] (8:node@c-7.me) 14199064 | 10004760
-> [ 921.000000] (8:node@c-7.me) 1616152 | 10004760
-> [ 921.000000] (8:node@c-7.me) Predecessor: 6518808
-> [ 964.000000] (2:node@c-1.me) My finger table:
-> [ 964.000000] (2:node@c-1.me) Start | Succ
-> [ 964.000000] (2:node@c-1.me) 366681 | 533744
-> [ 964.000000] (2:node@c-1.me) 366682 | 1319738
-> [ 964.000000] (2:node@c-1.me) 366684 | 1319738
-> [ 964.000000] (2:node@c-1.me) 366688 | 1319738
-> [ 964.000000] (2:node@c-1.me) 366696 | 533744
-> [ 964.000000] (2:node@c-1.me) 366712 | 533744
-> [ 964.000000] (2:node@c-1.me) 366744 | 533744
-> [ 964.000000] (2:node@c-1.me) 366808 | 366680
-> [ 964.000000] (2:node@c-1.me) 366936 | 366680
-> [ 964.000000] (2:node@c-1.me) 367192 | 366680
-> [ 964.000000] (2:node@c-1.me) 367704 | 366680
-> [ 964.000000] (2:node@c-1.me) 368728 | 366680
-> [ 964.000000] (2:node@c-1.me) 370776 | 366680
-> [ 964.000000] (2:node@c-1.me) 374872 | 366680
-> [ 964.000000] (2:node@c-1.me) 383064 | 366680
-> [ 964.000000] (2:node@c-1.me) 399448 | 366680
-> [ 964.000000] (2:node@c-1.me) 432216 | 366680
-> [ 964.000000] (2:node@c-1.me) 497752 | 366680
-> [ 964.000000] (2:node@c-1.me) 628824 | 366680
-> [ 964.000000] (2:node@c-1.me) 890968 | 366680
-> [ 964.000000] (2:node@c-1.me) 1415256 | 366680
-> [ 964.000000] (2:node@c-1.me) 2463832 | 366680
-> [ 964.000000] (2:node@c-1.me) 4560984 | 366680
-> [ 964.000000] (2:node@c-1.me) 8755288 | 366680
-> [ 964.000000] (2:node@c-1.me) Predecessor: 42
-> [ 966.000000] (4:node@c-3.me) My finger table:
-> [ 966.000000] (4:node@c-3.me) Start | Succ
-> [ 966.000000] (4:node@c-3.me) 1319739 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319740 | 6518808
-> [ 966.000000] (4:node@c-3.me) 1319742 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319746 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319754 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319770 | 2015253
-> [ 966.000000] (4:node@c-3.me) 1319802 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1319866 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1319994 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1320250 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1320762 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1321786 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1323834 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1327930 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1336122 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1352506 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1385274 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1450810 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1581882 | 1319738
-> [ 966.000000] (4:node@c-3.me) 1844026 | 1319738
-> [ 966.000000] (4:node@c-3.me) 2368314 | 1319738
-> [ 966.000000] (4:node@c-3.me) 3416890 | 1319738
-> [ 966.000000] (4:node@c-3.me) 5514042 | 1319738
-> [ 966.000000] (4:node@c-3.me) 9708346 | 1319738
-> [ 966.000000] (4:node@c-3.me) Predecessor: 533744
-> [ 966.000000] (7:node@c-6.me) My finger table:
-> [ 966.000000] (7:node@c-6.me) Start | Succ
-> [ 966.000000] (7:node@c-6.me) 16728097 | 42
-> [ 966.000000] (7:node@c-6.me) 16728098 | 42
-> [ 966.000000] (7:node@c-6.me) 16728100 | 42
-> [ 966.000000] (7:node@c-6.me) 16728104 | 42
-> [ 966.000000] (7:node@c-6.me) 16728112 | 42
-> [ 966.000000] (7:node@c-6.me) 16728128 | 42
-> [ 966.000000] (7:node@c-6.me) 16728160 | 42
-> [ 966.000000] (7:node@c-6.me) 16728224 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16728352 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16728608 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16729120 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16730144 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16732192 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16736288 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16744480 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16760864 | 16728096
-> [ 966.000000] (7:node@c-6.me) 16416 | 16728096
-> [ 966.000000] (7:node@c-6.me) 81952 | 16728096
-> [ 966.000000] (7:node@c-6.me) 213024 | 16728096
-> [ 966.000000] (7:node@c-6.me) 475168 | 16728096
-> [ 966.000000] (7:node@c-6.me) 999456 | 16728096
-> [ 966.000000] (7:node@c-6.me) 2048032 | 16728096
-> [ 966.000000] (7:node@c-6.me) 4145184 | 16728096
-> [ 966.000000] (7:node@c-6.me) 8339488 | 16728096
-> [ 966.000000] (7:node@c-6.me) Predecessor: 16509405
-> [ 973.000000] (9:node@c-8.me) My finger table:
-> [ 973.000000] (9:node@c-8.me) Start | Succ
-> [ 973.000000] (9:node@c-8.me) 6518809 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518810 | 16728096
-> [ 973.000000] (9:node@c-8.me) 6518812 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518816 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518824 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518840 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518872 | 10004760
-> [ 973.000000] (9:node@c-8.me) 6518936 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6519064 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6519320 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6519832 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6520856 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6522904 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6527000 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6535192 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6551576 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6584344 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6649880 | 6518808
-> [ 973.000000] (9:node@c-8.me) 6780952 | 6518808
-> [ 973.000000] (9:node@c-8.me) 7043096 | 6518808
-> [ 973.000000] (9:node@c-8.me) 7567384 | 6518808
-> [ 973.000000] (9:node@c-8.me) 8615960 | 6518808
-> [ 973.000000] (9:node@c-8.me) 10713112 | 6518808
-> [ 973.000000] (9:node@c-8.me) 14907416 | 6518808
-> [ 973.000000] (9:node@c-8.me) Predecessor: 2015253
-> [ 979.000000] (10:node@c-9.me) My finger table:
-> [ 979.000000] (10:node@c-9.me) Start | Succ
-> [ 979.000000] (10:node@c-9.me) 2015254 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015255 | 16728096
-> [ 979.000000] (10:node@c-9.me) 2015257 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015261 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015269 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015285 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015317 | 6518808
-> [ 979.000000] (10:node@c-9.me) 2015381 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2015509 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2015765 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2016277 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2017301 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2019349 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2023445 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2031637 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2048021 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2080789 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2146325 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2277397 | 2015253
-> [ 979.000000] (10:node@c-9.me) 2539541 | 2015253
-> [ 979.000000] (10:node@c-9.me) 3063829 | 2015253
-> [ 979.000000] (10:node@c-9.me) 4112405 | 2015253
-> [ 979.000000] (10:node@c-9.me) 6209557 | 2015253
-> [ 979.000000] (10:node@c-9.me) 10403861 | 2015253
-> [ 979.000000] (10:node@c-9.me) Predecessor: 1319738
-> [ 987.000000] (6:node@c-5.me) My finger table:
-> [ 987.000000] (6:node@c-5.me) Start | Succ
-> [ 987.000000] (6:node@c-5.me) 10874877 | 16509405
-> [ 987.000000] (6:node@c-5.me) 10874878 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874880 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874884 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874892 | 533744
-> [ 987.000000] (6:node@c-5.me) 10874908 | 16728096
-> [ 987.000000] (6:node@c-5.me) 10874940 | 16509405
-> [ 987.000000] (6:node@c-5.me) 10875004 | 16509405
-> [ 987.000000] (6:node@c-5.me) 10875132 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10875388 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10875900 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10876924 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10878972 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10883068 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10891260 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10907644 | 10874876
-> [ 987.000000] (6:node@c-5.me) 10940412 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11005948 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11137020 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11399164 | 10874876
-> [ 987.000000] (6:node@c-5.me) 11923452 | 10874876
-> [ 987.000000] (6:node@c-5.me) 12972028 | 10874876
-> [ 987.000000] (6:node@c-5.me) 15069180 | 10874876
-> [ 987.000000] (6:node@c-5.me) 2486268 | 10874876
-> [ 987.000000] (6:node@c-5.me) Predecessor: 10004760
-> [1196.000000] (0:@) Messages created: 1827
-> [1196.000000] (0:@) Simulated time: 1196
+> [ 5.999900] (2:node@c-1.me) My finger table:
+> [ 5.999900] (2:node@c-1.me) Start | Succ
+> [ 5.999900] (2:node@c-1.me) 366681 | 42
+> [ 5.999900] (2:node@c-1.me) 366682 | 366680
+> [ 5.999900] (2:node@c-1.me) 366684 | 366680
+> [ 5.999900] (2:node@c-1.me) 366688 | 366680
+> [ 5.999900] (2:node@c-1.me) 366696 | 366680
+> [ 5.999900] (2:node@c-1.me) 366712 | 366680
+> [ 5.999900] (2:node@c-1.me) 366744 | 366680
+> [ 5.999900] (2:node@c-1.me) 366808 | 366680
+> [ 5.999900] (2:node@c-1.me) 366936 | 366680
+> [ 5.999900] (2:node@c-1.me) 367192 | 366680
+> [ 5.999900] (2:node@c-1.me) 367704 | 366680
+> [ 5.999900] (2:node@c-1.me) 368728 | 366680
+> [ 5.999900] (2:node@c-1.me) 370776 | 366680
+> [ 5.999900] (2:node@c-1.me) 374872 | 366680
+> [ 5.999900] (2:node@c-1.me) 383064 | 366680
+> [ 5.999900] (2:node@c-1.me) 399448 | 366680
+> [ 5.999900] (2:node@c-1.me) 432216 | 366680
+> [ 5.999900] (2:node@c-1.me) 497752 | 366680
+> [ 5.999900] (2:node@c-1.me) 628824 | 366680
+> [ 5.999900] (2:node@c-1.me) 890968 | 366680
+> [ 5.999900] (2:node@c-1.me) 1415256 | 366680
+> [ 5.999900] (2:node@c-1.me) 2463832 | 366680
+> [ 5.999900] (2:node@c-1.me) 4560984 | 366680
+> [ 5.999900] (2:node@c-1.me) 8755288 | 366680
+> [ 5.999900] (2:node@c-1.me) Predecessor: -1
+> [ 7.999900] (7:node@c-6.me) My finger table:
+> [ 7.999900] (7:node@c-6.me) Start | Succ
+> [ 7.999900] (7:node@c-6.me) 16728097 | 1319738
+> [ 7.999900] (7:node@c-6.me) 16728098 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728100 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728104 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728112 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728128 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728160 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728224 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728352 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16728608 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16729120 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16730144 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16732192 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16736288 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16744480 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16760864 | 16728096
+> [ 7.999900] (7:node@c-6.me) 16416 | 16728096
+> [ 7.999900] (7:node@c-6.me) 81952 | 16728096
+> [ 7.999900] (7:node@c-6.me) 213024 | 16728096
+> [ 7.999900] (7:node@c-6.me) 475168 | 16728096
+> [ 7.999900] (7:node@c-6.me) 999456 | 16728096
+> [ 7.999900] (7:node@c-6.me) 2048032 | 16728096
+> [ 7.999900] (7:node@c-6.me) 4145184 | 16728096
+> [ 7.999900] (7:node@c-6.me) 8339488 | 16728096
+> [ 7.999900] (7:node@c-6.me) Predecessor: -1
+> [ 8.999900] (10:node@c-9.me) My finger table:
+> [ 8.999900] (10:node@c-9.me) Start | Succ
+> [ 8.999900] (10:node@c-9.me) 2015254 | 1319738
+> [ 8.999900] (10:node@c-9.me) 2015255 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015257 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015261 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015269 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015285 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015317 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015381 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015509 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2015765 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2016277 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2017301 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2019349 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2023445 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2031637 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2048021 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2080789 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2146325 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2277397 | 2015253
+> [ 8.999900] (10:node@c-9.me) 2539541 | 2015253
+> [ 8.999900] (10:node@c-9.me) 3063829 | 2015253
+> [ 8.999900] (10:node@c-9.me) 4112405 | 2015253
+> [ 8.999900] (10:node@c-9.me) 6209557 | 2015253
+> [ 8.999900] (10:node@c-9.me) 10403861 | 2015253
+> [ 8.999900] (10:node@c-9.me) Predecessor: -1
+> [ 10.999800] (4:node@c-3.me) My finger table:
+> [ 10.999800] (4:node@c-3.me) Start | Succ
+> [ 10.999800] (4:node@c-3.me) 1319739 | 42
+> [ 10.999800] (4:node@c-3.me) 1319740 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319742 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319746 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319754 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319770 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319802 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319866 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1319994 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1320250 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1320762 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1321786 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1323834 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1327930 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1336122 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1352506 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1385274 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1450810 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1581882 | 1319738
+> [ 10.999800] (4:node@c-3.me) 1844026 | 1319738
+> [ 10.999800] (4:node@c-3.me) 2368314 | 1319738
+> [ 10.999800] (4:node@c-3.me) 3416890 | 1319738
+> [ 10.999800] (4:node@c-3.me) 5514042 | 1319738
+> [ 10.999800] (4:node@c-3.me) 9708346 | 1319738
+> [ 10.999800] (4:node@c-3.me) Predecessor: -1
+> [ 15.999700] (9:node@c-8.me) My finger table:
+> [ 15.999700] (9:node@c-8.me) Start | Succ
+> [ 15.999700] (9:node@c-8.me) 6518809 | 42
+> [ 15.999700] (9:node@c-8.me) 6518810 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518812 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518816 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518824 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518840 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518872 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6518936 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6519064 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6519320 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6519832 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6520856 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6522904 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6527000 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6535192 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6551576 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6584344 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6649880 | 6518808
+> [ 15.999700] (9:node@c-8.me) 6780952 | 6518808
+> [ 15.999700] (9:node@c-8.me) 7043096 | 6518808
+> [ 15.999700] (9:node@c-8.me) 7567384 | 6518808
+> [ 15.999700] (9:node@c-8.me) 8615960 | 6518808
+> [ 15.999700] (9:node@c-8.me) 10713112 | 6518808
+> [ 15.999700] (9:node@c-8.me) 14907416 | 6518808
+> [ 15.999700] (9:node@c-8.me) Predecessor: -1
+> [ 26.999600] (3:node@c-2.me) My finger table:
+> [ 26.999600] (3:node@c-2.me) Start | Succ
+> [ 26.999600] (3:node@c-2.me) 533745 | 366680
+> [ 26.999600] (3:node@c-2.me) 533746 | 533744
+> [ 26.999600] (3:node@c-2.me) 533748 | 533744
+> [ 26.999600] (3:node@c-2.me) 533752 | 533744
+> [ 26.999600] (3:node@c-2.me) 533760 | 533744
+> [ 26.999600] (3:node@c-2.me) 533776 | 533744
+> [ 26.999600] (3:node@c-2.me) 533808 | 533744
+> [ 26.999600] (3:node@c-2.me) 533872 | 533744
+> [ 26.999600] (3:node@c-2.me) 534000 | 533744
+> [ 26.999600] (3:node@c-2.me) 534256 | 533744
+> [ 26.999600] (3:node@c-2.me) 534768 | 533744
+> [ 26.999600] (3:node@c-2.me) 535792 | 533744
+> [ 26.999600] (3:node@c-2.me) 537840 | 533744
+> [ 26.999600] (3:node@c-2.me) 541936 | 533744
+> [ 26.999600] (3:node@c-2.me) 550128 | 533744
+> [ 26.999600] (3:node@c-2.me) 566512 | 533744
+> [ 26.999600] (3:node@c-2.me) 599280 | 533744
+> [ 26.999600] (3:node@c-2.me) 664816 | 533744
+> [ 26.999600] (3:node@c-2.me) 795888 | 533744
+> [ 26.999600] (3:node@c-2.me) 1058032 | 533744
+> [ 26.999600] (3:node@c-2.me) 1582320 | 533744
+> [ 26.999600] (3:node@c-2.me) 2630896 | 533744
+> [ 26.999600] (3:node@c-2.me) 4728048 | 533744
+> [ 26.999600] (3:node@c-2.me) 8922352 | 533744
+> [ 26.999600] (3:node@c-2.me) Predecessor: 10874876
+> [ 31.999400] (5:node@c-4.me) My finger table:
+> [ 31.999400] (5:node@c-4.me) Start | Succ
+> [ 31.999400] (5:node@c-4.me) 16509406 | 366680
+> [ 31.999400] (5:node@c-4.me) 16509407 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509409 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509413 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509421 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509437 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509469 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509533 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509661 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16509917 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16510429 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16511453 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16513501 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16517597 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16525789 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16542173 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16574941 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16640477 | 16509405
+> [ 31.999400] (5:node@c-4.me) 16771549 | 16509405
+> [ 31.999400] (5:node@c-4.me) 256477 | 16509405
+> [ 31.999400] (5:node@c-4.me) 780765 | 16509405
+> [ 31.999400] (5:node@c-4.me) 1829341 | 16509405
+> [ 31.999400] (5:node@c-4.me) 3926493 | 16509405
+> [ 31.999400] (5:node@c-4.me) 8120797 | 16509405
+> [ 31.999400] (5:node@c-4.me) Predecessor: 10004760
+> [ 32.999400] (2:node@c-1.me) My finger table:
+> [ 32.999400] (2:node@c-1.me) Start | Succ
+> [ 32.999400] (2:node@c-1.me) 366681 | 42
+> [ 32.999400] (2:node@c-1.me) 366682 | 366680
+> [ 32.999400] (2:node@c-1.me) 366684 | 366680
+> [ 32.999400] (2:node@c-1.me) 366688 | 366680
+> [ 32.999400] (2:node@c-1.me) 366696 | 366680
+> [ 32.999400] (2:node@c-1.me) 366712 | 366680
+> [ 32.999400] (2:node@c-1.me) 366744 | 366680
+> [ 32.999400] (2:node@c-1.me) 366808 | 366680
+> [ 32.999400] (2:node@c-1.me) 366936 | 366680
+> [ 32.999400] (2:node@c-1.me) 367192 | 366680
+> [ 32.999400] (2:node@c-1.me) 367704 | 366680
+> [ 32.999400] (2:node@c-1.me) 368728 | 366680
+> [ 32.999400] (2:node@c-1.me) 370776 | 366680
+> [ 32.999400] (2:node@c-1.me) 374872 | 366680
+> [ 32.999400] (2:node@c-1.me) 383064 | 366680
+> [ 32.999400] (2:node@c-1.me) 399448 | 366680
+> [ 32.999400] (2:node@c-1.me) 432216 | 366680
+> [ 32.999400] (2:node@c-1.me) 497752 | 366680
+> [ 32.999400] (2:node@c-1.me) 628824 | 366680
+> [ 32.999400] (2:node@c-1.me) 890968 | 366680
+> [ 32.999400] (2:node@c-1.me) 1415256 | 366680
+> [ 32.999400] (2:node@c-1.me) 2463832 | 366680
+> [ 32.999400] (2:node@c-1.me) 4560984 | 366680
+> [ 32.999400] (2:node@c-1.me) 8755288 | 366680
+> [ 32.999400] (2:node@c-1.me) Predecessor: 533744
+> [ 33.999400] (2:node@c-1.me) My finger table:
+> [ 33.999400] (2:node@c-1.me) Start | Succ
+> [ 33.999400] (2:node@c-1.me) 366681 | 42
+> [ 33.999400] (2:node@c-1.me) 366682 | 366680
+> [ 33.999400] (2:node@c-1.me) 366684 | 366680
+> [ 33.999400] (2:node@c-1.me) 366688 | 366680
+> [ 33.999400] (2:node@c-1.me) 366696 | 366680
+> [ 33.999400] (2:node@c-1.me) 366712 | 366680
+> [ 33.999400] (2:node@c-1.me) 366744 | 366680
+> [ 33.999400] (2:node@c-1.me) 366808 | 366680
+> [ 33.999400] (2:node@c-1.me) 366936 | 366680
+> [ 33.999400] (2:node@c-1.me) 367192 | 366680
+> [ 33.999400] (2:node@c-1.me) 367704 | 366680
+> [ 33.999400] (2:node@c-1.me) 368728 | 366680
+> [ 33.999400] (2:node@c-1.me) 370776 | 366680
+> [ 33.999400] (2:node@c-1.me) 374872 | 366680
+> [ 33.999400] (2:node@c-1.me) 383064 | 366680
+> [ 33.999400] (2:node@c-1.me) 399448 | 366680
+> [ 33.999400] (2:node@c-1.me) 432216 | 366680
+> [ 33.999400] (2:node@c-1.me) 497752 | 366680
+> [ 33.999400] (2:node@c-1.me) 628824 | 366680
+> [ 33.999400] (2:node@c-1.me) 890968 | 366680
+> [ 33.999400] (2:node@c-1.me) 1415256 | 366680
+> [ 33.999400] (2:node@c-1.me) 2463832 | 366680
+> [ 33.999400] (2:node@c-1.me) 4560984 | 366680
+> [ 33.999400] (2:node@c-1.me) 8755288 | 366680
+> [ 33.999400] (2:node@c-1.me) Predecessor: 16509405
+> [ 35.999300] (4:node@c-3.me) My finger table:
+> [ 35.999300] (4:node@c-3.me) Start | Succ
+> [ 35.999300] (4:node@c-3.me) 1319739 | 42
+> [ 35.999300] (4:node@c-3.me) 1319740 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319742 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319746 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319754 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319770 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319802 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319866 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1319994 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1320250 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1320762 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1321786 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1323834 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1327930 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1336122 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1352506 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1385274 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1450810 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1581882 | 1319738
+> [ 35.999300] (4:node@c-3.me) 1844026 | 1319738
+> [ 35.999300] (4:node@c-3.me) 2368314 | 1319738
+> [ 35.999300] (4:node@c-3.me) 3416890 | 1319738
+> [ 35.999300] (4:node@c-3.me) 5514042 | 1319738
+> [ 35.999300] (4:node@c-3.me) 9708346 | 1319738
+> [ 35.999300] (4:node@c-3.me) Predecessor: 16728096
+> [ 49.999000] (1:node@c-0.me) My finger table:
+> [ 49.999000] (1:node@c-0.me) Start | Succ
+> [ 49.999000] (1:node@c-0.me) 43 | 42
+> [ 49.999000] (1:node@c-0.me) 44 | 42
+> [ 49.999000] (1:node@c-0.me) 46 | 42
+> [ 49.999000] (1:node@c-0.me) 50 | 42
+> [ 49.999000] (1:node@c-0.me) 58 | 42
+> [ 49.999000] (1:node@c-0.me) 74 | 42
+> [ 49.999000] (1:node@c-0.me) 106 | 42
+> [ 49.999000] (1:node@c-0.me) 170 | 42
+> [ 49.999000] (1:node@c-0.me) 298 | 42
+> [ 49.999000] (1:node@c-0.me) 554 | 42
+> [ 49.999000] (1:node@c-0.me) 1066 | 42
+> [ 49.999000] (1:node@c-0.me) 2090 | 42
+> [ 49.999000] (1:node@c-0.me) 4138 | 42
+> [ 49.999000] (1:node@c-0.me) 8234 | 42
+> [ 49.999000] (1:node@c-0.me) 16426 | 42
+> [ 49.999000] (1:node@c-0.me) 32810 | 42
+> [ 49.999000] (1:node@c-0.me) 65578 | 42
+> [ 49.999000] (1:node@c-0.me) 131114 | 42
+> [ 49.999000] (1:node@c-0.me) 262186 | 42
+> [ 49.999000] (1:node@c-0.me) 524330 | 42
+> [ 49.999000] (1:node@c-0.me) 1048618 | 42
+> [ 49.999000] (1:node@c-0.me) 2097194 | 42
+> [ 49.999000] (1:node@c-0.me) 4194346 | 42
+> [ 49.999000] (1:node@c-0.me) 8388650 | 42
+> [ 49.999000] (1:node@c-0.me) Predecessor: 366680
+> [ 59.998800] (1:node@c-0.me) My finger table:
+> [ 59.998800] (1:node@c-0.me) Start | Succ
+> [ 59.998800] (1:node@c-0.me) 43 | 366680
+> [ 59.998800] (1:node@c-0.me) 44 | 42
+> [ 59.998800] (1:node@c-0.me) 46 | 42
+> [ 59.998800] (1:node@c-0.me) 50 | 42
+> [ 59.998800] (1:node@c-0.me) 58 | 42
+> [ 59.998800] (1:node@c-0.me) 74 | 42
+> [ 59.998800] (1:node@c-0.me) 106 | 42
+> [ 59.998800] (1:node@c-0.me) 170 | 42
+> [ 59.998800] (1:node@c-0.me) 298 | 42
+> [ 59.998800] (1:node@c-0.me) 554 | 42
+> [ 59.998800] (1:node@c-0.me) 1066 | 42
+> [ 59.998800] (1:node@c-0.me) 2090 | 42
+> [ 59.998800] (1:node@c-0.me) 4138 | 42
+> [ 59.998800] (1:node@c-0.me) 8234 | 42
+> [ 59.998800] (1:node@c-0.me) 16426 | 42
+> [ 59.998800] (1:node@c-0.me) 32810 | 42
+> [ 59.998800] (1:node@c-0.me) 65578 | 42
+> [ 59.998800] (1:node@c-0.me) 131114 | 42
+> [ 59.998800] (1:node@c-0.me) 262186 | 42
+> [ 59.998800] (1:node@c-0.me) 524330 | 42
+> [ 59.998800] (1:node@c-0.me) 1048618 | 42
+> [ 59.998800] (1:node@c-0.me) 2097194 | 42
+> [ 59.998800] (1:node@c-0.me) 4194346 | 42
+> [ 59.998800] (1:node@c-0.me) 8388650 | 42
+> [ 59.998800] (1:node@c-0.me) Predecessor: 1319738
+> [ 69.998600] (1:node@c-0.me) My finger table:
+> [ 69.998600] (1:node@c-0.me) Start | Succ
+> [ 69.998600] (1:node@c-0.me) 43 | 366680
+> [ 69.998600] (1:node@c-0.me) 44 | 42
+> [ 69.998600] (1:node@c-0.me) 46 | 42
+> [ 69.998600] (1:node@c-0.me) 50 | 42
+> [ 69.998600] (1:node@c-0.me) 58 | 42
+> [ 69.998600] (1:node@c-0.me) 74 | 42
+> [ 69.998600] (1:node@c-0.me) 106 | 42
+> [ 69.998600] (1:node@c-0.me) 170 | 42
+> [ 69.998600] (1:node@c-0.me) 298 | 42
+> [ 69.998600] (1:node@c-0.me) 554 | 42
+> [ 69.998600] (1:node@c-0.me) 1066 | 42
+> [ 69.998600] (1:node@c-0.me) 2090 | 42
+> [ 69.998600] (1:node@c-0.me) 4138 | 42
+> [ 69.998600] (1:node@c-0.me) 8234 | 42
+> [ 69.998600] (1:node@c-0.me) 16426 | 42
+> [ 69.998600] (1:node@c-0.me) 32810 | 42
+> [ 69.998600] (1:node@c-0.me) 65578 | 42
+> [ 69.998600] (1:node@c-0.me) 131114 | 42
+> [ 69.998600] (1:node@c-0.me) 262186 | 42
+> [ 69.998600] (1:node@c-0.me) 524330 | 42
+> [ 69.998600] (1:node@c-0.me) 1048618 | 42
+> [ 69.998600] (1:node@c-0.me) 2097194 | 42
+> [ 69.998600] (1:node@c-0.me) 4194346 | 42
+> [ 69.998600] (1:node@c-0.me) 8388650 | 42
+> [ 69.998600] (1:node@c-0.me) Predecessor: 6518808
+> [ 81.998500] (2:node@c-1.me) My finger table:
+> [ 81.998500] (2:node@c-1.me) Start | Succ
+> [ 81.998500] (2:node@c-1.me) 366681 | 6518808
+> [ 81.998500] (2:node@c-1.me) 366682 | 366680
+> [ 81.998500] (2:node@c-1.me) 366684 | 366680
+> [ 81.998500] (2:node@c-1.me) 366688 | 366680
+> [ 81.998500] (2:node@c-1.me) 366696 | 366680
+> [ 81.998500] (2:node@c-1.me) 366712 | 366680
+> [ 81.998500] (2:node@c-1.me) 366744 | 366680
+> [ 81.998500] (2:node@c-1.me) 366808 | 366680
+> [ 81.998500] (2:node@c-1.me) 366936 | 366680
+> [ 81.998500] (2:node@c-1.me) 367192 | 366680
+> [ 81.998500] (2:node@c-1.me) 367704 | 366680
+> [ 81.998500] (2:node@c-1.me) 368728 | 366680
+> [ 81.998500] (2:node@c-1.me) 370776 | 366680
+> [ 81.998500] (2:node@c-1.me) 374872 | 366680
+> [ 81.998500] (2:node@c-1.me) 383064 | 366680
+> [ 81.998500] (2:node@c-1.me) 399448 | 366680
+> [ 81.998500] (2:node@c-1.me) 432216 | 366680
+> [ 81.998500] (2:node@c-1.me) 497752 | 366680
+> [ 81.998500] (2:node@c-1.me) 628824 | 366680
+> [ 81.998500] (2:node@c-1.me) 890968 | 366680
+> [ 81.998500] (2:node@c-1.me) 1415256 | 366680
+> [ 81.998500] (2:node@c-1.me) 2463832 | 366680
+> [ 81.998500] (2:node@c-1.me) 4560984 | 366680
+> [ 81.998500] (2:node@c-1.me) 8755288 | 366680
+> [ 81.998500] (2:node@c-1.me) Predecessor: 42
+> [ 98.998100] (7:node@c-6.me) My finger table:
+> [ 98.998100] (7:node@c-6.me) Start | Succ
+> [ 98.998100] (7:node@c-6.me) 16728097 | 1319738
+> [ 98.998100] (7:node@c-6.me) 16728098 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728100 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728104 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728112 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728128 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728160 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728224 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728352 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16728608 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16729120 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16730144 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16732192 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16736288 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16744480 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16760864 | 16728096
+> [ 98.998100] (7:node@c-6.me) 16416 | 16728096
+> [ 98.998100] (7:node@c-6.me) 81952 | 16728096
+> [ 98.998100] (7:node@c-6.me) 213024 | 16728096
+> [ 98.998100] (7:node@c-6.me) 475168 | 16728096
+> [ 98.998100] (7:node@c-6.me) 999456 | 16728096
+> [ 98.998100] (7:node@c-6.me) 2048032 | 16728096
+> [ 98.998100] (7:node@c-6.me) 4145184 | 16728096
+> [ 98.998100] (7:node@c-6.me) 8339488 | 16728096
+> [ 98.998100] (7:node@c-6.me) Predecessor: 2015253
+> [ 110.998000] (9:node@c-8.me) My finger table:
+> [ 110.998000] (9:node@c-8.me) Start | Succ
+> [ 110.998000] (9:node@c-8.me) 6518809 | 42
+> [ 110.998000] (9:node@c-8.me) 6518810 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518812 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518816 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518824 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518840 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518872 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6518936 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6519064 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6519320 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6519832 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6520856 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6522904 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6527000 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6535192 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6551576 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6584344 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6649880 | 6518808
+> [ 110.998000] (9:node@c-8.me) 6780952 | 6518808
+> [ 110.998000] (9:node@c-8.me) 7043096 | 6518808
+> [ 110.998000] (9:node@c-8.me) 7567384 | 6518808
+> [ 110.998000] (9:node@c-8.me) 8615960 | 6518808
+> [ 110.998000] (9:node@c-8.me) 10713112 | 6518808
+> [ 110.998000] (9:node@c-8.me) 14907416 | 6518808
+> [ 110.998000] (9:node@c-8.me) Predecessor: 366680
+> [ 111.998000] (9:node@c-8.me) My finger table:
+> [ 111.998000] (9:node@c-8.me) Start | Succ
+> [ 111.998000] (9:node@c-8.me) 6518809 | 42
+> [ 111.998000] (9:node@c-8.me) 6518810 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518812 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518816 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518824 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518840 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518872 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6518936 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6519064 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6519320 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6519832 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6520856 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6522904 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6527000 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6535192 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6551576 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6584344 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6649880 | 6518808
+> [ 111.998000] (9:node@c-8.me) 6780952 | 6518808
+> [ 111.998000] (9:node@c-8.me) 7043096 | 6518808
+> [ 111.998000] (9:node@c-8.me) 7567384 | 6518808
+> [ 111.998000] (9:node@c-8.me) 8615960 | 6518808
+> [ 111.998000] (9:node@c-8.me) 10713112 | 6518808
+> [ 111.998000] (9:node@c-8.me) 14907416 | 6518808
+> [ 111.998000] (9:node@c-8.me) Predecessor: 1319738
+> [ 127.997700] (8:node@c-7.me) My finger table:
+> [ 127.997700] (8:node@c-7.me) Start | Succ
+> [ 127.997700] (8:node@c-7.me) 10004761 | 16509405
+> [ 127.997700] (8:node@c-7.me) 10004762 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004764 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004768 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004776 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004792 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004824 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10004888 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10005016 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10005272 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10005784 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10006808 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10008856 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10012952 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10021144 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10037528 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10070296 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10135832 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10266904 | 10004760
+> [ 127.997700] (8:node@c-7.me) 10529048 | 10004760
+> [ 127.997700] (8:node@c-7.me) 11053336 | 10004760
+> [ 127.997700] (8:node@c-7.me) 12101912 | 10004760
+> [ 127.997700] (8:node@c-7.me) 14199064 | 10004760
+> [ 127.997700] (8:node@c-7.me) 1616152 | 10004760
+> [ 127.997700] (8:node@c-7.me) Predecessor: 533744
+> [ 137.997600] (1:node@c-0.me) My finger table:
+> [ 137.997600] (1:node@c-0.me) Start | Succ
+> [ 137.997600] (1:node@c-0.me) 43 | 366680
+> [ 137.997600] (1:node@c-0.me) 44 | 42
+> [ 137.997600] (1:node@c-0.me) 46 | 42
+> [ 137.997600] (1:node@c-0.me) 50 | 42
+> [ 137.997600] (1:node@c-0.me) 58 | 42
+> [ 137.997600] (1:node@c-0.me) 74 | 42
+> [ 137.997600] (1:node@c-0.me) 106 | 42
+> [ 137.997600] (1:node@c-0.me) 170 | 42
+> [ 137.997600] (1:node@c-0.me) 298 | 42
+> [ 137.997600] (1:node@c-0.me) 554 | 42
+> [ 137.997600] (1:node@c-0.me) 1066 | 42
+> [ 137.997600] (1:node@c-0.me) 2090 | 42
+> [ 137.997600] (1:node@c-0.me) 4138 | 42
+> [ 137.997600] (1:node@c-0.me) 8234 | 42
+> [ 137.997600] (1:node@c-0.me) 16426 | 42
+> [ 137.997600] (1:node@c-0.me) 32810 | 42
+> [ 137.997600] (1:node@c-0.me) 65578 | 42
+> [ 137.997600] (1:node@c-0.me) 131114 | 42
+> [ 137.997600] (1:node@c-0.me) 262186 | 42
+> [ 137.997600] (1:node@c-0.me) 524330 | 42
+> [ 137.997600] (1:node@c-0.me) 1048618 | 42
+> [ 137.997600] (1:node@c-0.me) 2097194 | 42
+> [ 137.997600] (1:node@c-0.me) 4194346 | 42
+> [ 137.997600] (1:node@c-0.me) 8388650 | 42
+> [ 137.997600] (1:node@c-0.me) Predecessor: 16509405
+> [ 165.997100] (4:node@c-3.me) My finger table:
+> [ 165.997100] (4:node@c-3.me) Start | Succ
+> [ 165.997100] (4:node@c-3.me) 1319739 | 6518808
+> [ 165.997100] (4:node@c-3.me) 1319740 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319742 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319746 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319754 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319770 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319802 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319866 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1319994 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1320250 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1320762 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1321786 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1323834 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1327930 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1336122 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1352506 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1385274 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1450810 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1581882 | 1319738
+> [ 165.997100] (4:node@c-3.me) 1844026 | 1319738
+> [ 165.997100] (4:node@c-3.me) 2368314 | 1319738
+> [ 165.997100] (4:node@c-3.me) 3416890 | 1319738
+> [ 165.997100] (4:node@c-3.me) 5514042 | 1319738
+> [ 165.997100] (4:node@c-3.me) 9708346 | 1319738
+> [ 165.997100] (4:node@c-3.me) Predecessor: 366680
+> [ 209.996500] (8:node@c-7.me) My finger table:
+> [ 209.996500] (8:node@c-7.me) Start | Succ
+> [ 209.996500] (8:node@c-7.me) 10004761 | 16509405
+> [ 209.996500] (8:node@c-7.me) 10004762 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004764 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004768 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004776 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004792 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004824 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10004888 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10005016 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10005272 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10005784 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10006808 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10008856 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10012952 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10021144 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10037528 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10070296 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10135832 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10266904 | 10004760
+> [ 209.996500] (8:node@c-7.me) 10529048 | 10004760
+> [ 209.996500] (8:node@c-7.me) 11053336 | 10004760
+> [ 209.996500] (8:node@c-7.me) 12101912 | 10004760
+> [ 209.996500] (8:node@c-7.me) 14199064 | 10004760
+> [ 209.996500] (8:node@c-7.me) 1616152 | 10004760
+> [ 209.996500] (8:node@c-7.me) Predecessor: 6518808
+> [ 247.995800] (6:node@c-5.me) My finger table:
+> [ 247.995800] (6:node@c-5.me) Start | Succ
+> [ 247.995800] (6:node@c-5.me) 10874877 | 533744
+> [ 247.995800] (6:node@c-5.me) 10874878 | 533744
+> [ 247.995800] (6:node@c-5.me) 10874880 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874884 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874892 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874908 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10874940 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875004 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875132 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875388 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10875900 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10876924 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10878972 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10883068 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10891260 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10907644 | 10874876
+> [ 247.995800] (6:node@c-5.me) 10940412 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11005948 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11137020 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11399164 | 10874876
+> [ 247.995800] (6:node@c-5.me) 11923452 | 10874876
+> [ 247.995800] (6:node@c-5.me) 12972028 | 10874876
+> [ 247.995800] (6:node@c-5.me) 15069180 | 10874876
+> [ 247.995800] (6:node@c-5.me) 2486268 | 10874876
+> [ 247.995800] (6:node@c-5.me) Predecessor: -1
+> [ 249.995700] (7:node@c-6.me) My finger table:
+> [ 249.995700] (7:node@c-6.me) Start | Succ
+> [ 249.995700] (7:node@c-6.me) 16728097 | 42
+> [ 249.995700] (7:node@c-6.me) 16728098 | 42
+> [ 249.995700] (7:node@c-6.me) 16728100 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728104 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728112 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728128 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728160 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728224 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728352 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16728608 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16729120 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16730144 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16732192 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16736288 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16744480 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16760864 | 16728096
+> [ 249.995700] (7:node@c-6.me) 16416 | 16728096
+> [ 249.995700] (7:node@c-6.me) 81952 | 16728096
+> [ 249.995700] (7:node@c-6.me) 213024 | 16728096
+> [ 249.995700] (7:node@c-6.me) 475168 | 16728096
+> [ 249.995700] (7:node@c-6.me) 999456 | 16728096
+> [ 249.995700] (7:node@c-6.me) 2048032 | 16728096
+> [ 249.995700] (7:node@c-6.me) 4145184 | 16728096
+> [ 249.995700] (7:node@c-6.me) 8339488 | 16728096
+> [ 249.995700] (7:node@c-6.me) Predecessor: 2015253
+> [ 251.995700] (8:node@c-7.me) My finger table:
+> [ 251.995700] (8:node@c-7.me) Start | Succ
+> [ 251.995700] (8:node@c-7.me) 10004761 | 16509405
+> [ 251.995700] (8:node@c-7.me) 10004762 | 16509405
+> [ 251.995700] (8:node@c-7.me) 10004764 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004768 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004776 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004792 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004824 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10004888 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10005016 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10005272 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10005784 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10006808 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10008856 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10012952 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10021144 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10037528 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10070296 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10135832 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10266904 | 10004760
+> [ 251.995700] (8:node@c-7.me) 10529048 | 10004760
+> [ 251.995700] (8:node@c-7.me) 11053336 | 10004760
+> [ 251.995700] (8:node@c-7.me) 12101912 | 10004760
+> [ 251.995700] (8:node@c-7.me) 14199064 | 10004760
+> [ 251.995700] (8:node@c-7.me) 1616152 | 10004760
+> [ 251.995700] (8:node@c-7.me) Predecessor: 6518808
+> [ 252.995700] (2:node@c-1.me) My finger table:
+> [ 252.995700] (2:node@c-1.me) Start | Succ
+> [ 252.995700] (2:node@c-1.me) 366681 | 1319738
+> [ 252.995700] (2:node@c-1.me) 366682 | 1319738
+> [ 252.995700] (2:node@c-1.me) 366684 | 366680
+> [ 252.995700] (2:node@c-1.me) 366688 | 366680
+> [ 252.995700] (2:node@c-1.me) 366696 | 366680
+> [ 252.995700] (2:node@c-1.me) 366712 | 366680
+> [ 252.995700] (2:node@c-1.me) 366744 | 366680
+> [ 252.995700] (2:node@c-1.me) 366808 | 366680
+> [ 252.995700] (2:node@c-1.me) 366936 | 366680
+> [ 252.995700] (2:node@c-1.me) 367192 | 366680
+> [ 252.995700] (2:node@c-1.me) 367704 | 366680
+> [ 252.995700] (2:node@c-1.me) 368728 | 366680
+> [ 252.995700] (2:node@c-1.me) 370776 | 366680
+> [ 252.995700] (2:node@c-1.me) 374872 | 366680
+> [ 252.995700] (2:node@c-1.me) 383064 | 366680
+> [ 252.995700] (2:node@c-1.me) 399448 | 366680
+> [ 252.995700] (2:node@c-1.me) 432216 | 366680
+> [ 252.995700] (2:node@c-1.me) 497752 | 366680
+> [ 252.995700] (2:node@c-1.me) 628824 | 366680
+> [ 252.995700] (2:node@c-1.me) 890968 | 366680
+> [ 252.995700] (2:node@c-1.me) 1415256 | 366680
+> [ 252.995700] (2:node@c-1.me) 2463832 | 366680
+> [ 252.995700] (2:node@c-1.me) 4560984 | 366680
+> [ 252.995700] (2:node@c-1.me) 8755288 | 366680
+> [ 252.995700] (2:node@c-1.me) Predecessor: 42
+> [ 254.995700] (1:node@c-0.me) My finger table:
+> [ 254.995700] (1:node@c-0.me) Start | Succ
+> [ 254.995700] (1:node@c-0.me) 43 | 366680
+> [ 254.995700] (1:node@c-0.me) 44 | 42
+> [ 254.995700] (1:node@c-0.me) 46 | 42
+> [ 254.995700] (1:node@c-0.me) 50 | 42
+> [ 254.995700] (1:node@c-0.me) 58 | 42
+> [ 254.995700] (1:node@c-0.me) 74 | 42
+> [ 254.995700] (1:node@c-0.me) 106 | 42
+> [ 254.995700] (1:node@c-0.me) 170 | 42
+> [ 254.995700] (1:node@c-0.me) 298 | 42
+> [ 254.995700] (1:node@c-0.me) 554 | 42
+> [ 254.995700] (1:node@c-0.me) 1066 | 42
+> [ 254.995700] (1:node@c-0.me) 2090 | 42
+> [ 254.995700] (1:node@c-0.me) 4138 | 42
+> [ 254.995700] (1:node@c-0.me) 8234 | 42
+> [ 254.995700] (1:node@c-0.me) 16426 | 42
+> [ 254.995700] (1:node@c-0.me) 32810 | 42
+> [ 254.995700] (1:node@c-0.me) 65578 | 42
+> [ 254.995700] (1:node@c-0.me) 131114 | 42
+> [ 254.995700] (1:node@c-0.me) 262186 | 42
+> [ 254.995700] (1:node@c-0.me) 524330 | 42
+> [ 254.995700] (1:node@c-0.me) 1048618 | 42
+> [ 254.995700] (1:node@c-0.me) 2097194 | 42
+> [ 254.995700] (1:node@c-0.me) 4194346 | 42
+> [ 254.995700] (1:node@c-0.me) 8388650 | 42
+> [ 254.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 254.995700] (4:node@c-3.me) My finger table:
+> [ 254.995700] (4:node@c-3.me) Start | Succ
+> [ 254.995700] (4:node@c-3.me) 1319739 | 6518808
+> [ 254.995700] (4:node@c-3.me) 1319740 | 6518808
+> [ 254.995700] (4:node@c-3.me) 1319742 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319746 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319754 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319770 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319802 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319866 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1319994 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1320250 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1320762 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1321786 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1323834 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1327930 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1336122 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1352506 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1385274 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1450810 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1581882 | 1319738
+> [ 254.995700] (4:node@c-3.me) 1844026 | 1319738
+> [ 254.995700] (4:node@c-3.me) 2368314 | 1319738
+> [ 254.995700] (4:node@c-3.me) 3416890 | 1319738
+> [ 254.995700] (4:node@c-3.me) 5514042 | 1319738
+> [ 254.995700] (4:node@c-3.me) 9708346 | 1319738
+> [ 254.995700] (4:node@c-3.me) Predecessor: 366680
+> [ 255.995700] (1:node@c-0.me) My finger table:
+> [ 255.995700] (1:node@c-0.me) Start | Succ
+> [ 255.995700] (1:node@c-0.me) 43 | 366680
+> [ 255.995700] (1:node@c-0.me) 44 | 366680
+> [ 255.995700] (1:node@c-0.me) 46 | 42
+> [ 255.995700] (1:node@c-0.me) 50 | 42
+> [ 255.995700] (1:node@c-0.me) 58 | 42
+> [ 255.995700] (1:node@c-0.me) 74 | 42
+> [ 255.995700] (1:node@c-0.me) 106 | 42
+> [ 255.995700] (1:node@c-0.me) 170 | 42
+> [ 255.995700] (1:node@c-0.me) 298 | 42
+> [ 255.995700] (1:node@c-0.me) 554 | 42
+> [ 255.995700] (1:node@c-0.me) 1066 | 42
+> [ 255.995700] (1:node@c-0.me) 2090 | 42
+> [ 255.995700] (1:node@c-0.me) 4138 | 42
+> [ 255.995700] (1:node@c-0.me) 8234 | 42
+> [ 255.995700] (1:node@c-0.me) 16426 | 42
+> [ 255.995700] (1:node@c-0.me) 32810 | 42
+> [ 255.995700] (1:node@c-0.me) 65578 | 42
+> [ 255.995700] (1:node@c-0.me) 131114 | 42
+> [ 255.995700] (1:node@c-0.me) 262186 | 42
+> [ 255.995700] (1:node@c-0.me) 524330 | 42
+> [ 255.995700] (1:node@c-0.me) 1048618 | 42
+> [ 255.995700] (1:node@c-0.me) 2097194 | 42
+> [ 255.995700] (1:node@c-0.me) 4194346 | 42
+> [ 255.995700] (1:node@c-0.me) 8388650 | 42
+> [ 255.995700] (1:node@c-0.me) Predecessor: 16728096
+> [ 255.995700] (5:node@c-4.me) My finger table:
+> [ 255.995700] (5:node@c-4.me) Start | Succ
+> [ 255.995700] (5:node@c-4.me) 16509406 | 42
+> [ 255.995700] (5:node@c-4.me) 16509407 | 42
+> [ 255.995700] (5:node@c-4.me) 16509409 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509413 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509421 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509437 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509469 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509533 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509661 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16509917 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16510429 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16511453 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16513501 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16517597 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16525789 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16542173 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16574941 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16640477 | 16509405
+> [ 255.995700] (5:node@c-4.me) 16771549 | 16509405
+> [ 255.995700] (5:node@c-4.me) 256477 | 16509405
+> [ 255.995700] (5:node@c-4.me) 780765 | 16509405
+> [ 255.995700] (5:node@c-4.me) 1829341 | 16509405
+> [ 255.995700] (5:node@c-4.me) 3926493 | 16509405
+> [ 255.995700] (5:node@c-4.me) 8120797 | 16509405
+> [ 255.995700] (5:node@c-4.me) Predecessor: 10004760
+> [ 257.995700] (10:node@c-9.me) My finger table:
+> [ 257.995700] (10:node@c-9.me) Start | Succ
+> [ 257.995700] (10:node@c-9.me) 2015254 | 16728096
+> [ 257.995700] (10:node@c-9.me) 2015255 | 16728096
+> [ 257.995700] (10:node@c-9.me) 2015257 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015261 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015269 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015285 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015317 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015381 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015509 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2015765 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2016277 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2017301 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2019349 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2023445 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2031637 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2048021 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2080789 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2146325 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2277397 | 2015253
+> [ 257.995700] (10:node@c-9.me) 2539541 | 2015253
+> [ 257.995700] (10:node@c-9.me) 3063829 | 2015253
+> [ 257.995700] (10:node@c-9.me) 4112405 | 2015253
+> [ 257.995700] (10:node@c-9.me) 6209557 | 2015253
+> [ 257.995700] (10:node@c-9.me) 10403861 | 2015253
+> [ 257.995700] (10:node@c-9.me) Predecessor: -1
+> [ 263.995700] (3:node@c-2.me) My finger table:
+> [ 263.995700] (3:node@c-2.me) Start | Succ
+> [ 263.995700] (3:node@c-2.me) 533745 | 1319738
+> [ 263.995700] (3:node@c-2.me) 533746 | 1319738
+> [ 263.995700] (3:node@c-2.me) 533748 | 533744
+> [ 263.995700] (3:node@c-2.me) 533752 | 533744
+> [ 263.995700] (3:node@c-2.me) 533760 | 533744
+> [ 263.995700] (3:node@c-2.me) 533776 | 533744
+> [ 263.995700] (3:node@c-2.me) 533808 | 533744
+> [ 263.995700] (3:node@c-2.me) 533872 | 533744
+> [ 263.995700] (3:node@c-2.me) 534000 | 533744
+> [ 263.995700] (3:node@c-2.me) 534256 | 533744
+> [ 263.995700] (3:node@c-2.me) 534768 | 533744
+> [ 263.995700] (3:node@c-2.me) 535792 | 533744
+> [ 263.995700] (3:node@c-2.me) 537840 | 533744
+> [ 263.995700] (3:node@c-2.me) 541936 | 533744
+> [ 263.995700] (3:node@c-2.me) 550128 | 533744
+> [ 263.995700] (3:node@c-2.me) 566512 | 533744
+> [ 263.995700] (3:node@c-2.me) 599280 | 533744
+> [ 263.995700] (3:node@c-2.me) 664816 | 533744
+> [ 263.995700] (3:node@c-2.me) 795888 | 533744
+> [ 263.995700] (3:node@c-2.me) 1058032 | 533744
+> [ 263.995700] (3:node@c-2.me) 1582320 | 533744
+> [ 263.995700] (3:node@c-2.me) 2630896 | 533744
+> [ 263.995700] (3:node@c-2.me) 4728048 | 533744
+> [ 263.995700] (3:node@c-2.me) 8922352 | 533744
+> [ 263.995700] (3:node@c-2.me) Predecessor: 10874876
+> [ 264.995500] (9:node@c-8.me) My finger table:
+> [ 264.995500] (9:node@c-8.me) Start | Succ
+> [ 264.995500] (9:node@c-8.me) 6518809 | 10004760
+> [ 264.995500] (9:node@c-8.me) 6518810 | 10004760
+> [ 264.995500] (9:node@c-8.me) 6518812 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518816 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518824 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518840 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518872 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6518936 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6519064 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6519320 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6519832 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6520856 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6522904 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6527000 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6535192 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6551576 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6584344 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6649880 | 6518808
+> [ 264.995500] (9:node@c-8.me) 6780952 | 6518808
+> [ 264.995500] (9:node@c-8.me) 7043096 | 6518808
+> [ 264.995500] (9:node@c-8.me) 7567384 | 6518808
+> [ 264.995500] (9:node@c-8.me) 8615960 | 6518808
+> [ 264.995500] (9:node@c-8.me) 10713112 | 6518808
+> [ 264.995500] (9:node@c-8.me) 14907416 | 6518808
+> [ 264.995500] (9:node@c-8.me) Predecessor: 1319738
+> [ 310.994900] (4:node@c-3.me) My finger table:
+> [ 310.994900] (4:node@c-3.me) Start | Succ
+> [ 310.994900] (4:node@c-3.me) 1319739 | 6518808
+> [ 310.994900] (4:node@c-3.me) 1319740 | 6518808
+> [ 310.994900] (4:node@c-3.me) 1319742 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319746 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319754 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319770 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319802 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319866 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1319994 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1320250 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1320762 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1321786 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1323834 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1327930 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1336122 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1352506 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1385274 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1450810 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1581882 | 1319738
+> [ 310.994900] (4:node@c-3.me) 1844026 | 1319738
+> [ 310.994900] (4:node@c-3.me) 2368314 | 1319738
+> [ 310.994900] (4:node@c-3.me) 3416890 | 1319738
+> [ 310.994900] (4:node@c-3.me) 5514042 | 1319738
+> [ 310.994900] (4:node@c-3.me) 9708346 | 1319738
+> [ 310.994900] (4:node@c-3.me) Predecessor: 533744
+> [ 335.994500] (7:node@c-6.me) My finger table:
+> [ 335.994500] (7:node@c-6.me) Start | Succ
+> [ 335.994500] (7:node@c-6.me) 16728097 | 42
+> [ 335.994500] (7:node@c-6.me) 16728098 | 42
+> [ 335.994500] (7:node@c-6.me) 16728100 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728104 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728112 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728128 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728160 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728224 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728352 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16728608 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16729120 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16730144 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16732192 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16736288 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16744480 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16760864 | 16728096
+> [ 335.994500] (7:node@c-6.me) 16416 | 16728096
+> [ 335.994500] (7:node@c-6.me) 81952 | 16728096
+> [ 335.994500] (7:node@c-6.me) 213024 | 16728096
+> [ 335.994500] (7:node@c-6.me) 475168 | 16728096
+> [ 335.994500] (7:node@c-6.me) 999456 | 16728096
+> [ 335.994500] (7:node@c-6.me) 2048032 | 16728096
+> [ 335.994500] (7:node@c-6.me) 4145184 | 16728096
+> [ 335.994500] (7:node@c-6.me) 8339488 | 16728096
+> [ 335.994500] (7:node@c-6.me) Predecessor: 16509405
+> [ 366.994000] (3:node@c-2.me) My finger table:
+> [ 366.994000] (3:node@c-2.me) Start | Succ
+> [ 366.994000] (3:node@c-2.me) 533745 | 1319738
+> [ 366.994000] (3:node@c-2.me) 533746 | 1319738
+> [ 366.994000] (3:node@c-2.me) 533748 | 533744
+> [ 366.994000] (3:node@c-2.me) 533752 | 533744
+> [ 366.994000] (3:node@c-2.me) 533760 | 533744
+> [ 366.994000] (3:node@c-2.me) 533776 | 533744
+> [ 366.994000] (3:node@c-2.me) 533808 | 533744
+> [ 366.994000] (3:node@c-2.me) 533872 | 533744
+> [ 366.994000] (3:node@c-2.me) 534000 | 533744
+> [ 366.994000] (3:node@c-2.me) 534256 | 533744
+> [ 366.994000] (3:node@c-2.me) 534768 | 533744
+> [ 366.994000] (3:node@c-2.me) 535792 | 533744
+> [ 366.994000] (3:node@c-2.me) 537840 | 533744
+> [ 366.994000] (3:node@c-2.me) 541936 | 533744
+> [ 366.994000] (3:node@c-2.me) 550128 | 533744
+> [ 366.994000] (3:node@c-2.me) 566512 | 533744
+> [ 366.994000] (3:node@c-2.me) 599280 | 533744
+> [ 366.994000] (3:node@c-2.me) 664816 | 533744
+> [ 366.994000] (3:node@c-2.me) 795888 | 533744
+> [ 366.994000] (3:node@c-2.me) 1058032 | 533744
+> [ 366.994000] (3:node@c-2.me) 1582320 | 533744
+> [ 366.994000] (3:node@c-2.me) 2630896 | 533744
+> [ 366.994000] (3:node@c-2.me) 4728048 | 533744
+> [ 366.994000] (3:node@c-2.me) 8922352 | 533744
+> [ 366.994000] (3:node@c-2.me) Predecessor: 366680
+> [ 370.993500] (6:node@c-5.me) My finger table:
+> [ 370.993500] (6:node@c-5.me) Start | Succ
+> [ 370.993500] (6:node@c-5.me) 10874877 | 533744
+> [ 370.993500] (6:node@c-5.me) 10874878 | 533744
+> [ 370.993500] (6:node@c-5.me) 10874880 | 533744
+> [ 370.993500] (6:node@c-5.me) 10874884 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10874892 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10874908 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10874940 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875004 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875132 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875388 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10875900 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10876924 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10878972 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10883068 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10891260 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10907644 | 10874876
+> [ 370.993500] (6:node@c-5.me) 10940412 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11005948 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11137020 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11399164 | 10874876
+> [ 370.993500] (6:node@c-5.me) 11923452 | 10874876
+> [ 370.993500] (6:node@c-5.me) 12972028 | 10874876
+> [ 370.993500] (6:node@c-5.me) 15069180 | 10874876
+> [ 370.993500] (6:node@c-5.me) 2486268 | 10874876
+> [ 370.993500] (6:node@c-5.me) Predecessor: -1
+> [ 375.993800] (2:node@c-1.me) My finger table:
+> [ 375.993800] (2:node@c-1.me) Start | Succ
+> [ 375.993800] (2:node@c-1.me) 366681 | 533744
+> [ 375.993800] (2:node@c-1.me) 366682 | 1319738
+> [ 375.993800] (2:node@c-1.me) 366684 | 533744
+> [ 375.993800] (2:node@c-1.me) 366688 | 366680
+> [ 375.993800] (2:node@c-1.me) 366696 | 366680
+> [ 375.993800] (2:node@c-1.me) 366712 | 366680
+> [ 375.993800] (2:node@c-1.me) 366744 | 366680
+> [ 375.993800] (2:node@c-1.me) 366808 | 366680
+> [ 375.993800] (2:node@c-1.me) 366936 | 366680
+> [ 375.993800] (2:node@c-1.me) 367192 | 366680
+> [ 375.993800] (2:node@c-1.me) 367704 | 366680
+> [ 375.993800] (2:node@c-1.me) 368728 | 366680
+> [ 375.993800] (2:node@c-1.me) 370776 | 366680
+> [ 375.993800] (2:node@c-1.me) 374872 | 366680
+> [ 375.993800] (2:node@c-1.me) 383064 | 366680
+> [ 375.993800] (2:node@c-1.me) 399448 | 366680
+> [ 375.993800] (2:node@c-1.me) 432216 | 366680
+> [ 375.993800] (2:node@c-1.me) 497752 | 366680
+> [ 375.993800] (2:node@c-1.me) 628824 | 366680
+> [ 375.993800] (2:node@c-1.me) 890968 | 366680
+> [ 375.993800] (2:node@c-1.me) 1415256 | 366680
+> [ 375.993800] (2:node@c-1.me) 2463832 | 366680
+> [ 375.993800] (2:node@c-1.me) 4560984 | 366680
+> [ 375.993800] (2:node@c-1.me) 8755288 | 366680
+> [ 375.993800] (2:node@c-1.me) Predecessor: 42
+> [ 376.993800] (1:node@c-0.me) My finger table:
+> [ 376.993800] (1:node@c-0.me) Start | Succ
+> [ 376.993800] (1:node@c-0.me) 43 | 366680
+> [ 376.993800] (1:node@c-0.me) 44 | 366680
+> [ 376.993800] (1:node@c-0.me) 46 | 366680
+> [ 376.993800] (1:node@c-0.me) 50 | 42
+> [ 376.993800] (1:node@c-0.me) 58 | 42
+> [ 376.993800] (1:node@c-0.me) 74 | 42
+> [ 376.993800] (1:node@c-0.me) 106 | 42
+> [ 376.993800] (1:node@c-0.me) 170 | 42
+> [ 376.993800] (1:node@c-0.me) 298 | 42
+> [ 376.993800] (1:node@c-0.me) 554 | 42
+> [ 376.993800] (1:node@c-0.me) 1066 | 42
+> [ 376.993800] (1:node@c-0.me) 2090 | 42
+> [ 376.993800] (1:node@c-0.me) 4138 | 42
+> [ 376.993800] (1:node@c-0.me) 8234 | 42
+> [ 376.993800] (1:node@c-0.me) 16426 | 42
+> [ 376.993800] (1:node@c-0.me) 32810 | 42
+> [ 376.993800] (1:node@c-0.me) 65578 | 42
+> [ 376.993800] (1:node@c-0.me) 131114 | 42
+> [ 376.993800] (1:node@c-0.me) 262186 | 42
+> [ 376.993800] (1:node@c-0.me) 524330 | 42
+> [ 376.993800] (1:node@c-0.me) 1048618 | 42
+> [ 376.993800] (1:node@c-0.me) 2097194 | 42
+> [ 376.993800] (1:node@c-0.me) 4194346 | 42
+> [ 376.993800] (1:node@c-0.me) 8388650 | 42
+> [ 376.993800] (1:node@c-0.me) Predecessor: 16728096
+> [ 376.993800] (4:node@c-3.me) My finger table:
+> [ 376.993800] (4:node@c-3.me) Start | Succ
+> [ 376.993800] (4:node@c-3.me) 1319739 | 6518808
+> [ 376.993800] (4:node@c-3.me) 1319740 | 6518808
+> [ 376.993800] (4:node@c-3.me) 1319742 | 6518808
+> [ 376.993800] (4:node@c-3.me) 1319746 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319754 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319770 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319802 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319866 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1319994 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1320250 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1320762 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1321786 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1323834 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1327930 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1336122 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1352506 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1385274 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1450810 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1581882 | 1319738
+> [ 376.993800] (4:node@c-3.me) 1844026 | 1319738
+> [ 376.993800] (4:node@c-3.me) 2368314 | 1319738
+> [ 376.993800] (4:node@c-3.me) 3416890 | 1319738
+> [ 376.993800] (4:node@c-3.me) 5514042 | 1319738
+> [ 376.993800] (4:node@c-3.me) 9708346 | 1319738
+> [ 376.993800] (4:node@c-3.me) Predecessor: 533744
+> [ 378.993800] (10:node@c-9.me) My finger table:
+> [ 378.993800] (10:node@c-9.me) Start | Succ
+> [ 378.993800] (10:node@c-9.me) 2015254 | 10004760
+> [ 378.993800] (10:node@c-9.me) 2015255 | 16728096
+> [ 378.993800] (10:node@c-9.me) 2015257 | 10004760
+> [ 378.993800] (10:node@c-9.me) 2015261 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015269 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015285 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015317 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015381 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015509 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2015765 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2016277 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2017301 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2019349 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2023445 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2031637 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2048021 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2080789 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2146325 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2277397 | 2015253
+> [ 378.993800] (10:node@c-9.me) 2539541 | 2015253
+> [ 378.993800] (10:node@c-9.me) 3063829 | 2015253
+> [ 378.993800] (10:node@c-9.me) 4112405 | 2015253
+> [ 378.993800] (10:node@c-9.me) 6209557 | 2015253
+> [ 378.993800] (10:node@c-9.me) 10403861 | 2015253
+> [ 378.993800] (10:node@c-9.me) Predecessor: -1
+> [ 378.993800] (5:node@c-4.me) My finger table:
+> [ 378.993800] (5:node@c-4.me) Start | Succ
+> [ 378.993800] (5:node@c-4.me) 16509406 | 16728096
+> [ 378.993800] (5:node@c-4.me) 16509407 | 42
+> [ 378.993800] (5:node@c-4.me) 16509409 | 16728096
+> [ 378.993800] (5:node@c-4.me) 16509413 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509421 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509437 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509469 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509533 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509661 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16509917 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16510429 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16511453 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16513501 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16517597 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16525789 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16542173 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16574941 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16640477 | 16509405
+> [ 378.993800] (5:node@c-4.me) 16771549 | 16509405
+> [ 378.993800] (5:node@c-4.me) 256477 | 16509405
+> [ 378.993800] (5:node@c-4.me) 780765 | 16509405
+> [ 378.993800] (5:node@c-4.me) 1829341 | 16509405
+> [ 378.993800] (5:node@c-4.me) 3926493 | 16509405
+> [ 378.993800] (5:node@c-4.me) 8120797 | 16509405
+> [ 378.993800] (5:node@c-4.me) Predecessor: 10004760
+> [ 379.993800] (8:node@c-7.me) My finger table:
+> [ 379.993800] (8:node@c-7.me) Start | Succ
+> [ 379.993800] (8:node@c-7.me) 10004761 | 16509405
+> [ 379.993800] (8:node@c-7.me) 10004762 | 16509405
+> [ 379.993800] (8:node@c-7.me) 10004764 | 16509405
+> [ 379.993800] (8:node@c-7.me) 10004768 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004776 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004792 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004824 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10004888 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10005016 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10005272 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10005784 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10006808 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10008856 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10012952 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10021144 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10037528 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10070296 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10135832 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10266904 | 10004760
+> [ 379.993800] (8:node@c-7.me) 10529048 | 10004760
+> [ 379.993800] (8:node@c-7.me) 11053336 | 10004760
+> [ 379.993800] (8:node@c-7.me) 12101912 | 10004760
+> [ 379.993800] (8:node@c-7.me) 14199064 | 10004760
+> [ 379.993800] (8:node@c-7.me) 1616152 | 10004760
+> [ 379.993800] (8:node@c-7.me) Predecessor: 6518808
+> [ 385.993700] (3:node@c-2.me) My finger table:
+> [ 385.993700] (3:node@c-2.me) Start | Succ
+> [ 385.993700] (3:node@c-2.me) 533745 | 1319738
+> [ 385.993700] (3:node@c-2.me) 533746 | 1319738
+> [ 385.993700] (3:node@c-2.me) 533748 | 1319738
+> [ 385.993700] (3:node@c-2.me) 533752 | 533744
+> [ 385.993700] (3:node@c-2.me) 533760 | 533744
+> [ 385.993700] (3:node@c-2.me) 533776 | 533744
+> [ 385.993700] (3:node@c-2.me) 533808 | 533744
+> [ 385.993700] (3:node@c-2.me) 533872 | 533744
+> [ 385.993700] (3:node@c-2.me) 534000 | 533744
+> [ 385.993700] (3:node@c-2.me) 534256 | 533744
+> [ 385.993700] (3:node@c-2.me) 534768 | 533744
+> [ 385.993700] (3:node@c-2.me) 535792 | 533744
+> [ 385.993700] (3:node@c-2.me) 537840 | 533744
+> [ 385.993700] (3:node@c-2.me) 541936 | 533744
+> [ 385.993700] (3:node@c-2.me) 550128 | 533744
+> [ 385.993700] (3:node@c-2.me) 566512 | 533744
+> [ 385.993700] (3:node@c-2.me) 599280 | 533744
+> [ 385.993700] (3:node@c-2.me) 664816 | 533744
+> [ 385.993700] (3:node@c-2.me) 795888 | 533744
+> [ 385.993700] (3:node@c-2.me) 1058032 | 533744
+> [ 385.993700] (3:node@c-2.me) 1582320 | 533744
+> [ 385.993700] (3:node@c-2.me) 2630896 | 533744
+> [ 385.993700] (3:node@c-2.me) 4728048 | 533744
+> [ 385.993700] (3:node@c-2.me) 8922352 | 533744
+> [ 385.993700] (3:node@c-2.me) Predecessor: 366680
+> [ 387.993700] (7:node@c-6.me) My finger table:
+> [ 387.993700] (7:node@c-6.me) Start | Succ
+> [ 387.993700] (7:node@c-6.me) 16728097 | 42
+> [ 387.993700] (7:node@c-6.me) 16728098 | 42
+> [ 387.993700] (7:node@c-6.me) 16728100 | 42
+> [ 387.993700] (7:node@c-6.me) 16728104 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728112 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728128 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728160 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728224 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728352 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16728608 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16729120 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16730144 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16732192 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16736288 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16744480 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16760864 | 16728096
+> [ 387.993700] (7:node@c-6.me) 16416 | 16728096
+> [ 387.993700] (7:node@c-6.me) 81952 | 16728096
+> [ 387.993700] (7:node@c-6.me) 213024 | 16728096
+> [ 387.993700] (7:node@c-6.me) 475168 | 16728096
+> [ 387.993700] (7:node@c-6.me) 999456 | 16728096
+> [ 387.993700] (7:node@c-6.me) 2048032 | 16728096
+> [ 387.993700] (7:node@c-6.me) 4145184 | 16728096
+> [ 387.993700] (7:node@c-6.me) 8339488 | 16728096
+> [ 387.993700] (7:node@c-6.me) Predecessor: 16509405
+> [ 389.993600] (9:node@c-8.me) My finger table:
+> [ 389.993600] (9:node@c-8.me) Start | Succ
+> [ 389.993600] (9:node@c-8.me) 6518809 | 10004760
+> [ 389.993600] (9:node@c-8.me) 6518810 | 10004760
+> [ 389.993600] (9:node@c-8.me) 6518812 | 10004760
+> [ 389.993600] (9:node@c-8.me) 6518816 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518824 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518840 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518872 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6518936 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6519064 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6519320 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6519832 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6520856 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6522904 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6527000 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6535192 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6551576 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6584344 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6649880 | 6518808
+> [ 389.993600] (9:node@c-8.me) 6780952 | 6518808
+> [ 389.993600] (9:node@c-8.me) 7043096 | 6518808
+> [ 389.993600] (9:node@c-8.me) 7567384 | 6518808
+> [ 389.993600] (9:node@c-8.me) 8615960 | 6518808
+> [ 389.993600] (9:node@c-8.me) 10713112 | 6518808
+> [ 389.993600] (9:node@c-8.me) 14907416 | 6518808
+> [ 389.993600] (9:node@c-8.me) Predecessor: 1319738
+> [ 435.993000] (9:node@c-8.me) My finger table:
+> [ 435.993000] (9:node@c-8.me) Start | Succ
+> [ 435.993000] (9:node@c-8.me) 6518809 | 10004760
+> [ 435.993000] (9:node@c-8.me) 6518810 | 10004760
+> [ 435.993000] (9:node@c-8.me) 6518812 | 10004760
+> [ 435.993000] (9:node@c-8.me) 6518816 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518824 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518840 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518872 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6518936 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6519064 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6519320 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6519832 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6520856 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6522904 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6527000 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6535192 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6551576 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6584344 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6649880 | 6518808
+> [ 435.993000] (9:node@c-8.me) 6780952 | 6518808
+> [ 435.993000] (9:node@c-8.me) 7043096 | 6518808
+> [ 435.993000] (9:node@c-8.me) 7567384 | 6518808
+> [ 435.993000] (9:node@c-8.me) 8615960 | 6518808
+> [ 435.993000] (9:node@c-8.me) 10713112 | 6518808
+> [ 435.993000] (9:node@c-8.me) 14907416 | 6518808
+> [ 435.993000] (9:node@c-8.me) Predecessor: 2015253
+> [ 492.992000] (6:node@c-5.me) My finger table:
+> [ 492.992000] (6:node@c-5.me) Start | Succ
+> [ 492.992000] (6:node@c-5.me) 10874877 | 16509405
+> [ 492.992000] (6:node@c-5.me) 10874878 | 533744
+> [ 492.992000] (6:node@c-5.me) 10874880 | 533744
+> [ 492.992000] (6:node@c-5.me) 10874884 | 16509405
+> [ 492.992000] (6:node@c-5.me) 10874892 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10874908 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10874940 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875004 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875132 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875388 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10875900 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10876924 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10878972 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10883068 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10891260 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10907644 | 10874876
+> [ 492.992000] (6:node@c-5.me) 10940412 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11005948 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11137020 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11399164 | 10874876
+> [ 492.992000] (6:node@c-5.me) 11923452 | 10874876
+> [ 492.992000] (6:node@c-5.me) 12972028 | 10874876
+> [ 492.992000] (6:node@c-5.me) 15069180 | 10874876
+> [ 492.992000] (6:node@c-5.me) 2486268 | 10874876
+> [ 492.992000] (6:node@c-5.me) Predecessor: -1
+> [ 500.991800] (1:node@c-0.me) My finger table:
+> [ 500.991800] (1:node@c-0.me) Start | Succ
+> [ 500.991800] (1:node@c-0.me) 43 | 366680
+> [ 500.991800] (1:node@c-0.me) 44 | 366680
+> [ 500.991800] (1:node@c-0.me) 46 | 366680
+> [ 500.991800] (1:node@c-0.me) 50 | 366680
+> [ 500.991800] (1:node@c-0.me) 58 | 42
+> [ 500.991800] (1:node@c-0.me) 74 | 42
+> [ 500.991800] (1:node@c-0.me) 106 | 42
+> [ 500.991800] (1:node@c-0.me) 170 | 42
+> [ 500.991800] (1:node@c-0.me) 298 | 42
+> [ 500.991800] (1:node@c-0.me) 554 | 42
+> [ 500.991800] (1:node@c-0.me) 1066 | 42
+> [ 500.991800] (1:node@c-0.me) 2090 | 42
+> [ 500.991800] (1:node@c-0.me) 4138 | 42
+> [ 500.991800] (1:node@c-0.me) 8234 | 42
+> [ 500.991800] (1:node@c-0.me) 16426 | 42
+> [ 500.991800] (1:node@c-0.me) 32810 | 42
+> [ 500.991800] (1:node@c-0.me) 65578 | 42
+> [ 500.991800] (1:node@c-0.me) 131114 | 42
+> [ 500.991800] (1:node@c-0.me) 262186 | 42
+> [ 500.991800] (1:node@c-0.me) 524330 | 42
+> [ 500.991800] (1:node@c-0.me) 1048618 | 42
+> [ 500.991800] (1:node@c-0.me) 2097194 | 42
+> [ 500.991800] (1:node@c-0.me) 4194346 | 42
+> [ 500.991800] (1:node@c-0.me) 8388650 | 42
+> [ 500.991800] (1:node@c-0.me) Predecessor: 16728096
+> [ 504.991900] (5:node@c-4.me) My finger table:
+> [ 504.991900] (5:node@c-4.me) Start | Succ
+> [ 504.991900] (5:node@c-4.me) 16509406 | 16728096
+> [ 504.991900] (5:node@c-4.me) 16509407 | 42
+> [ 504.991900] (5:node@c-4.me) 16509409 | 16728096
+> [ 504.991900] (5:node@c-4.me) 16509413 | 16728096
+> [ 504.991900] (5:node@c-4.me) 16509421 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509437 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509469 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509533 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509661 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16509917 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16510429 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16511453 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16513501 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16517597 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16525789 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16542173 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16574941 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16640477 | 16509405
+> [ 504.991900] (5:node@c-4.me) 16771549 | 16509405
+> [ 504.991900] (5:node@c-4.me) 256477 | 16509405
+> [ 504.991900] (5:node@c-4.me) 780765 | 16509405
+> [ 504.991900] (5:node@c-4.me) 1829341 | 16509405
+> [ 504.991900] (5:node@c-4.me) 3926493 | 16509405
+> [ 504.991900] (5:node@c-4.me) 8120797 | 16509405
+> [ 504.991900] (5:node@c-4.me) Predecessor: 10004760
+> [ 508.991700] (4:node@c-3.me) My finger table:
+> [ 508.991700] (4:node@c-3.me) Start | Succ
+> [ 508.991700] (4:node@c-3.me) 1319739 | 2015253
+> [ 508.991700] (4:node@c-3.me) 1319740 | 6518808
+> [ 508.991700] (4:node@c-3.me) 1319742 | 6518808
+> [ 508.991700] (4:node@c-3.me) 1319746 | 2015253
+> [ 508.991700] (4:node@c-3.me) 1319754 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319770 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319802 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319866 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1319994 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1320250 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1320762 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1321786 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1323834 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1327930 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1336122 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1352506 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1385274 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1450810 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1581882 | 1319738
+> [ 508.991700] (4:node@c-3.me) 1844026 | 1319738
+> [ 508.991700] (4:node@c-3.me) 2368314 | 1319738
+> [ 508.991700] (4:node@c-3.me) 3416890 | 1319738
+> [ 508.991700] (4:node@c-3.me) 5514042 | 1319738
+> [ 508.991700] (4:node@c-3.me) 9708346 | 1319738
+> [ 508.991700] (4:node@c-3.me) Predecessor: 533744
+> [ 509.991700] (10:node@c-9.me) My finger table:
+> [ 509.991700] (10:node@c-9.me) Start | Succ
+> [ 509.991700] (10:node@c-9.me) 2015254 | 6518808
+> [ 509.991700] (10:node@c-9.me) 2015255 | 16728096
+> [ 509.991700] (10:node@c-9.me) 2015257 | 10004760
+> [ 509.991700] (10:node@c-9.me) 2015261 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015269 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015285 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015317 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015381 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015509 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2015765 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2016277 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2017301 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2019349 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2023445 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2031637 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2048021 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2080789 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2146325 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2277397 | 2015253
+> [ 509.991700] (10:node@c-9.me) 2539541 | 2015253
+> [ 509.991700] (10:node@c-9.me) 3063829 | 2015253
+> [ 509.991700] (10:node@c-9.me) 4112405 | 2015253
+> [ 509.991700] (10:node@c-9.me) 6209557 | 2015253
+> [ 509.991700] (10:node@c-9.me) 10403861 | 2015253
+> [ 509.991700] (10:node@c-9.me) Predecessor: 1319738
+> [ 513.991600] (2:node@c-1.me) My finger table:
+> [ 513.991600] (2:node@c-1.me) Start | Succ
+> [ 513.991600] (2:node@c-1.me) 366681 | 533744
+> [ 513.991600] (2:node@c-1.me) 366682 | 1319738
+> [ 513.991600] (2:node@c-1.me) 366684 | 533744
+> [ 513.991600] (2:node@c-1.me) 366688 | 533744
+> [ 513.991600] (2:node@c-1.me) 366696 | 366680
+> [ 513.991600] (2:node@c-1.me) 366712 | 366680
+> [ 513.991600] (2:node@c-1.me) 366744 | 366680
+> [ 513.991600] (2:node@c-1.me) 366808 | 366680
+> [ 513.991600] (2:node@c-1.me) 366936 | 366680
+> [ 513.991600] (2:node@c-1.me) 367192 | 366680
+> [ 513.991600] (2:node@c-1.me) 367704 | 366680
+> [ 513.991600] (2:node@c-1.me) 368728 | 366680
+> [ 513.991600] (2:node@c-1.me) 370776 | 366680
+> [ 513.991600] (2:node@c-1.me) 374872 | 366680
+> [ 513.991600] (2:node@c-1.me) 383064 | 366680
+> [ 513.991600] (2:node@c-1.me) 399448 | 366680
+> [ 513.991600] (2:node@c-1.me) 432216 | 366680
+> [ 513.991600] (2:node@c-1.me) 497752 | 366680
+> [ 513.991600] (2:node@c-1.me) 628824 | 366680
+> [ 513.991600] (2:node@c-1.me) 890968 | 366680
+> [ 513.991600] (2:node@c-1.me) 1415256 | 366680
+> [ 513.991600] (2:node@c-1.me) 2463832 | 366680
+> [ 513.991600] (2:node@c-1.me) 4560984 | 366680
+> [ 513.991600] (2:node@c-1.me) 8755288 | 366680
+> [ 513.991600] (2:node@c-1.me) Predecessor: 42
+> [ 516.991600] (10:node@c-9.me) My finger table:
+> [ 516.991600] (10:node@c-9.me) Start | Succ
+> [ 516.991600] (10:node@c-9.me) 2015254 | 6518808
+> [ 516.991600] (10:node@c-9.me) 2015255 | 16728096
+> [ 516.991600] (10:node@c-9.me) 2015257 | 10004760
+> [ 516.991600] (10:node@c-9.me) 2015261 | 6518808
+> [ 516.991600] (10:node@c-9.me) 2015269 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015285 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015317 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015381 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015509 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2015765 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2016277 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2017301 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2019349 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2023445 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2031637 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2048021 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2080789 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2146325 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2277397 | 2015253
+> [ 516.991600] (10:node@c-9.me) 2539541 | 2015253
+> [ 516.991600] (10:node@c-9.me) 3063829 | 2015253
+> [ 516.991600] (10:node@c-9.me) 4112405 | 2015253
+> [ 516.991600] (10:node@c-9.me) 6209557 | 2015253
+> [ 516.991600] (10:node@c-9.me) 10403861 | 2015253
+> [ 516.991600] (10:node@c-9.me) Predecessor: 1319738
+> [ 516.991600] (3:node@c-2.me) My finger table:
+> [ 516.991600] (3:node@c-2.me) Start | Succ
+> [ 516.991600] (3:node@c-2.me) 533745 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533746 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533748 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533752 | 1319738
+> [ 516.991600] (3:node@c-2.me) 533760 | 533744
+> [ 516.991600] (3:node@c-2.me) 533776 | 533744
+> [ 516.991600] (3:node@c-2.me) 533808 | 533744
+> [ 516.991600] (3:node@c-2.me) 533872 | 533744
+> [ 516.991600] (3:node@c-2.me) 534000 | 533744
+> [ 516.991600] (3:node@c-2.me) 534256 | 533744
+> [ 516.991600] (3:node@c-2.me) 534768 | 533744
+> [ 516.991600] (3:node@c-2.me) 535792 | 533744
+> [ 516.991600] (3:node@c-2.me) 537840 | 533744
+> [ 516.991600] (3:node@c-2.me) 541936 | 533744
+> [ 516.991600] (3:node@c-2.me) 550128 | 533744
+> [ 516.991600] (3:node@c-2.me) 566512 | 533744
+> [ 516.991600] (3:node@c-2.me) 599280 | 533744
+> [ 516.991600] (3:node@c-2.me) 664816 | 533744
+> [ 516.991600] (3:node@c-2.me) 795888 | 533744
+> [ 516.991600] (3:node@c-2.me) 1058032 | 533744
+> [ 516.991600] (3:node@c-2.me) 1582320 | 533744
+> [ 516.991600] (3:node@c-2.me) 2630896 | 533744
+> [ 516.991600] (3:node@c-2.me) 4728048 | 533744
+> [ 516.991600] (3:node@c-2.me) 8922352 | 533744
+> [ 516.991600] (3:node@c-2.me) Predecessor: 366680
+> [ 519.991600] (7:node@c-6.me) My finger table:
+> [ 519.991600] (7:node@c-6.me) Start | Succ
+> [ 519.991600] (7:node@c-6.me) 16728097 | 42
+> [ 519.991600] (7:node@c-6.me) 16728098 | 42
+> [ 519.991600] (7:node@c-6.me) 16728100 | 42
+> [ 519.991600] (7:node@c-6.me) 16728104 | 42
+> [ 519.991600] (7:node@c-6.me) 16728112 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728128 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728160 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728224 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728352 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16728608 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16729120 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16730144 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16732192 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16736288 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16744480 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16760864 | 16728096
+> [ 519.991600] (7:node@c-6.me) 16416 | 16728096
+> [ 519.991600] (7:node@c-6.me) 81952 | 16728096
+> [ 519.991600] (7:node@c-6.me) 213024 | 16728096
+> [ 519.991600] (7:node@c-6.me) 475168 | 16728096
+> [ 519.991600] (7:node@c-6.me) 999456 | 16728096
+> [ 519.991600] (7:node@c-6.me) 2048032 | 16728096
+> [ 519.991600] (7:node@c-6.me) 4145184 | 16728096
+> [ 519.991600] (7:node@c-6.me) 8339488 | 16728096
+> [ 519.991600] (7:node@c-6.me) Predecessor: 16509405
+> [ 524.991500] (8:node@c-7.me) My finger table:
+> [ 524.991500] (8:node@c-7.me) Start | Succ
+> [ 524.991500] (8:node@c-7.me) 10004761 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004762 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004764 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004768 | 16509405
+> [ 524.991500] (8:node@c-7.me) 10004776 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10004792 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10004824 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10004888 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10005016 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10005272 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10005784 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10006808 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10008856 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10012952 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10021144 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10037528 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10070296 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10135832 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10266904 | 10004760
+> [ 524.991500] (8:node@c-7.me) 10529048 | 10004760
+> [ 524.991500] (8:node@c-7.me) 11053336 | 10004760
+> [ 524.991500] (8:node@c-7.me) 12101912 | 10004760
+> [ 524.991500] (8:node@c-7.me) 14199064 | 10004760
+> [ 524.991500] (8:node@c-7.me) 1616152 | 10004760
+> [ 524.991500] (8:node@c-7.me) Predecessor: 6518808
+> [ 529.991500] (5:node@c-4.me) My finger table:
+> [ 529.991500] (5:node@c-4.me) Start | Succ
+> [ 529.991500] (5:node@c-4.me) 16509406 | 16728096
+> [ 529.991500] (5:node@c-4.me) 16509407 | 42
+> [ 529.991500] (5:node@c-4.me) 16509409 | 16728096
+> [ 529.991500] (5:node@c-4.me) 16509413 | 16728096
+> [ 529.991500] (5:node@c-4.me) 16509421 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509437 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509469 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509533 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509661 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16509917 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16510429 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16511453 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16513501 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16517597 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16525789 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16542173 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16574941 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16640477 | 16509405
+> [ 529.991500] (5:node@c-4.me) 16771549 | 16509405
+> [ 529.991500] (5:node@c-4.me) 256477 | 16509405
+> [ 529.991500] (5:node@c-4.me) 780765 | 16509405
+> [ 529.991500] (5:node@c-4.me) 1829341 | 16509405
+> [ 529.991500] (5:node@c-4.me) 3926493 | 16509405
+> [ 529.991500] (5:node@c-4.me) 8120797 | 16509405
+> [ 529.991500] (5:node@c-4.me) Predecessor: 10874876
+> [ 540.991400] (9:node@c-8.me) My finger table:
+> [ 540.991400] (9:node@c-8.me) Start | Succ
+> [ 540.991400] (9:node@c-8.me) 6518809 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518810 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518812 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518816 | 10004760
+> [ 540.991400] (9:node@c-8.me) 6518824 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6518840 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6518872 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6518936 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6519064 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6519320 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6519832 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6520856 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6522904 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6527000 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6535192 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6551576 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6584344 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6649880 | 6518808
+> [ 540.991400] (9:node@c-8.me) 6780952 | 6518808
+> [ 540.991400] (9:node@c-8.me) 7043096 | 6518808
+> [ 540.991400] (9:node@c-8.me) 7567384 | 6518808
+> [ 540.991400] (9:node@c-8.me) 8615960 | 6518808
+> [ 540.991400] (9:node@c-8.me) 10713112 | 6518808
+> [ 540.991400] (9:node@c-8.me) 14907416 | 6518808
+> [ 540.991400] (9:node@c-8.me) Predecessor: 2015253
+> [ 613.990100] (6:node@c-5.me) My finger table:
+> [ 613.990100] (6:node@c-5.me) Start | Succ
+> [ 613.990100] (6:node@c-5.me) 10874877 | 16509405
+> [ 613.990100] (6:node@c-5.me) 10874878 | 533744
+> [ 613.990100] (6:node@c-5.me) 10874880 | 533744
+> [ 613.990100] (6:node@c-5.me) 10874884 | 16509405
+> [ 613.990100] (6:node@c-5.me) 10874892 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10874908 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10874940 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875004 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875132 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875388 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10875900 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10876924 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10878972 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10883068 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10891260 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10907644 | 10874876
+> [ 613.990100] (6:node@c-5.me) 10940412 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11005948 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11137020 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11399164 | 10874876
+> [ 613.990100] (6:node@c-5.me) 11923452 | 10874876
+> [ 613.990100] (6:node@c-5.me) 12972028 | 10874876
+> [ 613.990100] (6:node@c-5.me) 15069180 | 10874876
+> [ 613.990100] (6:node@c-5.me) 2486268 | 10874876
+> [ 613.990100] (6:node@c-5.me) Predecessor: 10004760
+> [ 629.989800] (1:node@c-0.me) My finger table:
+> [ 629.989800] (1:node@c-0.me) Start | Succ
+> [ 629.989800] (1:node@c-0.me) 43 | 366680
+> [ 629.989800] (1:node@c-0.me) 44 | 366680
+> [ 629.989800] (1:node@c-0.me) 46 | 366680
+> [ 629.989800] (1:node@c-0.me) 50 | 366680
+> [ 629.989800] (1:node@c-0.me) 58 | 366680
+> [ 629.989800] (1:node@c-0.me) 74 | 42
+> [ 629.989800] (1:node@c-0.me) 106 | 42
+> [ 629.989800] (1:node@c-0.me) 170 | 42
+> [ 629.989800] (1:node@c-0.me) 298 | 42
+> [ 629.989800] (1:node@c-0.me) 554 | 42
+> [ 629.989800] (1:node@c-0.me) 1066 | 42
+> [ 629.989800] (1:node@c-0.me) 2090 | 42
+> [ 629.989800] (1:node@c-0.me) 4138 | 42
+> [ 629.989800] (1:node@c-0.me) 8234 | 42
+> [ 629.989800] (1:node@c-0.me) 16426 | 42
+> [ 629.989800] (1:node@c-0.me) 32810 | 42
+> [ 629.989800] (1:node@c-0.me) 65578 | 42
+> [ 629.989800] (1:node@c-0.me) 131114 | 42
+> [ 629.989800] (1:node@c-0.me) 262186 | 42
+> [ 629.989800] (1:node@c-0.me) 524330 | 42
+> [ 629.989800] (1:node@c-0.me) 1048618 | 42
+> [ 629.989800] (1:node@c-0.me) 2097194 | 42
+> [ 629.989800] (1:node@c-0.me) 4194346 | 42
+> [ 629.989800] (1:node@c-0.me) 8388650 | 42
+> [ 629.989800] (1:node@c-0.me) Predecessor: 16728096
+> [ 629.989800] (6:node@c-5.me) My finger table:
+> [ 629.989800] (6:node@c-5.me) Start | Succ
+> [ 629.989800] (6:node@c-5.me) 10874877 | 16509405
+> [ 629.989800] (6:node@c-5.me) 10874878 | 533744
+> [ 629.989800] (6:node@c-5.me) 10874880 | 533744
+> [ 629.989800] (6:node@c-5.me) 10874884 | 16509405
+> [ 629.989800] (6:node@c-5.me) 10874892 | 16509405
+> [ 629.989800] (6:node@c-5.me) 10874908 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10874940 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875004 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875132 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875388 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10875900 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10876924 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10878972 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10883068 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10891260 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10907644 | 10874876
+> [ 629.989800] (6:node@c-5.me) 10940412 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11005948 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11137020 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11399164 | 10874876
+> [ 629.989800] (6:node@c-5.me) 11923452 | 10874876
+> [ 629.989800] (6:node@c-5.me) 12972028 | 10874876
+> [ 629.989800] (6:node@c-5.me) 15069180 | 10874876
+> [ 629.989800] (6:node@c-5.me) 2486268 | 10874876
+> [ 629.989800] (6:node@c-5.me) Predecessor: 10004760
+> [ 632.989700] (4:node@c-3.me) My finger table:
+> [ 632.989700] (4:node@c-3.me) Start | Succ
+> [ 632.989700] (4:node@c-3.me) 1319739 | 2015253
+> [ 632.989700] (4:node@c-3.me) 1319740 | 6518808
+> [ 632.989700] (4:node@c-3.me) 1319742 | 6518808
+> [ 632.989700] (4:node@c-3.me) 1319746 | 2015253
+> [ 632.989700] (4:node@c-3.me) 1319754 | 2015253
+> [ 632.989700] (4:node@c-3.me) 1319770 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1319802 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1319866 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1319994 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1320250 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1320762 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1321786 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1323834 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1327930 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1336122 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1352506 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1385274 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1450810 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1581882 | 1319738
+> [ 632.989700] (4:node@c-3.me) 1844026 | 1319738
+> [ 632.989700] (4:node@c-3.me) 2368314 | 1319738
+> [ 632.989700] (4:node@c-3.me) 3416890 | 1319738
+> [ 632.989700] (4:node@c-3.me) 5514042 | 1319738
+> [ 632.989700] (4:node@c-3.me) 9708346 | 1319738
+> [ 632.989700] (4:node@c-3.me) Predecessor: 533744
+> [ 637.989600] (2:node@c-1.me) My finger table:
+> [ 637.989600] (2:node@c-1.me) Start | Succ
+> [ 637.989600] (2:node@c-1.me) 366681 | 533744
+> [ 637.989600] (2:node@c-1.me) 366682 | 1319738
+> [ 637.989600] (2:node@c-1.me) 366684 | 533744
+> [ 637.989600] (2:node@c-1.me) 366688 | 533744
+> [ 637.989600] (2:node@c-1.me) 366696 | 533744
+> [ 637.989600] (2:node@c-1.me) 366712 | 366680
+> [ 637.989600] (2:node@c-1.me) 366744 | 366680
+> [ 637.989600] (2:node@c-1.me) 366808 | 366680
+> [ 637.989600] (2:node@c-1.me) 366936 | 366680
+> [ 637.989600] (2:node@c-1.me) 367192 | 366680
+> [ 637.989600] (2:node@c-1.me) 367704 | 366680
+> [ 637.989600] (2:node@c-1.me) 368728 | 366680
+> [ 637.989600] (2:node@c-1.me) 370776 | 366680
+> [ 637.989600] (2:node@c-1.me) 374872 | 366680
+> [ 637.989600] (2:node@c-1.me) 383064 | 366680
+> [ 637.989600] (2:node@c-1.me) 399448 | 366680
+> [ 637.989600] (2:node@c-1.me) 432216 | 366680
+> [ 637.989600] (2:node@c-1.me) 497752 | 366680
+> [ 637.989600] (2:node@c-1.me) 628824 | 366680
+> [ 637.989600] (2:node@c-1.me) 890968 | 366680
+> [ 637.989600] (2:node@c-1.me) 1415256 | 366680
+> [ 637.989600] (2:node@c-1.me) 2463832 | 366680
+> [ 637.989600] (2:node@c-1.me) 4560984 | 366680
+> [ 637.989600] (2:node@c-1.me) 8755288 | 366680
+> [ 637.989600] (2:node@c-1.me) Predecessor: 42
+> [ 638.989600] (3:node@c-2.me) My finger table:
+> [ 638.989600] (3:node@c-2.me) Start | Succ
+> [ 638.989600] (3:node@c-2.me) 533745 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533746 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533748 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533752 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533760 | 1319738
+> [ 638.989600] (3:node@c-2.me) 533776 | 533744
+> [ 638.989600] (3:node@c-2.me) 533808 | 533744
+> [ 638.989600] (3:node@c-2.me) 533872 | 533744
+> [ 638.989600] (3:node@c-2.me) 534000 | 533744
+> [ 638.989600] (3:node@c-2.me) 534256 | 533744
+> [ 638.989600] (3:node@c-2.me) 534768 | 533744
+> [ 638.989600] (3:node@c-2.me) 535792 | 533744
+> [ 638.989600] (3:node@c-2.me) 537840 | 533744
+> [ 638.989600] (3:node@c-2.me) 541936 | 533744
+> [ 638.989600] (3:node@c-2.me) 550128 | 533744
+> [ 638.989600] (3:node@c-2.me) 566512 | 533744
+> [ 638.989600] (3:node@c-2.me) 599280 | 533744
+> [ 638.989600] (3:node@c-2.me) 664816 | 533744
+> [ 638.989600] (3:node@c-2.me) 795888 | 533744
+> [ 638.989600] (3:node@c-2.me) 1058032 | 533744
+> [ 638.989600] (3:node@c-2.me) 1582320 | 533744
+> [ 638.989600] (3:node@c-2.me) 2630896 | 533744
+> [ 638.989600] (3:node@c-2.me) 4728048 | 533744
+> [ 638.989600] (3:node@c-2.me) 8922352 | 533744
+> [ 638.989600] (3:node@c-2.me) Predecessor: 366680
+> [ 641.989600] (10:node@c-9.me) My finger table:
+> [ 641.989600] (10:node@c-9.me) Start | Succ
+> [ 641.989600] (10:node@c-9.me) 2015254 | 6518808
+> [ 641.989600] (10:node@c-9.me) 2015255 | 16728096
+> [ 641.989600] (10:node@c-9.me) 2015257 | 10004760
+> [ 641.989600] (10:node@c-9.me) 2015261 | 6518808
+> [ 641.989600] (10:node@c-9.me) 2015269 | 6518808
+> [ 641.989600] (10:node@c-9.me) 2015285 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015317 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015381 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015509 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2015765 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2016277 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2017301 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2019349 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2023445 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2031637 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2048021 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2080789 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2146325 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2277397 | 2015253
+> [ 641.989600] (10:node@c-9.me) 2539541 | 2015253
+> [ 641.989600] (10:node@c-9.me) 3063829 | 2015253
+> [ 641.989600] (10:node@c-9.me) 4112405 | 2015253
+> [ 641.989600] (10:node@c-9.me) 6209557 | 2015253
+> [ 641.989600] (10:node@c-9.me) 10403861 | 2015253
+> [ 641.989600] (10:node@c-9.me) Predecessor: 1319738
+> [ 645.989500] (7:node@c-6.me) My finger table:
+> [ 645.989500] (7:node@c-6.me) Start | Succ
+> [ 645.989500] (7:node@c-6.me) 16728097 | 42
+> [ 645.989500] (7:node@c-6.me) 16728098 | 42
+> [ 645.989500] (7:node@c-6.me) 16728100 | 42
+> [ 645.989500] (7:node@c-6.me) 16728104 | 42
+> [ 645.989500] (7:node@c-6.me) 16728112 | 42
+> [ 645.989500] (7:node@c-6.me) 16728128 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728160 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728224 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728352 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16728608 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16729120 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16730144 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16732192 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16736288 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16744480 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16760864 | 16728096
+> [ 645.989500] (7:node@c-6.me) 16416 | 16728096
+> [ 645.989500] (7:node@c-6.me) 81952 | 16728096
+> [ 645.989500] (7:node@c-6.me) 213024 | 16728096
+> [ 645.989500] (7:node@c-6.me) 475168 | 16728096
+> [ 645.989500] (7:node@c-6.me) 999456 | 16728096
+> [ 645.989500] (7:node@c-6.me) 2048032 | 16728096
+> [ 645.989500] (7:node@c-6.me) 4145184 | 16728096
+> [ 645.989500] (7:node@c-6.me) 8339488 | 16728096
+> [ 645.989500] (7:node@c-6.me) Predecessor: 16509405
+> [ 645.989600] (5:node@c-4.me) My finger table:
+> [ 645.989600] (5:node@c-4.me) Start | Succ
+> [ 645.989600] (5:node@c-4.me) 16509406 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509407 | 42
+> [ 645.989600] (5:node@c-4.me) 16509409 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509413 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509421 | 16728096
+> [ 645.989600] (5:node@c-4.me) 16509437 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509469 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509533 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509661 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16509917 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16510429 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16511453 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16513501 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16517597 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16525789 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16542173 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16574941 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16640477 | 16509405
+> [ 645.989600] (5:node@c-4.me) 16771549 | 16509405
+> [ 645.989600] (5:node@c-4.me) 256477 | 16509405
+> [ 645.989600] (5:node@c-4.me) 780765 | 16509405
+> [ 645.989600] (5:node@c-4.me) 1829341 | 16509405
+> [ 645.989600] (5:node@c-4.me) 3926493 | 16509405
+> [ 645.989600] (5:node@c-4.me) 8120797 | 16509405
+> [ 645.989600] (5:node@c-4.me) Predecessor: 10874876
+> [ 655.989400] (8:node@c-7.me) My finger table:
+> [ 655.989400] (8:node@c-7.me) Start | Succ
+> [ 655.989400] (8:node@c-7.me) 10004761 | 10874876
+> [ 655.989400] (8:node@c-7.me) 10004762 | 16509405
+> [ 655.989400] (8:node@c-7.me) 10004764 | 16509405
+> [ 655.989400] (8:node@c-7.me) 10004768 | 16509405
+> [ 655.989400] (8:node@c-7.me) 10004776 | 10874876
+> [ 655.989400] (8:node@c-7.me) 10004792 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10004824 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10004888 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10005016 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10005272 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10005784 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10006808 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10008856 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10012952 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10021144 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10037528 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10070296 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10135832 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10266904 | 10004760
+> [ 655.989400] (8:node@c-7.me) 10529048 | 10004760
+> [ 655.989400] (8:node@c-7.me) 11053336 | 10004760
+> [ 655.989400] (8:node@c-7.me) 12101912 | 10004760
+> [ 655.989400] (8:node@c-7.me) 14199064 | 10004760
+> [ 655.989400] (8:node@c-7.me) 1616152 | 10004760
+> [ 655.989400] (8:node@c-7.me) Predecessor: 6518808
+> [ 662.989300] (9:node@c-8.me) My finger table:
+> [ 662.989300] (9:node@c-8.me) Start | Succ
+> [ 662.989300] (9:node@c-8.me) 6518809 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518810 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518812 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518816 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518824 | 10004760
+> [ 662.989300] (9:node@c-8.me) 6518840 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6518872 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6518936 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6519064 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6519320 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6519832 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6520856 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6522904 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6527000 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6535192 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6551576 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6584344 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6649880 | 6518808
+> [ 662.989300] (9:node@c-8.me) 6780952 | 6518808
+> [ 662.989300] (9:node@c-8.me) 7043096 | 6518808
+> [ 662.989300] (9:node@c-8.me) 7567384 | 6518808
+> [ 662.989300] (9:node@c-8.me) 8615960 | 6518808
+> [ 662.989300] (9:node@c-8.me) 10713112 | 6518808
+> [ 662.989300] (9:node@c-8.me) 14907416 | 6518808
+> [ 662.989300] (9:node@c-8.me) Predecessor: 2015253
+> [ 754.987800] (1:node@c-0.me) My finger table:
+> [ 754.987800] (1:node@c-0.me) Start | Succ
+> [ 754.987800] (1:node@c-0.me) 43 | 366680
+> [ 754.987800] (1:node@c-0.me) 44 | 366680
+> [ 754.987800] (1:node@c-0.me) 46 | 366680
+> [ 754.987800] (1:node@c-0.me) 50 | 366680
+> [ 754.987800] (1:node@c-0.me) 58 | 366680
+> [ 754.987800] (1:node@c-0.me) 74 | 366680
+> [ 754.987800] (1:node@c-0.me) 106 | 42
+> [ 754.987800] (1:node@c-0.me) 170 | 42
+> [ 754.987800] (1:node@c-0.me) 298 | 42
+> [ 754.987800] (1:node@c-0.me) 554 | 42
+> [ 754.987800] (1:node@c-0.me) 1066 | 42
+> [ 754.987800] (1:node@c-0.me) 2090 | 42
+> [ 754.987800] (1:node@c-0.me) 4138 | 42
+> [ 754.987800] (1:node@c-0.me) 8234 | 42
+> [ 754.987800] (1:node@c-0.me) 16426 | 42
+> [ 754.987800] (1:node@c-0.me) 32810 | 42
+> [ 754.987800] (1:node@c-0.me) 65578 | 42
+> [ 754.987800] (1:node@c-0.me) 131114 | 42
+> [ 754.987800] (1:node@c-0.me) 262186 | 42
+> [ 754.987800] (1:node@c-0.me) 524330 | 42
+> [ 754.987800] (1:node@c-0.me) 1048618 | 42
+> [ 754.987800] (1:node@c-0.me) 2097194 | 42
+> [ 754.987800] (1:node@c-0.me) 4194346 | 42
+> [ 754.987800] (1:node@c-0.me) 8388650 | 42
+> [ 754.987800] (1:node@c-0.me) Predecessor: 16728096
+> [ 757.987800] (4:node@c-3.me) My finger table:
+> [ 757.987800] (4:node@c-3.me) Start | Succ
+> [ 757.987800] (4:node@c-3.me) 1319739 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319740 | 6518808
+> [ 757.987800] (4:node@c-3.me) 1319742 | 6518808
+> [ 757.987800] (4:node@c-3.me) 1319746 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319754 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319770 | 2015253
+> [ 757.987800] (4:node@c-3.me) 1319802 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1319866 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1319994 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1320250 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1320762 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1321786 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1323834 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1327930 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1336122 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1352506 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1385274 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1450810 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1581882 | 1319738
+> [ 757.987800] (4:node@c-3.me) 1844026 | 1319738
+> [ 757.987800] (4:node@c-3.me) 2368314 | 1319738
+> [ 757.987800] (4:node@c-3.me) 3416890 | 1319738
+> [ 757.987800] (4:node@c-3.me) 5514042 | 1319738
+> [ 757.987800] (4:node@c-3.me) 9708346 | 1319738
+> [ 757.987800] (4:node@c-3.me) Predecessor: 533744
+> [ 762.987700] (10:node@c-9.me) My finger table:
+> [ 762.987700] (10:node@c-9.me) Start | Succ
+> [ 762.987700] (10:node@c-9.me) 2015254 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015255 | 16728096
+> [ 762.987700] (10:node@c-9.me) 2015257 | 10004760
+> [ 762.987700] (10:node@c-9.me) 2015261 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015269 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015285 | 6518808
+> [ 762.987700] (10:node@c-9.me) 2015317 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2015381 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2015509 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2015765 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2016277 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2017301 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2019349 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2023445 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2031637 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2048021 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2080789 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2146325 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2277397 | 2015253
+> [ 762.987700] (10:node@c-9.me) 2539541 | 2015253
+> [ 762.987700] (10:node@c-9.me) 3063829 | 2015253
+> [ 762.987700] (10:node@c-9.me) 4112405 | 2015253
+> [ 762.987700] (10:node@c-9.me) 6209557 | 2015253
+> [ 762.987700] (10:node@c-9.me) 10403861 | 2015253
+> [ 762.987700] (10:node@c-9.me) Predecessor: 1319738
+> [ 762.987700] (6:node@c-5.me) My finger table:
+> [ 762.987700] (6:node@c-5.me) Start | Succ
+> [ 762.987700] (6:node@c-5.me) 10874877 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874878 | 533744
+> [ 762.987700] (6:node@c-5.me) 10874880 | 533744
+> [ 762.987700] (6:node@c-5.me) 10874884 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874892 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874908 | 16509405
+> [ 762.987700] (6:node@c-5.me) 10874940 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875004 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875132 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875388 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10875900 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10876924 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10878972 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10883068 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10891260 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10907644 | 10874876
+> [ 762.987700] (6:node@c-5.me) 10940412 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11005948 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11137020 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11399164 | 10874876
+> [ 762.987700] (6:node@c-5.me) 11923452 | 10874876
+> [ 762.987700] (6:node@c-5.me) 12972028 | 10874876
+> [ 762.987700] (6:node@c-5.me) 15069180 | 10874876
+> [ 762.987700] (6:node@c-5.me) 2486268 | 10874876
+> [ 762.987700] (6:node@c-5.me) Predecessor: 10004760
+> [ 767.987600] (2:node@c-1.me) My finger table:
+> [ 767.987600] (2:node@c-1.me) Start | Succ
+> [ 767.987600] (2:node@c-1.me) 366681 | 533744
+> [ 767.987600] (2:node@c-1.me) 366682 | 1319738
+> [ 767.987600] (2:node@c-1.me) 366684 | 533744
+> [ 767.987600] (2:node@c-1.me) 366688 | 533744
+> [ 767.987600] (2:node@c-1.me) 366696 | 533744
+> [ 767.987600] (2:node@c-1.me) 366712 | 533744
+> [ 767.987600] (2:node@c-1.me) 366744 | 366680
+> [ 767.987600] (2:node@c-1.me) 366808 | 366680
+> [ 767.987600] (2:node@c-1.me) 366936 | 366680
+> [ 767.987600] (2:node@c-1.me) 367192 | 366680
+> [ 767.987600] (2:node@c-1.me) 367704 | 366680
+> [ 767.987600] (2:node@c-1.me) 368728 | 366680
+> [ 767.987600] (2:node@c-1.me) 370776 | 366680
+> [ 767.987600] (2:node@c-1.me) 374872 | 366680
+> [ 767.987600] (2:node@c-1.me) 383064 | 366680
+> [ 767.987600] (2:node@c-1.me) 399448 | 366680
+> [ 767.987600] (2:node@c-1.me) 432216 | 366680
+> [ 767.987600] (2:node@c-1.me) 497752 | 366680
+> [ 767.987600] (2:node@c-1.me) 628824 | 366680
+> [ 767.987600] (2:node@c-1.me) 890968 | 366680
+> [ 767.987600] (2:node@c-1.me) 1415256 | 366680
+> [ 767.987600] (2:node@c-1.me) 2463832 | 366680
+> [ 767.987600] (2:node@c-1.me) 4560984 | 366680
+> [ 767.987600] (2:node@c-1.me) 8755288 | 366680
+> [ 767.987600] (2:node@c-1.me) Predecessor: 42
+> [ 771.987500] (5:node@c-4.me) My finger table:
+> [ 771.987500] (5:node@c-4.me) Start | Succ
+> [ 771.987500] (5:node@c-4.me) 16509406 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509407 | 42
+> [ 771.987500] (5:node@c-4.me) 16509409 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509413 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509421 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509437 | 16728096
+> [ 771.987500] (5:node@c-4.me) 16509469 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16509533 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16509661 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16509917 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16510429 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16511453 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16513501 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16517597 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16525789 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16542173 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16574941 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16640477 | 16509405
+> [ 771.987500] (5:node@c-4.me) 16771549 | 16509405
+> [ 771.987500] (5:node@c-4.me) 256477 | 16509405
+> [ 771.987500] (5:node@c-4.me) 780765 | 16509405
+> [ 771.987500] (5:node@c-4.me) 1829341 | 16509405
+> [ 771.987500] (5:node@c-4.me) 3926493 | 16509405
+> [ 771.987500] (5:node@c-4.me) 8120797 | 16509405
+> [ 771.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 776.987500] (3:node@c-2.me) My finger table:
+> [ 776.987500] (3:node@c-2.me) Start | Succ
+> [ 776.987500] (3:node@c-2.me) 533745 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533746 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533748 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533752 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533760 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533776 | 1319738
+> [ 776.987500] (3:node@c-2.me) 533808 | 533744
+> [ 776.987500] (3:node@c-2.me) 533872 | 533744
+> [ 776.987500] (3:node@c-2.me) 534000 | 533744
+> [ 776.987500] (3:node@c-2.me) 534256 | 533744
+> [ 776.987500] (3:node@c-2.me) 534768 | 533744
+> [ 776.987500] (3:node@c-2.me) 535792 | 533744
+> [ 776.987500] (3:node@c-2.me) 537840 | 533744
+> [ 776.987500] (3:node@c-2.me) 541936 | 533744
+> [ 776.987500] (3:node@c-2.me) 550128 | 533744
+> [ 776.987500] (3:node@c-2.me) 566512 | 533744
+> [ 776.987500] (3:node@c-2.me) 599280 | 533744
+> [ 776.987500] (3:node@c-2.me) 664816 | 533744
+> [ 776.987500] (3:node@c-2.me) 795888 | 533744
+> [ 776.987500] (3:node@c-2.me) 1058032 | 533744
+> [ 776.987500] (3:node@c-2.me) 1582320 | 533744
+> [ 776.987500] (3:node@c-2.me) 2630896 | 533744
+> [ 776.987500] (3:node@c-2.me) 4728048 | 533744
+> [ 776.987500] (3:node@c-2.me) 8922352 | 533744
+> [ 776.987500] (3:node@c-2.me) Predecessor: 366680
+> [ 823.987500] (8:node@c-7.me) My finger table:
+> [ 823.987500] (8:node@c-7.me) Start | Succ
+> [ 823.987500] (8:node@c-7.me) 10004761 | 10874876
+> [ 823.987500] (8:node@c-7.me) 10004762 | 16509405
+> [ 823.987500] (8:node@c-7.me) 10004764 | 16509405
+> [ 823.987500] (8:node@c-7.me) 10004768 | 16509405
+> [ 823.987500] (8:node@c-7.me) 10004776 | 10874876
+> [ 823.987500] (8:node@c-7.me) 10004792 | 10874876
+> [ 823.987500] (8:node@c-7.me) 10004824 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10004888 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10005016 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10005272 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10005784 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10006808 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10008856 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10012952 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10021144 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10037528 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10070296 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10135832 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10266904 | 10004760
+> [ 823.987500] (8:node@c-7.me) 10529048 | 10004760
+> [ 823.987500] (8:node@c-7.me) 11053336 | 10004760
+> [ 823.987500] (8:node@c-7.me) 12101912 | 10004760
+> [ 823.987500] (8:node@c-7.me) 14199064 | 10004760
+> [ 823.987500] (8:node@c-7.me) 1616152 | 10004760
+> [ 823.987500] (8:node@c-7.me) Predecessor: 6518808
+> [ 824.987500] (7:node@c-6.me) My finger table:
+> [ 824.987500] (7:node@c-6.me) Start | Succ
+> [ 824.987500] (7:node@c-6.me) 16728097 | 42
+> [ 824.987500] (7:node@c-6.me) 16728098 | 42
+> [ 824.987500] (7:node@c-6.me) 16728100 | 42
+> [ 824.987500] (7:node@c-6.me) 16728104 | 42
+> [ 824.987500] (7:node@c-6.me) 16728112 | 42
+> [ 824.987500] (7:node@c-6.me) 16728128 | 42
+> [ 824.987500] (7:node@c-6.me) 16728160 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16728224 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16728352 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16728608 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16729120 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16730144 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16732192 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16736288 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16744480 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16760864 | 16728096
+> [ 824.987500] (7:node@c-6.me) 16416 | 16728096
+> [ 824.987500] (7:node@c-6.me) 81952 | 16728096
+> [ 824.987500] (7:node@c-6.me) 213024 | 16728096
+> [ 824.987500] (7:node@c-6.me) 475168 | 16728096
+> [ 824.987500] (7:node@c-6.me) 999456 | 16728096
+> [ 824.987500] (7:node@c-6.me) 2048032 | 16728096
+> [ 824.987500] (7:node@c-6.me) 4145184 | 16728096
+> [ 824.987500] (7:node@c-6.me) 8339488 | 16728096
+> [ 824.987500] (7:node@c-6.me) Predecessor: 16509405
+> [ 876.987500] (9:node@c-8.me) My finger table:
+> [ 876.987500] (9:node@c-8.me) Start | Succ
+> [ 876.987500] (9:node@c-8.me) 6518809 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518810 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518812 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518816 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518824 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518840 | 10004760
+> [ 876.987500] (9:node@c-8.me) 6518872 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6518936 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6519064 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6519320 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6519832 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6520856 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6522904 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6527000 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6535192 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6551576 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6584344 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6649880 | 6518808
+> [ 876.987500] (9:node@c-8.me) 6780952 | 6518808
+> [ 876.987500] (9:node@c-8.me) 7043096 | 6518808
+> [ 876.987500] (9:node@c-8.me) 7567384 | 6518808
+> [ 876.987500] (9:node@c-8.me) 8615960 | 6518808
+> [ 876.987500] (9:node@c-8.me) 10713112 | 6518808
+> [ 876.987500] (9:node@c-8.me) 14907416 | 6518808
+> [ 876.987500] (9:node@c-8.me) Predecessor: 2015253
+> [ 880.986500] (1:node@c-0.me) My finger table:
+> [ 880.986500] (1:node@c-0.me) Start | Succ
+> [ 880.986500] (1:node@c-0.me) 43 | 366680
+> [ 880.986500] (1:node@c-0.me) 44 | 366680
+> [ 880.986500] (1:node@c-0.me) 46 | 366680
+> [ 880.986500] (1:node@c-0.me) 50 | 366680
+> [ 880.986500] (1:node@c-0.me) 58 | 366680
+> [ 880.986500] (1:node@c-0.me) 74 | 366680
+> [ 880.986500] (1:node@c-0.me) 106 | 366680
+> [ 880.986500] (1:node@c-0.me) 170 | 42
+> [ 880.986500] (1:node@c-0.me) 298 | 42
+> [ 880.986500] (1:node@c-0.me) 554 | 42
+> [ 880.986500] (1:node@c-0.me) 1066 | 42
+> [ 880.986500] (1:node@c-0.me) 2090 | 42
+> [ 880.986500] (1:node@c-0.me) 4138 | 42
+> [ 880.986500] (1:node@c-0.me) 8234 | 42
+> [ 880.986500] (1:node@c-0.me) 16426 | 42
+> [ 880.986500] (1:node@c-0.me) 32810 | 42
+> [ 880.986500] (1:node@c-0.me) 65578 | 42
+> [ 880.986500] (1:node@c-0.me) 131114 | 42
+> [ 880.986500] (1:node@c-0.me) 262186 | 42
+> [ 880.986500] (1:node@c-0.me) 524330 | 42
+> [ 880.986500] (1:node@c-0.me) 1048618 | 42
+> [ 880.986500] (1:node@c-0.me) 2097194 | 42
+> [ 880.986500] (1:node@c-0.me) 4194346 | 42
+> [ 880.986500] (1:node@c-0.me) 8388650 | 42
+> [ 880.986500] (1:node@c-0.me) Predecessor: 16728096
+> [ 904.987100] (3:node@c-2.me) My finger table:
+> [ 904.987100] (3:node@c-2.me) Start | Succ
+> [ 904.987100] (3:node@c-2.me) 533745 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533746 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533748 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533752 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533760 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533776 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533808 | 1319738
+> [ 904.987100] (3:node@c-2.me) 533872 | 533744
+> [ 904.987100] (3:node@c-2.me) 534000 | 533744
+> [ 904.987100] (3:node@c-2.me) 534256 | 533744
+> [ 904.987100] (3:node@c-2.me) 534768 | 533744
+> [ 904.987100] (3:node@c-2.me) 535792 | 533744
+> [ 904.987100] (3:node@c-2.me) 537840 | 533744
+> [ 904.987100] (3:node@c-2.me) 541936 | 533744
+> [ 904.987100] (3:node@c-2.me) 550128 | 533744
+> [ 904.987100] (3:node@c-2.me) 566512 | 533744
+> [ 904.987100] (3:node@c-2.me) 599280 | 533744
+> [ 904.987100] (3:node@c-2.me) 664816 | 533744
+> [ 904.987100] (3:node@c-2.me) 795888 | 533744
+> [ 904.987100] (3:node@c-2.me) 1058032 | 533744
+> [ 904.987100] (3:node@c-2.me) 1582320 | 533744
+> [ 904.987100] (3:node@c-2.me) 2630896 | 533744
+> [ 904.987100] (3:node@c-2.me) 4728048 | 533744
+> [ 904.987100] (3:node@c-2.me) 8922352 | 533744
+> [ 904.987100] (3:node@c-2.me) Predecessor: 366680
+> [ 924.987500] (5:node@c-4.me) My finger table:
+> [ 924.987500] (5:node@c-4.me) Start | Succ
+> [ 924.987500] (5:node@c-4.me) 16509406 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509407 | 42
+> [ 924.987500] (5:node@c-4.me) 16509409 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509413 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509421 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509437 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509469 | 16728096
+> [ 924.987500] (5:node@c-4.me) 16509533 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16509661 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16509917 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16510429 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16511453 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16513501 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16517597 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16525789 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16542173 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16574941 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16640477 | 16509405
+> [ 924.987500] (5:node@c-4.me) 16771549 | 16509405
+> [ 924.987500] (5:node@c-4.me) 256477 | 16509405
+> [ 924.987500] (5:node@c-4.me) 780765 | 16509405
+> [ 924.987500] (5:node@c-4.me) 1829341 | 16509405
+> [ 924.987500] (5:node@c-4.me) 3926493 | 16509405
+> [ 924.987500] (5:node@c-4.me) 8120797 | 16509405
+> [ 924.987500] (5:node@c-4.me) Predecessor: 10874876
+> [ 936.987400] (6:node@c-5.me) My finger table:
+> [ 936.987400] (6:node@c-5.me) Start | Succ
+> [ 936.987400] (6:node@c-5.me) 10874877 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874878 | 533744
+> [ 936.987400] (6:node@c-5.me) 10874880 | 533744
+> [ 936.987400] (6:node@c-5.me) 10874884 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874892 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874908 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10874940 | 16509405
+> [ 936.987400] (6:node@c-5.me) 10875004 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10875132 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10875388 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10875900 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10876924 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10878972 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10883068 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10891260 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10907644 | 10874876
+> [ 936.987400] (6:node@c-5.me) 10940412 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11005948 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11137020 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11399164 | 10874876
+> [ 936.987400] (6:node@c-5.me) 11923452 | 10874876
+> [ 936.987400] (6:node@c-5.me) 12972028 | 10874876
+> [ 936.987400] (6:node@c-5.me) 15069180 | 10874876
+> [ 936.987400] (6:node@c-5.me) 2486268 | 10874876
+> [ 936.987400] (6:node@c-5.me) Predecessor: 10004760
+> [ 945.985300] (7:node@c-6.me) My finger table:
+> [ 945.985300] (7:node@c-6.me) Start | Succ
+> [ 945.985300] (7:node@c-6.me) 16728097 | 42
+> [ 945.985300] (7:node@c-6.me) 16728098 | 42
+> [ 945.985300] (7:node@c-6.me) 16728100 | 42
+> [ 945.985300] (7:node@c-6.me) 16728104 | 42
+> [ 945.985300] (7:node@c-6.me) 16728112 | 42
+> [ 945.985300] (7:node@c-6.me) 16728128 | 42
+> [ 945.985300] (7:node@c-6.me) 16728160 | 42
+> [ 945.985300] (7:node@c-6.me) 16728224 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16728352 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16728608 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16729120 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16730144 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16732192 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16736288 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16744480 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16760864 | 16728096
+> [ 945.985300] (7:node@c-6.me) 16416 | 16728096
+> [ 945.985300] (7:node@c-6.me) 81952 | 16728096
+> [ 945.985300] (7:node@c-6.me) 213024 | 16728096
+> [ 945.985300] (7:node@c-6.me) 475168 | 16728096
+> [ 945.985300] (7:node@c-6.me) 999456 | 16728096
+> [ 945.985300] (7:node@c-6.me) 2048032 | 16728096
+> [ 945.985300] (7:node@c-6.me) 4145184 | 16728096
+> [ 945.985300] (7:node@c-6.me) 8339488 | 16728096
+> [ 945.985300] (7:node@c-6.me) Predecessor: 16509405
+> [ 952.985200] (2:node@c-1.me) My finger table:
+> [ 952.985200] (2:node@c-1.me) Start | Succ
+> [ 952.985200] (2:node@c-1.me) 366681 | 533744
+> [ 952.985200] (2:node@c-1.me) 366682 | 1319738
+> [ 952.985200] (2:node@c-1.me) 366684 | 533744
+> [ 952.985200] (2:node@c-1.me) 366688 | 533744
+> [ 952.985200] (2:node@c-1.me) 366696 | 533744
+> [ 952.985200] (2:node@c-1.me) 366712 | 533744
+> [ 952.985200] (2:node@c-1.me) 366744 | 533744
+> [ 952.985200] (2:node@c-1.me) 366808 | 366680
+> [ 952.985200] (2:node@c-1.me) 366936 | 366680
+> [ 952.985200] (2:node@c-1.me) 367192 | 366680
+> [ 952.985200] (2:node@c-1.me) 367704 | 366680
+> [ 952.985200] (2:node@c-1.me) 368728 | 366680
+> [ 952.985200] (2:node@c-1.me) 370776 | 366680
+> [ 952.985200] (2:node@c-1.me) 374872 | 366680
+> [ 952.985200] (2:node@c-1.me) 383064 | 366680
+> [ 952.985200] (2:node@c-1.me) 399448 | 366680
+> [ 952.985200] (2:node@c-1.me) 432216 | 366680
+> [ 952.985200] (2:node@c-1.me) 497752 | 366680
+> [ 952.985200] (2:node@c-1.me) 628824 | 366680
+> [ 952.985200] (2:node@c-1.me) 890968 | 366680
+> [ 952.985200] (2:node@c-1.me) 1415256 | 366680
+> [ 952.985200] (2:node@c-1.me) 2463832 | 366680
+> [ 952.985200] (2:node@c-1.me) 4560984 | 366680
+> [ 952.985200] (2:node@c-1.me) 8755288 | 366680
+> [ 952.985200] (2:node@c-1.me) Predecessor: 42
+> [ 967.986900] (4:node@c-3.me) My finger table:
+> [ 967.986900] (4:node@c-3.me) Start | Succ
+> [ 967.986900] (4:node@c-3.me) 1319739 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319740 | 6518808
+> [ 967.986900] (4:node@c-3.me) 1319742 | 6518808
+> [ 967.986900] (4:node@c-3.me) 1319746 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319754 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319770 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319802 | 2015253
+> [ 967.986900] (4:node@c-3.me) 1319866 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1319994 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1320250 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1320762 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1321786 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1323834 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1327930 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1336122 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1352506 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1385274 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1450810 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1581882 | 1319738
+> [ 967.986900] (4:node@c-3.me) 1844026 | 1319738
+> [ 967.986900] (4:node@c-3.me) 2368314 | 1319738
+> [ 967.986900] (4:node@c-3.me) 3416890 | 1319738
+> [ 967.986900] (4:node@c-3.me) 5514042 | 1319738
+> [ 967.986900] (4:node@c-3.me) 9708346 | 1319738
+> [ 967.986900] (4:node@c-3.me) Predecessor: 533744
+> [1207.985300] (0:@) Messages created: 1690
+> [1207.985300] (0:@) Simulated time: 1207.99
p Testing the mechanism for computing host energy consumption
! output sort
-$ $SG_TEST_EXENV energy/e2/e2$EXEEXT ${srcdir:=.}/energy/e2/platform_e2.xml ${srcdir:=.}/energy/e2/deployment_e2.xml --log=surf_cpu.thres:debug --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
-> [ 0.000000] (0:@) CPU create: peak=100000000.000000, pstate=0
+$ $SG_TEST_EXENV energy/e2/e2$EXEEXT ${srcdir:=.}/energy/e2/platform_e2.xml ${srcdir:=.}/energy/e2/deployment_e2.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
> [ 0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
> [ 0.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 0.000000
-> [ 1.000000] (0:@) [cpu_update_energy] action time interval=(0.000000-1.000000), current power peak=100000000.000000, current pstate=0
-> [ 1.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [ 1.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [ 1.000000] (0:@) [cpu_update_energy] old_energy_value=0.000000, action_energy_value=200.000000
> [ 1.000000] (1:dvfs_test@MyHost1) Task1 simulation time: 1.000000e+00
> [ 1.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 200.000000
> [ 1.000000] (1:dvfs_test@MyHost1) =========Changing power peak value to 20000000.000000 (at index 2)
-> [ 6.000000] (0:@) [cpu_update_energy] action time interval=(1.000000-6.000000), current power peak=20000000.000000, current pstate=2
-> [ 6.000000] (0:@) [get_current_watts] min_power=90.000000, max_power=150.000000, slope=60.000000
-> [ 6.000000] (0:@) [get_current_watts] Current power (watts) = 150.000000, load = 1.000000
-> [ 6.000000] (0:@) [cpu_update_energy] old_energy_value=200.000000, action_energy_value=750.000000
> [ 6.000000] (1:dvfs_test@MyHost1) Task2 simulation time: 5.000000e+00
> [ 6.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 950.000000
-> [ 9.000000] (0:@) [cpu_update_energy] action time interval=(6.000000-9.000000), current power peak=20000000.000000, current pstate=2
-> [ 9.000000] (0:@) [get_current_watts] min_power=90.000000, max_power=150.000000, slope=60.000000
-> [ 9.000000] (0:@) [get_current_watts] Current power (watts) = 90.000000, load = 0.000000
-> [ 9.000000] (0:@) [cpu_update_energy] old_energy_value=950.000000, action_energy_value=270.000000
> [ 9.000000] (1:dvfs_test@MyHost1) Task3 (sleep) simulation time: 4.000000e+00
> [ 9.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 1220.000000
> [ 9.000000] (0:@) Total simulation time: 9.000000e+00
p Testing the mechanism for computing host energy consumption for concurrent tasks
! output sort
-$ $SG_TEST_EXENV energy/e3/e3$EXEEXT ${srcdir:=.}/energy/e3/platform_e3.xml ${srcdir:=.}/energy/e3/deployment_e3.xml --log=surf_cpu.thres:debug --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
-> [ 0.000000] (0:@) CPU create: peak=100000000.000000, pstate=0
+$ $SG_TEST_EXENV energy/e3/e3$EXEEXT ${srcdir:=.}/energy/e3/platform_e3.xml ${srcdir:=.}/energy/e3/deployment_e3.xml --log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n
> [ 0.000000] (1:dvfs_test@MyHost1) Current power peak=100000000.000000
> [ 0.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 0.000000
-> [ 2.000000] (0:@) [cpu_update_energy] action time interval=(0.000000-2.000000), current power peak=100000000.000000, current pstate=0
-> [ 2.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [ 2.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [ 2.000000] (0:@) [cpu_update_energy] old_energy_value=0.000000, action_energy_value=400.000000
> [ 2.000000] (4:proc3@MyHost1) Process proc3 executed task sleep cpu=0.000000, duration = 2.000000
> [ 2.000000] (4:proc3@MyHost1) ==================================================
> [ 2.000000] (3:proc2@MyHost1) Process proc2 executed task sleep cpu=0.000000, duration = 2.000000
> [ 2.000000] (3:proc2@MyHost1) ==================================================
-> [ 5.000000] (0:@) [cpu_update_energy] action time interval=(2.000000-5.000000), current power peak=100000000.000000, current pstate=0
-> [ 5.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [ 5.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [ 5.000000] (0:@) [cpu_update_energy] old_energy_value=400.000000, action_energy_value=600.000000
> [ 5.000000] (4:proc3@MyHost1) Process proc3 executed task cpu=100000000.000000, duration = 3.000000
> [ 5.000000] (4:proc3@MyHost1) ==================================================
> [ 5.000000] (3:proc2@MyHost1) Process proc2 executed task cpu=100000000.000000, duration = 3.000000
> [ 5.000000] (3:proc2@MyHost1) ==================================================
-> [ 6.000000] (0:@) [cpu_update_energy] action time interval=(5.000000-6.000000), current power peak=100000000.000000, current pstate=0
-> [ 6.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [ 6.000000] (0:@) [get_current_watts] Current power (watts) = 200.000000, load = 1.000000
-> [ 6.000000] (0:@) [cpu_update_energy] old_energy_value=1000.000000, action_energy_value=200.000000
> [ 6.000000] (2:proc1@MyHost1) Process proc1 executed task cpu=400000000.000000, duration = 6.000000
> [ 6.000000] (2:proc1@MyHost1) ==================================================
-> [ 8.000000] (0:@) [cpu_update_energy] action time interval=(6.000000-8.000000), current power peak=100000000.000000, current pstate=0
-> [ 8.000000] (0:@) [get_current_watts] min_power=95.000000, max_power=200.000000, slope=105.000000
-> [ 8.000000] (0:@) [get_current_watts] Current power (watts) = 95.000000, load = 0.000000
-> [ 8.000000] (0:@) [cpu_update_energy] old_energy_value=1200.000000, action_energy_value=190.000000
> [ 8.000000] (1:dvfs_test@MyHost1) Task simulation time: 8.000000e+00
> [ 8.000000] (1:dvfs_test@MyHost1) Total energy (Joules): 1390.000000
-> [ 8.000000] (0:@) Total simulation time: 8.000000e+00
\ No newline at end of file
+> [ 8.000000] (0:@) Total simulation time: 8.000000e+00
p Testing dogbone communication pattern with GTNets model
-$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_gtnets.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
+$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_gtnets.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'dogbone_gtnets.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'GTNets'
p Testing dogbone communication pattern with LV08 model
-$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_lv08.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:LV08
+$ gtnets/gtnets ${srcdir:=.}/gtnets/dogbone-p.xml ${srcdir:=.}/gtnets/dogbone-d.xml --cfg=tracing/filename:dogbone_lv08.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:LV08
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'dogbone_lv08.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'LV08'
p Testing onelink communication pattern with GTNets model
-$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_gtnets.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
+$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_gtnets.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'onelink_gtnets.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'GTNets'
p Testing onelink communication pattern with LV08 model
-$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_lv08.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:LV08 2>&1 | grep --color=auto -v root/INFO | grep -v simix_network/INFO
+$ gtnets/gtnets ${srcdir:=.}/gtnets/onelink-p.xml ${srcdir:=.}/gtnets/onelink-d.xml --cfg=tracing/filename:onelink_lv08.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:LV08 2>&1 | grep --color=auto -v root/INFO | grep -v simix_network/INFO
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'onelink_lv08.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'LV08'
p Testing waxman radom communication pattern with GTNets model, 200 nodes, 200 flows
! timeout 10
-$ gtnets/gtnets ${srcdir:=.}/gtnets/waxman-p.xml ${srcdir:=.}/gtnets/waxman-d.xml --cfg=tracing/filename:waxman_gtnets.trace --cfg=tracing/categorized:1 --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
+$ gtnets/gtnets ${srcdir:=.}/gtnets/waxman-p.xml ${srcdir:=.}/gtnets/waxman-d.xml --cfg=tracing/filename:waxman_gtnets.trace --cfg=tracing/categorized:yes --cfg=workstation/model:compound --cfg=cpu/model:Cas01 --cfg=network/model:GTNets
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'waxman_gtnets.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'workstation/model' to 'compound'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'cpu/model' to 'Cas01'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'GTNets'
$ ${bindir:=.}/bugged1 --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'model-check' to '1'
> [ 0.000000] (0:@) Check a safety property
+> [ 0.000000] (0:@) Get debug information ...
+> [ 0.000000] (0:@) Get debug information done !
> [ 0.000000] (2:client@HostB) Sent!
> [ 0.000000] (3:client@HostC) Sent!
> [ 0.000000] (1:server@HostA) OK
$ ${bindir:=.}/bugged2 --cfg=model-check:1 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (0:@) Configuration change: Set 'model-check' to '1'
> [ 0.000000] (0:@) Check a safety property
+> [ 0.000000] (0:@) Get debug information ...
+> [ 0.000000] (0:@) Get debug information done !
> [ 0.000000] (2:client@HostB) Send 1!
> [ 0.000000] (3:client@HostC) Send 2!
> [ 0.000000] (1:server@HostA) Received 1
! output sort
$ $SG_TEST_EXENV sendrecv/sendrecv$EXEEXT ${srcdir:=.}/sendrecv/platform_sendrecv.xml ${srcdir:=.}/sendrecv/deployment_sendrecv.xml --cfg=cpu/model:Cas01 --cfg=network/model:CM02 "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
-> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
+> [ 0.000000] (0:@) Configuration change: Set 'cpu/model' to 'Cas01'
> [ 0.000000] (0:@) Configuration change: Set 'network/model' to 'CM02'
> [ 0.000000] (0:@) test_all
> [ 0.000000] (0:@) Switching workstation model to compound since you changed the network and/or cpu model(s)
> [1000.200010] (0:@) Total simulation time: 1.000200e+03
> [1000.200010] (2:receiver@Bellevue) Task received : bandwidth task
> [1000.200010] (2:receiver@Bellevue) Communic. time 1.000100e+03
-> [1000.200010] (2:receiver@Bellevue) --- bw 999900.009999 ----
\ No newline at end of file
+> [1000.200010] (2:receiver@Bellevue) --- bw 999900.009999 ----
* used to classify tasks. When the program is executed, the tracing mechanism registers
* the resource utilization of hosts and links according to these categories. You might
* want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/categorized:1
- * --cfg=tracing/uncategorized:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/categorized:yes
+ * --cfg=tracing/uncategorized:yes
* --cfg=viva/categorized:viva_cat.plist
* --cfg=viva/uncategorized:viva_uncat.plist
* (See \ref tracing_tracing_options for details)
p Tracing multiple categories master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/categories$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/categories.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=viva/categorized:tracing/categories.cat.plist --cfg=viva/uncategorized:tracing/categories.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/categories$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/categories.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:tracing/categories.cat.plist --cfg=viva/uncategorized:tracing/categories.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/categories.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'tracing/categories.cat.plist'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'tracing/categories.uncat.plist'
* these two hosts, if there is one defined in the platform file, and update the variable
* of all the links of that route to the value provided.
* You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/platform:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/platform:yes
* (See \ref tracing_tracing_options for details)
*/
#! ./tesh
p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_srcdst_user_variables$EXEEXT --cfg=tracing:1 --cfg=tracing/platform:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_srcdst_user_variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
* to provide the name of the link to update the value of the variable associated
* to that link.
* You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/platform:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/platform:yes
* (See \ref tracing_tracing_options for details)
*/
#! ./tesh
p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_user_variables$EXEEXT --cfg=tracing:1 --cfg=tracing/platform:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/link_user_variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
* enable the tracing of categorized resource utilization, the use of trace marks,
* and user variables associated to the hosts of the platform file.
* You might want to run this program with the following parameters:
- * --cfg=tracing/categorized:1
- * --cfg=tracing/uncategorized:1
+ * --cfg=tracing/categorized:yes
+ * --cfg=tracing/uncategorized:yes
* --cfg=viva/categorized:viva_cat.plist
* --cfg=viva/uncategorized:viva_uncat.plist
* (See \ref tracing_tracing_options for details)
#! ./tesh
p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/ms.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'tracing/ms.cat.plist'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'tracing/ms.uncat.plist'
> [4.214759] [msg_test/INFO] Declared tracing categories:
$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
p Testing tracing by process
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:1 --cfg=tracing/msg/process:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/ms$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/ms.trace --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=viva/categorized:tracing/ms.cat.plist --cfg=viva/uncategorized:tracing/ms.uncat.plist ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/ms.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'tracing/ms.cat.plist'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'tracing/ms.uncat.plist'
> [4.214759] [msg_test/INFO] Declared tracing categories:
* of where the process has been during its execution. Migrations are represented by
* arrows from the origin to the destination host.
* You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/msg/process:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/msg/process:yes
* (See \ref tracing_tracing_options for details)
*/
#! ./tesh
p Tracing processes
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/procmig.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=tracing/buffer:1 --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=tracing/buffer:yes --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/procmig.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1 --cfg=tracing/buffer:0 --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to '0'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes --cfg=tracing/buffer:no --cfg=tracing/filename:tracing/procmig.trace --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/buffer' to 'no'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/procmig.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:0 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '0'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:no ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'no'
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/categorized:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/categorized:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/uncategorized:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/uncategorized:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:1 --cfg=tracing/msg/process:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/procmig$EXEEXT --cfg=tracing:yes --cfg=tracing/msg/process:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/procmig-deploy.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/msg/process' to 'yes'
$ rm -rf tracing/procmig.trace simgrid.trace
*
* - <b>tracing/simple.c</b> very simple program where each process creates, executes and
* destroy a task. You might want to run this program with the following parameters:
- * --cfg=tracing/uncategorized:1
+ * --cfg=tracing/uncategorized:yes
* (See \ref tracing_tracing_options for details)
*/
* platform file is traced to a Paje trace file format using the tracing
* mechanism of Simgrid.
* You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/categorized:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/categorized:yes
* (See \ref tracing_tracing_options for details)
*/
p Tracing master/slave application
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:1 --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:1 ${srcdir:=.}/tracing/platform.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:yes ${srcdir:=.}/tracing/platform.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/trace_platform.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
$ tail -n +3 tracing/trace_platform.trace
> %EventDef PajeDefineContainerType 0
$ rm -rf tracing/trace_platform.trace
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:1 --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:1 ${srcdir:=.}/../platforms/g5k.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/trace_platform$EXEEXT --cfg=tracing:yes --cfg=tracing/filename:tracing/trace_platform.trace --cfg=tracing/categorized:yes ${srcdir:=.}/../platforms/g5k.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'tracing/trace_platform.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
$ tail -n +3 tracing/trace_platform.trace
> %EventDef PajeDefineContainerType 0
* - <b>tracing/user_variables.c</b>: This program demonstrates how to
* trace user variables associated to the hosts of the platform file.
* You might want to run this program with the following parameters:
- * --cfg=tracing:1
- * --cfg=tracing/platform:1
+ * --cfg=tracing:yes
+ * --cfg=tracing/platform:yes
* (See \ref tracing_tracing_options for details)
*/
#! ./tesh
p Tracing user variables
-$ $SG_TEST_EXENV ${bindir:=.}/tracing/user_variables$EXEEXT --cfg=tracing:1 --cfg=tracing/platform:1 ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ $SG_TEST_EXENV ${bindir:=.}/tracing/user_variables$EXEEXT --cfg=tracing:yes --cfg=tracing/platform:yes ${srcdir:=.}/tracing/platform.xml ${srcdir:=.}/tracing/deployment.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
> [0.004078] [msg_test/INFO] Declared host variables:
> [0.004078] [msg_test/INFO] HDD_capacity
> [0.004078] [msg_test/INFO] HDD_utilization
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${SCALA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${SCALA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
#! tesh
! output sort
-$ java -cp ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
+$ java -classpath ${classpath:=.} master_slave_bypass/MsBypass ${srcdir:=.}/master_slave_bypass/platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [alice:process2:(2) 0.000000] [jmsg/INFO] Slave Hello!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${SCALA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${SCALA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
+$ java -classpath ${classpath:=.} master_slave_kill/MsKill ${srcdir:=.}/master_slave_kill/platform.xml
> [0.000000] [jmsg/INFO] Using regular java threads. Coroutines could speed your simulation up.
> [0.013010] [jmsg/INFO] MSG_main finished; Cleaning up the simulation...
> [alice:slave:(2) 0.000000] [jmsg/INFO] Slave Hello!
add_custom_command(
COMMENT "Building ${example}..."
OUTPUT ${example}_compiled
- DEPENDS ${sources} SG_java_jar ${SIMGRID_JAR}
- COMMAND ${SCALA_COMPILE} -cp ${SIMGRID_JAR}
+ DEPENDS ${sources} simgrid-java_jar ${SIMGRID_JAR}
+ COMMAND ${SCALA_COMPILE} -classpath ${SIMGRID_JAR}
-d ${CMAKE_CURRENT_BINARY_DIR}/.. ${sources}
COMMAND ${CMAKE_COMMAND} -E remove ${example}_compiled
COMMAND ${CMAKE_COMMAND} -E touch ${example}_compiled
! output sort
-$ java -cp ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+$ java -classpath ${classpath:=.} masterslave/Masterslave ${srcdir:=.}/platform.xml ${srcdir:=.}/masterslave/masterslaveDeployment.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
> [ 0.000000] (1:masterslave.Master@Jacquelin) Hello! Got 7 slaves and 5 tasks to process
> [ 0.000000] (2:masterslave.Forwarder@Jackson) Receiving on 'slave_0'
> [ 0.000000] (3:masterslave.Forwarder@Casavant) Receiving on 'slave_1'
p Simple test of simdag
-$ $SG_TEST_EXENV ./simdag_tracing --cfg=tracing:1 --cfg=tracing/categorized:1 ${srcdir:=.}/2clusters.xml
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
+$ $SG_TEST_EXENV ./simdag_tracing --cfg=tracing:yes --cfg=tracing/categorized:yes ${srcdir:=.}/2clusters.xml
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
> [0.000000] [surf_workstation/INFO] surf_workstation_model_init_ptask_L07
> [0.000000] [sd_seq_access/INFO] Access mode of C2-05 is sequential
> [0.000000] [sd_seq_access/INFO] Access mode of C2-06 is sequential
XBT_LOG_NEW_DEFAULT_CATEGORY(MM_Summa,
"Messages specific for this msg example");
-inline double Summa(
- double *a, double *b, double *c,
- size_t lda, size_t ldb, size_t ldc,
- size_t m, size_t k_a, size_t k_b, size_t n,
- size_t Block_size, size_t start, size_t end,
- size_t row, size_t col, size_t size_row, size_t size_col,
- double *a_local, double *b_local,
- MPI_Datatype Block_a, MPI_Datatype Block_a_local,
- MPI_Datatype Block_b,
- MPI_Comm row_comm, MPI_Comm col_comm, int subs)
+double Summa(double *a, double *b, double *c,
+ size_t lda, size_t ldb, size_t ldc,
+ size_t m, size_t k_a, size_t k_b, size_t n,
+ size_t Block_size, size_t start, size_t end,
+ size_t row, size_t col, size_t size_row, size_t size_col,
+ double *a_local, double *b_local,
+ MPI_Datatype Block_a, MPI_Datatype Block_a_local,
+ MPI_Datatype Block_b,
+ MPI_Comm row_comm, MPI_Comm col_comm, int subs)
{
double *B_a , *B_b ; //matrix blocks
size_t err;
write(*, 239) np1*np2, np
239 format(' Product is ', i5, ' and should be ', i5)
call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+ stop
endif
c---------------------------------------------------------------------
240 format(' Layout type specified in inputft.data is
> invalid ')
call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+ stop
endif
c---------------------------------------------------------------------
write(*, 241)
241 format(' For 0D layout, both np1 and np2 must be 1 ')
call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+ stop
endif
c---------------------------------------------------------------------
c 4. 1D layout must be 1xN grid
write(*, 242)
242 format(' For 1D layout, np1 must be 1 ')
call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+ stop
endif
else
write(*, 11) np
11 format(' Only ', i5, ' processors found ')
call MPI_Abort(MPI_COMM_WORLD, 1, ierr)
+ stop
endif
234 format(' No input file inputft.data. Using compiled defaults')
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+
+if(enable_smpi)
+ if(WIN32)
+ set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
+ else()
+ set(CMAKE_C_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpicc")
+ endif()
+
+ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+ include_directories("${CMAKE_HOME_DIRECTORY}/include/smpi")
+
+ add_executable(se se.c)
+ target_link_libraries(se simgrid)
+endif()
+
+set(tesh_files
+ ${tesh_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+ PARENT_SCOPE
+ )
+set(xml_files
+ ${xml_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/platform.xml
+ PARENT_SCOPE
+ )
+set(examples_src
+ ${examples_src}
+ ${CMAKE_CURRENT_SOURCE_DIR}/se.c
+ PARENT_SCOPE
+ )
+set(bin_files
+ ${bin_files}
+ PARENT_SCOPE
+ )
+set(txt_files
+ ${txt_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/hostfile
+ PARENT_SCOPE
+ )
--- /dev/null
+p Test smpi bindings for dvfs functions (C example)
+$ ../../../smpi_script/bin/smpirun -np 2 -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/platform.xml --cfg=smpi/cpu_threshold:-1 ${bindir:=.}/se
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [0.000000] [rank 1] Pstates: 1; Powers: 100000000
+> [0.000000] [rank 0] Pstates: 3; Powers: 100000000, 50000000, 20000000
+> [0.000000] [rank 1] Current pstate: 0; Current power: 100000000
+> [0.000000] [rank 0] Current pstate: 0; Current power: 100000000
+> [10.000000] [rank 1] Energy consumed: 2000 Joules.
+> [10.000000] [rank 0] Energy consumed: 2000 Joules.
+> [10.000000] [rank 0] Current pstate: 1; Current power: 50000000
+> [30.000000] [rank 0] Energy consumed: 5400 Joules.
+> [30.000000] [rank 0] Current pstate: 2; Current power: 20000000
+> [80.000000] [rank 0] Energy consumed: 12900 Joules.
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+
+if(enable_smpi AND SMPI_F2C)
+ set(CMAKE_Fortran_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpiff")
+
+ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+
+ add_executable(sef sef.f)
+ target_link_libraries(sef simgrid)
+endif()
+
+set(tesh_files
+ ${tesh_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+ PARENT_SCOPE
+ )
+set(xml_files
+ ${xml_files}
+ PARENT_SCOPE
+ )
+set(examples_src
+ ${examples_src}
+ ${CMAKE_CURRENT_SOURCE_DIR}/sef.f
+ PARENT_SCOPE
+ )
+set(bin_files
+ ${bin_files}
+ PARENT_SCOPE
+ )
+set(txt_files
+ ${txt_files}
+ PARENT_SCOPE
+ )
--- /dev/null
+p Test smpi bindings for dvfs functions (Fortran 77 example)
+$ ../../../smpi_script/bin/smpirun -np 2 -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/platform.xml --cfg=smpi/cpu_threshold:-1 ${bindir:=.}/f77/sef
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.] [rank 0] 3pstates available
+> [ 0.] [rank 1] 1pstates available
+> [ 0.] [rank 0] Power: 100000000.
+> [ 0.] [rank 1] Power: 100000000.
+> [ 0.] [rank 0] Power: 50000000.
+> [ 0.] [rank 0] Power: 20000000.
+> [ 0.] [rank 1] Current pstate: 0; Current power: 100000000.
+> [ 0.] [rank 0] Current pstate: 0; Current power: 100000000.
+> [ 10.] [rank 1]Energy consumed (Joules): 2000.
+> [ 10.] [rank 0]Energy consumed (Joules): 2000.
+> [ 10.] [rank 0] Current pstate: 1; Current power: 50000000.
+> [ 30.] [rank 0]Energy consumed (Joules): 5400.
+> [ 30.] [rank 0] Current pstate: 2; Current power: 20000000.
+> [ 80.] [rank 0]Energy consumed (Joules): 12900.
--- /dev/null
+ program main
+ include 'mpif.h'
+
+ integer ierr
+ integer rank, pstates
+ integer i
+ double precision p, t, e
+
+ call MPI_Init(ierr)
+ call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+ pstates = smpi_get_host_nb_pstates()
+
+ t = MPI_Wtime()
+
+ print *, '[', t, '] [rank ', rank, ']',
+ & pstates, 'pstates available'
+
+ do i = 0, pstates - 1
+ p = smpi_get_host_power_peak_at(i)
+ print *, '[', t, '] [rank ', rank, '] Power: ', p
+ end do
+
+ do i = 0, pstates - 1
+ call smpi_set_host_power_peak_at(i)
+ t = MPI_Wtime()
+ p = smpi_get_host_current_power_peak()
+ print *, '[', t, '] [rank ', rank, '] Current pstate: ', i,
+ & '; Current power: ', p
+
+ e = 1e9
+ call smpi_execute_flops(e)
+
+ t = MPI_Wtime()
+ e = smpi_get_host_consumed_energy()
+ print *, '[', t, '] [rank ', rank, ']',
+ & 'Energy consumed (Joules): ', e
+ end do
+
+ call MPI_Finalize(ierr)
+
+ end program main
--- /dev/null
+cmake_minimum_required(VERSION 2.6)
+
+if(enable_smpi AND SMPI_F90)
+ set(CMAKE_Fortran_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpif90")
+
+ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
+
+ add_executable(sef90 sef90.f90)
+ target_link_libraries(sef90 simgrid)
+endif()
+
+set(tesh_files
+ ${tesh_files}
+ ${CMAKE_CURRENT_SOURCE_DIR}/energy.tesh
+ PARENT_SCOPE
+ )
+set(xml_files
+ ${xml_files}
+ PARENT_SCOPE
+ )
+set(examples_src
+ ${examples_src}
+ ${CMAKE_CURRENT_SOURCE_DIR}/sef90.f90
+ PARENT_SCOPE
+ )
+set(bin_files
+ ${bin_files}
+ PARENT_SCOPE
+ )
+set(txt_files
+ ${txt_files}
+ PARENT_SCOPE
+ )
--- /dev/null
+p Test smpi bindings for dvfs functions (Fortran 90 example)
+$ ../../../smpi_script/bin/smpirun -np 2 -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/platform.xml --cfg=smpi/cpu_threshold:-1 ${bindir:=.}/f90/sef90
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [ 0.0000000000000000 ] [rank 0 ] 3 pstates available
+> [ 0.0000000000000000 ] [rank 1 ] 1 pstates available
+> [ 0.0000000000000000 ] [rank 0 ] Power: 100000000.00000000
+> [ 0.0000000000000000 ] [rank 1 ] Power: 100000000.00000000
+> [ 0.0000000000000000 ] [rank 0 ] Power: 50000000.000000000
+> [ 0.0000000000000000 ] [rank 0 ] Power: 20000000.000000000
+> [ 0.0000000000000000 ] [rank 1 ] Current pstate: 0 ; Current power: 100000000.00000000
+> [ 0.0000000000000000 ] [rank 0 ] Current pstate: 0 ; Current power: 100000000.00000000
+> [ 10.000000000000000 ] [rank 1 ] Energy consumed (Joules): 2000.0000000000000
+> [ 10.000000000000000 ] [rank 0 ] Energy consumed (Joules): 2000.0000000000000
+> [ 10.000000000000000 ] [rank 0 ] Current pstate: 1 ; Current power: 50000000.000000000
+> [ 30.000000000000000 ] [rank 0 ] Energy consumed (Joules): 5400.0000000000000
+> [ 30.000000000000000 ] [rank 0 ] Current pstate: 2 ; Current power: 20000000.000000000
+> [ 80.000000000000000 ] [rank 0 ] Energy consumed (Joules): 12900.000000000000
--- /dev/null
+program main
+ use mpi
+
+ integer ierr
+ integer rank, pstates
+ integer i
+ double precision p, t, e
+
+ call MPI_Init(ierr)
+ call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
+
+ pstates = smpi_get_host_nb_pstates()
+
+ t = MPI_Wtime()
+
+ print *, '[', t, '] [rank ', rank, ']', pstates, 'pstates available'
+ do i = 0, pstates - 1
+ p = smpi_get_host_power_peak_at(i)
+ print *, '[', t, '] [rank ', rank, '] Power: ', p
+ end do
+
+ do i = 0, pstates - 1
+ call smpi_set_host_power_peak_at(i)
+ t = MPI_Wtime()
+ p = smpi_get_host_current_power_peak()
+ print *, '[', t, '] [rank ', rank, '] Current pstate: ', i, '; Current power: ', p
+
+ e = 1e9
+ call smpi_execute_flops(e)
+
+ t = MPI_Wtime()
+ e = smpi_get_host_consumed_energy()
+ print *, '[', t, '] [rank ', rank, '] Energy consumed (Joules): ', e
+ end do
+
+ call MPI_Finalize(ierr)
+
+end program main
--- /dev/null
+MyHost1
+MyHost2
--- /dev/null
+<?xml version='1.0'?>
+<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
+<platform version="3">
+<AS id="AS0" routing="Full">
+ <!-- Multiple pstate processor capacities can be defined as a list of powers specified for a given host -->
+ <!-- The enabled pstate can be set through the "pstate" attribute (lowest pstate corresponds to the highest processor power) -->
+ <host id="MyHost1" power="100.0Mf,50.0Mf,20.0Mf" pstate="0" >
+ <!-- List of min_power:max_power pairs (in Watts) corresponding to the power consumed when the processor is idle and when it is fully loaded -->
+ <!-- The list must contain one power pair for each previously defined pstate-->
+ <prop id="power_per_state" value="95.0:200.0, 93.0:170.0, 90.0:150.0" />
+ </host>
+ <host id="MyHost2" power="100.0Mf" >
+ <prop id="power_per_state" value="95.0:200.0" />
+ </host>
+</AS>
+</platform>
--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <mpi.h>
+#include <smpi/smpi.h>
+
+int main(int argc, char *argv[])
+{
+ int rank, pstates;
+ int i;
+ char buf[1024];
+ char *s;
+ size_t sz, x;
+
+ if (MPI_Init(&argc, &argv) != MPI_SUCCESS) {
+ printf("MPI initialization failed!\n");
+ exit(EXIT_FAILURE);
+ }
+
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank); /* Get id of this process */
+
+ pstates = smpi_get_host_nb_pstates();
+
+ s = buf;
+ sz = sizeof buf;
+ x = snprintf(s, sz,
+ "[%.6f] [rank %d] Pstates: %d; Powers: %.0f",
+ MPI_Wtime(), rank, pstates, smpi_get_host_power_peak_at(0));
+ if (x < sz) {
+ s += x;
+ sz -= x;
+ } else
+ sz = 0;
+ for (i = 1; i < pstates; i++) {
+ x = snprintf(s, sz, ", %.0f", smpi_get_host_power_peak_at(i));
+ if (x < sz) {
+ s += x;
+ sz -= x;
+ } else
+ sz = 0;
+ }
+ printf("%s%s\n", buf, (sz ? "" : " [...]"));
+
+ for (i = 0; i < pstates; i++) {
+ smpi_set_host_power_peak_at(i);
+ printf("[%.6f] [rank %d] Current pstate: %d; Current power: %.0f\n",
+ MPI_Wtime(), rank, i, smpi_get_host_current_power_peak());
+
+ SMPI_SAMPLE_FLOPS(1e9) {
+ /* imagine here some code running for 1e9 flops... */
+ }
+
+ printf("[%.6f] [rank %d] Energy consumed: %g Joules.\n",
+ MPI_Wtime(), rank, smpi_get_host_consumed_energy());
+ }
+
+ return MPI_Finalize();
+}
1 init
2 init
-0 allReduce 5e8 5e8
-1 allReduce 5e8 5e8
-2 allReduce 5e8 5e8
+0 allReduce 5e4 5e8
+1 allReduce 5e4 5e8
+2 allReduce 5e4 5e8
0 compute 5e8
1 compute 5e8
1 init
2 init
-0 bcast 5e8
-1 bcast 5e8
-2 bcast 5e8
+0 bcast 5e4
+1 bcast 5e4
+2 bcast 5e4
0 compute 5e8
1 compute 2e8
2 compute 5e8
-0 bcast 5e8
-1 bcast 5e8
-2 bcast 5e8
+0 bcast 5e4
+1 bcast 5e4
+2 bcast 5e4
0 compute 5e8
1 compute 2e8
2 compute 5e8
-0 reduce 5e8 5e8
-1 reduce 5e8 5e8
-2 reduce 5e8 5e8
+0 reduce 5e4 5e8
+1 reduce 5e4 5e8
+2 reduce 5e4 5e8
0 finalize
1 finalize
1 init 1
2 init 1
-0 bcast 5e8 1 0
-1 bcast 5e8 1 0
-2 bcast 5e8 1 0
+0 bcast 5e4 1 0
+1 bcast 5e4 1 0
+2 bcast 5e4 1 0
0 compute 5e8
1 compute 2e8
2 compute 5e8
-0 bcast 5e8 0 3
-1 bcast 5e8 0 3
-2 bcast 5e8 0 3
+0 bcast 5e4 0 3
+1 bcast 5e4 0 3
+2 bcast 5e4 0 3
0 compute 5e8
1 compute 2e8
2 compute 5e8
-0 reduce 5e8 5e8 0 4
-1 reduce 5e8 5e8 0 4
-2 reduce 5e8 5e8 0 4
+0 reduce 5e4 5e8 0 4
+1 reduce 5e4 5e8 0 4
+2 reduce 5e4 5e8 0 4
0 finalize
1 finalize
1 reduceScatter 275427 275427 275427 204020 12396024 0
2 reduceScatter 275427 275427 275427 204020 12501522 0
3 reduceScatter 275427 275427 275427 204020 12403123 0
-~
+
0 finalize
1 finalize
2 finalize
1 init
2 init
-0 send 1 1e9
+0 send 1 1e6
0 compute 1e9
-0 recv 2 1e9
+0 recv 2 1e6
-1 Irecv 0 1e9
+1 Irecv 0 1e6
1 compute 1e9
1 wait
-1 send 2 1e9
+1 send 2 1e6
-2 Irecv 1 1e9
+2 Irecv 1 1e6
2 compute 5e8
2 wait
-2 Isend 0 1e9
+2 Isend 0 1e6
2 compute 5e8
0 finalize
$ mkfile replay/one_trace
! timeout 60
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Fafard:2:(0) 65.176535] [smpi_replay/VERBOSE] 2 bcast 5e8 65.176535
-> [Fafard:2:(0) 71.729958] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Jupiter:1:(0) 73.739750] [smpi_replay/VERBOSE] 1 bcast 5e8 73.739750
-> [Tremblay:0:(0) 73.739750] [smpi_replay/VERBOSE] 0 bcast 5e8 73.739750
-> [Jupiter:1:(0) 76.361119] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
-> [Tremblay:0:(0) 78.836850] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
-> [Fafard:2:(0) 144.013385] [smpi_replay/VERBOSE] 2 bcast 5e8 72.283426
-> [Fafard:2:(0) 150.566808] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Jupiter:1:(0) 152.576600] [smpi_replay/VERBOSE] 1 bcast 5e8 76.215480
-> [Tremblay:0:(0) 152.576600] [smpi_replay/VERBOSE] 0 bcast 5e8 73.739750
-> [Jupiter:1:(0) 155.197969] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
-> [Tremblay:0:(0) 157.673699] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
-> [Fafard:2:(0) 229.403658] [smpi_replay/VERBOSE] 2 reduce 5e8 5e8 78.836850
-> [Tremblay:0:(0) 236.510549] [smpi_replay/VERBOSE] 0 reduce 5e8 5e8 78.836850
-> [Jupiter:1:(0) 237.966873] [smpi_replay/VERBOSE] 1 reduce 5e8 5e8 82.768904
-> [Jupiter:1:(0) 237.966873] [smpi_replay/INFO] Simulation time 237.967
+> [Tremblay:0:(0) 0.000000] [smpi_replay/VERBOSE] 0 bcast 5e4 0.000000
+> [Jupiter:1:(0) 0.015036] [smpi_replay/VERBOSE] 1 bcast 5e4 0.015036
+> [Fafard:2:(0) 0.015676] [smpi_replay/VERBOSE] 2 bcast 5e4 0.015676
+> [Jupiter:1:(0) 2.636405] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
+> [Tremblay:0:(0) 5.097100] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
+> [Tremblay:0:(0) 5.097100] [smpi_replay/VERBOSE] 0 bcast 5e4 0.000000
+> [Jupiter:1:(0) 5.112136] [smpi_replay/VERBOSE] 1 bcast 5e4 2.475730
+> [Fafard:2:(0) 6.569099] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Fafard:2:(0) 6.584775] [smpi_replay/VERBOSE] 2 bcast 5e4 0.015676
+> [Jupiter:1:(0) 7.733505] [smpi_replay/VERBOSE] 1 compute 2e8 2.621369
+> [Tremblay:0:(0) 10.194200] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
+> [Fafard:2:(0) 13.138198] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Jupiter:1:(0) 14.286929] [smpi_replay/VERBOSE] 1 reduce 5e4 5e8 6.553424
+> [Tremblay:0:(0) 18.250974] [smpi_replay/VERBOSE] 0 reduce 5e4 5e8 8.056774
+> [Fafard:2:(0) 19.691622] [smpi_replay/VERBOSE] 2 reduce 5e4 5e8 6.553424
+> [Fafard:2:(0) 19.691622] [smpi_replay/INFO] Simulation time 19.6916
$ rm -f replay/one_trace
< replay/actions_bcast.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=no_loc --cfg=tracing:1 --cfg=tracing/smpi:1 --cfg=tracing/smpi/computing:1 --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=no_loc --cfg=tracing:yes --cfg=tracing/smpi:yes --cfg=tracing/smpi/computing:yes --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Jupiter:1:(0) 237.966873] [smpi_replay/INFO] Simulation time 237.967
+> [Fafard:2:(0) 19.691622] [smpi_replay/INFO] Simulation time 19.6916
$ rm -f replay/one_trace
> 4 3 0 1 1 MPI_LINK
> 6 0 1 1 0 "rank-0"
> 5 4 2 computing "0 1 1"
-> 5 5 2 action_bcast "0 0.78 0.39"
+> 5 5 2 smpi_replay_init "0 1 0"
+> 5 6 2 action_bcast "0 0.78 0.39"
> 6 0 2 1 0 "rank-1"
> 6 0 3 1 0 "rank-2"
> 12 0 2 1 4
-> 13 0 2 1
> 12 0 2 1 5
+> 13 0 2 1
+> 12 0 2 1 6
> 12 0 2 2 4
-> 13 0 2 2
> 12 0 2 2 5
+> 13 0 2 2
+> 12 0 2 2 6
> 12 0 2 3 4
-> 13 0 2 3
> 12 0 2 3 5
-> 13 65.176535 2 3
-> 12 65.176535 2 3 4
-> 13 71.729958 2 3
-> 12 71.729958 2 3 5
-> 13 73.739750 2 2
-> 12 73.739750 2 2 4
-> 13 73.739750 2 1
-> 12 73.739750 2 1 4
-> 5 6 2 action_reduce "0 1 0"
-> 13 76.361119 2 2
-> 12 76.361119 2 2 5
-> 13 78.836850 2 1
-> 12 78.836850 2 1 5
-> 13 144.013385 2 3
-> 12 144.013385 2 3 4
-> 13 150.566808 2 3
-> 12 150.566808 2 3 6
-> 13 152.576600 2 2
-> 12 152.576600 2 2 4
-> 13 152.576600 2 1
-> 12 152.576600 2 1 4
-> 13 155.197969 2 2
-> 12 155.197969 2 2 6
-> 13 157.673699 2 1
-> 12 157.673699 2 1 6
-> 13 229.403658 2 3
-> 12 229.403658 2 3 4
-> 13 236.510549 2 1
-> 12 236.510549 2 1 4
-> 13 237.966873 2 2
-> 12 237.966873 2 2 4
-> 13 237.972762 2 2
-> 7 237.972762 1 2
-> 13 237.973799 2 3
-> 7 237.973799 1 3
-> 13 237.979818 2 1
-> 7 237.979818 1 1
+> 13 0 2 3
+> 12 0 2 3 6
+> 13 0 2 1
+> 12 0 2 1 4
+> 13 0.015036 2 2
+> 12 0.015036 2 2 4
+> 13 0.015676 2 3
+> 12 0.015676 2 3 4
+> 13 2.636405 2 2
+> 12 2.636405 2 2 6
+> 13 5.097100 2 1
+> 12 5.097100 2 1 6
+> 13 5.097100 2 1
+> 12 5.097100 2 1 4
+> 5 7 2 action_reduce "0 1 0"
+> 13 5.112136 2 2
+> 12 5.112136 2 2 4
+> 13 6.569099 2 3
+> 12 6.569099 2 3 6
+> 13 6.584775 2 3
+> 12 6.584775 2 3 4
+> 13 7.733505 2 2
+> 12 7.733505 2 2 7
+> 13 10.194200 2 1
+> 12 10.194200 2 1 7
+> 13 13.138198 2 3
+> 12 13.138198 2 3 7
+> 5 8 2 smpi_replay_finalize "0 1 0"
+> 13 14.286929 2 2
+> 13 18.250974 2 1
+> 13 19.691622 2 3
+> 12 19.695603 2 1 8
+> 12 19.698548 2 2 8
+> 13 19.698548 2 2
+> 7 19.698548 1 2
+> 12 19.699584 2 3 8
+> 13 19.699584 2 3
+> 7 19.699584 1 3
+> 13 19.705603 2 1
+> 7 19.705603 1 1
$ rm -f ./simgrid.trace
< replay/actions1.txt
$ mkfile ./split_traces_tesh
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 2 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay ./split_traces_tesh
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 2 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay ./split_traces_tesh
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [Tremblay:0:(0) 0.164463] [smpi_replay/VERBOSE] 0 send 1 1e6 0.164463
> [Jupiter:1:(0) 0.164463] [smpi_replay/VERBOSE] 1 recv 0 1e6 0.164463
> [Tremblay:0:(0) 13.435773] [smpi_replay/VERBOSE] 0 recv 1 1e6 13.271310
> [Jupiter:1:(0) 13.600235] [smpi_replay/VERBOSE] 1 wait 0.328926
> [Tremblay:0:(0) 13.600235] [smpi_replay/VERBOSE] 0 send 1 1e6 0.164463
-> [Tremblay:0:(0) 13.600235] [smpi_replay/INFO] Simulation time 13.6002
+> [Jupiter:1:(0) 13.600235] [smpi_replay/INFO] Simulation time 13.6002
$ rm -f ./split_traces_tesh
< replay/actions_barrier.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [Tremblay:0:(0) 1.491472] [smpi_replay/VERBOSE] 0 send 1 1e7 1.491472
> [Jupiter:1:(0) 1.491472] [smpi_replay/VERBOSE] 1 recv 0 1e7 1.491472
< replay/actions_with_isend.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Jupiter:1:(0) 0.000000] [smpi_replay/VERBOSE] 1 Irecv 0 1e9 0.000000
-> [Fafard:2:(0) 0.000000] [smpi_replay/VERBOSE] 2 Irecv 1 1e9 0.000000
+> [Jupiter:1:(0) 0.000000] [smpi_replay/VERBOSE] 1 Irecv 0 1e6 0.000000
+> [Fafard:2:(0) 0.000000] [smpi_replay/VERBOSE] 2 Irecv 1 1e6 0.000000
+> [Tremblay:0:(0) 0.164463] [smpi_replay/VERBOSE] 0 send 1 1e6 0.164463
> [Fafard:2:(0) 6.553424] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Tremblay:0:(0) 10.358662] [smpi_replay/VERBOSE] 0 compute 1e9 10.194200
> [Jupiter:1:(0) 13.106847] [smpi_replay/VERBOSE] 1 compute 1e9 13.106847
-> [Tremblay:0:(0) 147.462483] [smpi_replay/VERBOSE] 0 send 1 1e9 147.462483
-> [Jupiter:1:(0) 147.462483] [smpi_replay/VERBOSE] 1 wait 134.355636
-> [Tremblay:0:(0) 157.656682] [smpi_replay/VERBOSE] 0 compute 1e9 10.194200
-> [Fafard:2:(0) 294.947973] [smpi_replay/VERBOSE] 2 wait 288.394550
-> [Jupiter:1:(0) 294.947973] [smpi_replay/VERBOSE] 1 send 2 1e9 147.485491
-> [Fafard:2:(0) 294.947973] [smpi_replay/VERBOSE] 2 Isend 0 1e9 0.000000
-> [Fafard:2:(0) 301.501397] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Tremblay:0:(0) 425.278035] [smpi_replay/VERBOSE] 0 recv 2 1e9 267.621353
-> [Tremblay:0:(0) 425.278035] [smpi_replay/INFO] Simulation time 425.278
+> [Jupiter:1:(0) 13.106847] [smpi_replay/VERBOSE] 1 wait 0.000000
+> [Fafard:2:(0) 13.294318] [smpi_replay/VERBOSE] 2 wait 6.740894
+> [Jupiter:1:(0) 13.294318] [smpi_replay/VERBOSE] 1 send 2 1e6 0.187471
+> [Fafard:2:(0) 13.294318] [smpi_replay/VERBOSE] 2 Isend 0 1e6 0.000000
+> [Tremblay:0:(0) 13.447633] [smpi_replay/VERBOSE] 0 recv 2 1e6 3.088971
+> [Fafard:2:(0) 19.847741] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Fafard:2:(0) 19.847741] [smpi_replay/INFO] Simulation time 19.8477
+
$ rm -f replay/one_trace
< replay/actions_allReduce.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
-> [Fafard:2:(0) 144.013385] [smpi_replay/VERBOSE] 2 allReduce 5e8 5e8 144.013385
-> [Fafard:2:(0) 150.566808] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
-> [Jupiter:1:(0) 154.032923] [smpi_replay/VERBOSE] 1 allReduce 5e8 5e8 154.032923
-> [Tremblay:0:(0) 154.032923] [smpi_replay/VERBOSE] 0 allReduce 5e8 5e8 154.032923
-> [Tremblay:0:(0) 159.130023] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
-> [Jupiter:1:(0) 160.586347] [smpi_replay/VERBOSE] 1 compute 5e8 6.553424
-> [Jupiter:1:(0) 160.586347] [smpi_replay/INFO] Simulation time 160.586
+> [Tremblay:0:(0) 5.112775] [smpi_replay/VERBOSE] 0 allReduce 5e4 5e8 5.112775
+> [Jupiter:1:(0) 6.568459] [smpi_replay/VERBOSE] 1 allReduce 5e4 5e8 6.568459
+> [Fafard:2:(0) 6.569099] [smpi_replay/VERBOSE] 2 allReduce 5e4 5e8 6.569099
+> [Tremblay:0:(0) 10.209875] [smpi_replay/VERBOSE] 0 compute 5e8 5.097100
+> [Jupiter:1:(0) 13.121883] [smpi_replay/VERBOSE] 1 compute 5e8 6.553424
+> [Fafard:2:(0) 13.122523] [smpi_replay/VERBOSE] 2 compute 5e8 6.553424
+> [Fafard:2:(0) 13.122523] [smpi_replay/INFO] Simulation time 13.1225
$ rm -f replay/one_trace
< replay/actions_alltoall.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [Tremblay:0:(0) 0.004041] [smpi_replay/VERBOSE] 0 allToAll 500 500 0.004041
> [Jupiter:1:(0) 0.006920] [smpi_replay/VERBOSE] 1 allToAll 500 500 0.006920
< replay/actions_alltoallv.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [Tremblay:0:(0) 0.003999] [smpi_replay/VERBOSE] 0 allToAllV 100 1 40 30 1000 1 80 100 0.003999
> [Jupiter:1:(0) 0.006934] [smpi_replay/VERBOSE] 1 allToAllV 1000 80 1 40 1000 40 1 30 0.006934
< replay/actions_allgatherv.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [Tremblay:0:(0) 0.841244] [smpi_replay/VERBOSE] 0 allGatherV 275427 275427 275427 275427 204020 0 0 0.841244
> [Fafard:2:(0) 1.239482] [smpi_replay/VERBOSE] 2 allGatherV 275427 275427 275427 275427 204020 0 0 1.239482
< replay/actions_waitall.txt
$ mkfile replay/one_trace
-$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.thresh:critical --log=smpi_replay.thresh:verbose --log=no_loc --cfg=smpi/cpu_threshold:-1 -np 3 -platform ${srcdir:=.}/replay/replay_platform.xml -hostfile ${srcdir:=.}/hostfile ./smpi_replay replay/one_trace
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [Tremblay:0:(0) 0.000000] [smpi_replay/VERBOSE] 0 Irecv 1 2000 0.000000
> [Jupiter:1:(0) 0.000000] [smpi_replay/VERBOSE] 1 Isend 0 2000 0.000000
p Test instrumentation of SMPI
$ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
p Another SMPI test
$ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced_simple
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
p Testing grouped tracing
$ ../../smpi_script/bin/smpirun -trace -trace-grouped -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml -np 3 ./smpi_traced_simple
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/group' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/group' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
p Testing generation of viva configuration files
-$ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-viva -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml --cfg=smpi/cpu_threshold:1 -np 3 ./smpi_traced_simple
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
+$ ../../smpi_script/bin/smpirun -trace -trace-resource -trace-viva -trace-file smpi_traced.trace -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../msg/tracing/platform.xml --cfg=smpi/cpu_threshold:-1 -np 3 ./smpi_traced_simple
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_traced.trace'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/categorized' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/uncategorized' to 'yes'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/categorized' to 'smpi_cat.plist'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'viva/uncategorized' to 'smpi_uncat.plist'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '1'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [0.013981] [instr_config/INFO] No categories declared, ignoring generation of viva graph configuration
--- /dev/null
+#!/bin/sh
+# Generate files from a given dwarf.h
+
+cat "$1" | grep DW_TAG_ | sed 's/.*\(DW_TAG_[^ ]*\) = \(0x[0-9a-f]*\).*/case \2: return "\1";/' > src/mc/mc_dwarf_tagnames.h
+cat "$1" | grep DW_AT_ | sed 's/.*\(DW_AT_[^ ]*\) = \(0x[0-9a-f]*\).*/case \2: return "\1";/' > src/mc/mc_dwarf_attrnames.h
XBT_PUBLIC(void) MSG_file_dump(msg_file_t fd);
XBT_PUBLIC(int) MSG_file_unlink(msg_file_t fd);
XBT_PUBLIC(xbt_dict_t) MSG_file_ls(const char *mount, const char *path);
+XBT_PUBLIC(msg_error_t) MSG_file_move (msg_file_t fd, msg_host_t dest, char* mount, char* fullname);
+XBT_PUBLIC(msg_error_t) MSG_file_seek (msg_file_t fd, sg_storage_size_t offset, int whence);
+XBT_PUBLIC(msg_error_t) MSG_file_rename (msg_file_t fd, char* new_name);
XBT_PUBLIC(void) __MSG_file_get_info(msg_file_t fd);
-
/************************** Storage handling ***********************************/
XBT_PUBLIC(msg_host_t) MSG_get_storage_by_name(const char *name);
XBT_PUBLIC(const char *) MSG_storage_get_name(msg_storage_t storage);
extern int _sg_do_model_check; /* please don't use directly: we inline MC_is_active, but that's what you should use */
extern int _sg_mc_visited;
-#define MC_is_active() _sg_do_model_check
-#define MC_visited_reduction() _sg_mc_visited
+#define MC_is_active() _sg_do_model_check
+#define MC_visited_reduction() _sg_mc_visited
XBT_PUBLIC(void) MC_assert(int);
XBT_PUBLIC(int) MC_random(int min, int max);
#else
-#define MC_assert(a) xbt_assert(a)
-#define MC_is_active() 0
-#define MC_visited_reduction() 0
+#define MC_is_active() 0
+#define MC_visited_reduction() 0
+
+#define MC_assert(a) xbt_assert(a)
+#define MC_random(a, b) 0
+#define MC_automaton_new_propositional_symbol(a, b) ((void)0)
+#define MC_snapshot() ((void*)0)
+#define MC_compare_snapshots(a, b) 0
+#define MC_cut() ((void)0)
+#define MC_ignore(a, b) ((void)0)
#endif
#define SIMGRID_VERSION_MINOR @SIMGRID_VERSION_MINOR@
#define SIMGRID_VERSION_PATCH @SIMGRID_VERSION_PATCH@
+#define SIMGRID_VERSION_STRING "@SIMGRID_VERSION_STRING@"
+
/* Version X.Y.Z will get version number XYZ: all digits concatenated without dots
* (with Y and Z must be on two positions)*/
double precision MPI_WTIME
double precision MPI_WTICK
+
+ external smpi_execute_flops
+ external smpi_execute
+ external smpi_get_host_power_peak_at
+ external smpi_get_host_current_power_peak
+ external smpi_get_host_nb_pstates
+ external smpi_set_host_power_peak_at
+ external smpi_get_host_consumed_energy
+
+ double precision smpi_get_host_power_peak_at
+ double precision smpi_get_host_current_power_peak
+ integer smpi_get_host_nb_pstates
+ double precision smpi_get_host_consumed_energy
XBT_PUBLIC(void) smpi_exit(int);
*/
+XBT_PUBLIC(void) smpi_execute_flops(double flops);
+XBT_PUBLIC(void) smpi_execute(double duration);
+
+XBT_PUBLIC(double) smpi_get_host_power_peak_at(int pstate_index);
+XBT_PUBLIC(double) smpi_get_host_current_power_peak(void);
+XBT_PUBLIC(int) smpi_get_host_nb_pstates(void);
+XBT_PUBLIC(void) smpi_set_host_power_peak_at(int pstate_index);
+XBT_PUBLIC(double) smpi_get_host_consumed_energy(void);
+
XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs);
XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv);
XBT_PUBLIC(unsigned long long) smpi_rastro_resolution (void);
XBT_PUBLIC(int) smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[]);
XBT_PUBLIC(void) __attribute__((weak)) user_main_(void);
XBT_PUBLIC(int) smpi_process_index(void);
+XBT_PUBLIC(void) smpi_process_init(int *argc, char ***argv);
/* Trace replay specific stuff */
XBT_PUBLIC(void) smpi_replay_init(int *argc, char***argv);
XBT_PUBLIC_DATA(__thread int) smpi_current_rank;
-XBT_PUBLIC(void) smpi_process_init(int *argc, char ***argv);
XBT_PUBLIC(int) smpi_process_argc(void);
XBT_PUBLIC(int) smpi_process_getarg(integer* index, char* dst, ftnlen len);
XBT_PUBLIC(int) smpi_global_size(void);
#define THROW_UNIMPLEMENTED \
THROWF(unknown_error, 0, "Function %s unimplemented",_XBT_FUNCTION)
-#ifndef NDEBUG
-# define DIE_IMPOSSIBLE xbt_assert(0,"The Impossible Did Happen (yet again)")
-#else
-# define DIE_IMPOSSIBLE exit(1);
-#endif
+#define DIE_IMPOSSIBLE xbt_die("The Impossible Did Happen (yet again)")
/** @brief re-throwing of an already caught exception (ie, pass it to the upper catch block)
* @hideinitializer
return;
try {
/* prefer the version on disk, if existing */
- System.loadLibrary("SG_java");
+ System.loadLibrary("simgrid-java");
} catch (UnsatisfiedLinkError e) {
/* If not found, unpack the one bundled into the jar file and use it */
loadLib("simgrid");
- loadLib("SG_java");
+ loadLib("simgrid-java");
}
isNativeInited = true;
}
#include "xbt/swag.h"
#include "xbt/fifo.h"
+#include <libunwind.h>
+#include <dwarf.h>
+
SG_BEGIN_DECL()
/******************************* Transitions **********************************/
/************ DWARF structures *************/
-typedef enum{
- e_dw_base_type = 0,
- e_dw_enumeration_type,
- e_dw_enumerator,
- e_dw_typedef,
- e_dw_const_type,
- e_dw_array_type,
- e_dw_pointer_type,
- e_dw_structure_type,
- e_dw_union_type,
- e_dw_subroutine_type,
- e_dw_volatile_type
-}e_dw_type_type;
+typedef int e_dw_type_type;
typedef struct s_dw_type{
e_dw_type_type type;
- void *id;
- char *name;
- int size;
- char *dw_type_id;
- xbt_dynar_t members; /* if DW_TAG_structure_type */
+ void *id; /* Offset in the section (in hexadecimal form) */
+ char *name; /* Name of the type */
+ int byte_size; /* Size in bytes */
+ int element_count; /* Number of elements for array type */
+ char *dw_type_id; /* DW_AT_type */
+ xbt_dynar_t members; /* if DW_TAG_structure_type, DW_TAG_union_type*/
int is_pointer_type;
int offset;
}s_dw_type_t, *dw_type_t;
#define _SMPI_INTERFACE_H
#include "smpi/smpi.h"
-/********** Tracing **********/
-/* from smpi_instr.c */
-void TRACE_smpi_alloc(void);
-void TRACE_smpi_release(void);
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int size);
-void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
-void TRACE_smpi_send(int rank, int src, int dst, int size);
-void TRACE_smpi_recv(int rank, int src, int dst);
-void TRACE_smpi_init(int rank);
-void TRACE_smpi_finalize(int rank);
+
/** \brief MPI collective description
*/
XBT_PUBLIC(lmm_system_t) lmm_system_new(int selective_update);
XBT_PUBLIC(void) lmm_system_free(lmm_system_t sys);
-void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var);
XBT_PUBLIC(lmm_constraint_t) lmm_constraint_new(lmm_system_t sys, void *id,
double bound_value);
--- /dev/null
+/* Copyright (c) 2010-2013. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+#include "instr/instr_private.h"
+#include "xbt/virtu.h" /* sg_cmdline */
+#include "xbt/xbt_os_time.h"
+#include "simgrid/sg_config.h"
+
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_TI_trace, instr_trace, "tracing event system");
+
+extern FILE *tracing_file;
+double prefix=0.0;
+
+xbt_dict_t tracing_files = NULL;
+
+extern s_instr_trace_writer_t active_writer;
+
+void TRACE_TI_init(void)
+{
+ active_writer.print_PushState = print_TIPushState;
+ active_writer.print_CreateContainer=print_TICreateContainer;
+ active_writer.print_DestroyContainer=print_TIDestroyContainer;
+}
+
+void TRACE_TI_start(void)
+{
+ char *filename = TRACE_get_filename();
+ tracing_file = fopen(filename, "w");
+ if (tracing_file == NULL) {
+ THROWF(system_error, 1, "Tracefile %s could not be opened for writing.",
+ filename);
+ }
+
+ XBT_DEBUG("Filename %s is open for writing", filename);
+
+ /* output one line comment */
+ dump_comment(TRACE_get_comment());
+
+ /* output comment file */
+ dump_comment_file(TRACE_get_comment_file());
+
+}
+
+void TRACE_TI_end(void)
+{
+ xbt_dict_free(&tracing_files);
+ fclose(tracing_file);
+ char *filename = TRACE_get_filename();
+ XBT_DEBUG("Filename %s is closed", filename);
+}
+
+void print_TICreateContainer(paje_event_t event)
+{
+ //if we are in the mode with only one file
+ static FILE *temp = NULL;
+
+ if (tracing_files == NULL) {
+ tracing_files = xbt_dict_new_homogeneous(NULL);
+ //generate unique run id with time
+ prefix = xbt_os_time();
+ }
+
+ if (!xbt_cfg_get_boolean(_sg_cfg_set, "tracing/smpi/format/ti_one_file")
+ || temp == NULL) {
+ char *folder_name = bprintf("%s_files", TRACE_get_filename());
+ char *filename = bprintf("%s/%f_%s.txt", folder_name, prefix,
+ ((createContainer_t) event->data)->container->name);
+ mkdir(folder_name, S_IRWXU | S_IRWXG | S_IRWXO);
+ temp = fopen(filename, "w");
+ if (temp == NULL)
+ xbt_die("Tracefile %s could not be opened for writing: %s",
+ filename, strerror(errno));
+ fprintf(tracing_file, "%s\n", filename);
+
+ xbt_free(folder_name);
+ xbt_free(filename);
+ }
+
+ xbt_dict_set(tracing_files,
+ ((createContainer_t) event->data)->container->name,
+ (void *) temp, NULL);
+}
+
+void print_TIDestroyContainer(paje_event_t event)
+{
+ if (!xbt_cfg_get_boolean(_sg_cfg_set, "tracing/smpi/format/ti_one_file")||
+ xbt_dict_length(tracing_files) == 1) {
+ FILE* f = xbt_dict_get_or_null(tracing_files,
+ ((destroyContainer_t) event->data)->container->name);
+ fclose(f);
+ }
+ xbt_dict_remove(tracing_files, ((destroyContainer_t) event->data)->container->name);
+}
+
+
+void print_TIPushState(paje_event_t event)
+{
+
+
+ int i;
+
+ //char* function=NULL;
+ if (((pushState_t) event->data)->extra == NULL)
+ return;
+ instr_extra_data extra =
+ (instr_extra_data) (((pushState_t) event->data)->extra);
+
+ char *process_id = NULL;
+ //FIXME: dirty extract "rank-" from the name, as we want the bare process id here
+ if (strstr(((pushState_t) event->data)->container->name, "rank-") == NULL)
+ process_id = xbt_strdup(((pushState_t) event->data)->container->name);
+ else
+ process_id = xbt_strdup(((pushState_t) event->data)->container->name + 5);
+
+ FILE* trace_file = (FILE* )xbt_dict_get(tracing_files, ((pushState_t) event->data)->container->name);
+
+ switch (extra->type) {
+
+ case TRACING_INIT:
+ fprintf(trace_file, "%s init\n", process_id);
+ break;
+ case TRACING_FINALIZE:
+ fprintf(trace_file, "%s finalize\n", process_id);
+ break;
+ case TRACING_SEND:
+ fprintf(trace_file, "%s send %d %d %s\n", process_id, extra->dst,
+ extra->send_size, extra->datatype1);
+ break;
+ case TRACING_ISEND:
+ fprintf(trace_file, "%s isend %d %d %s\n", process_id, extra->dst,
+ extra->send_size, extra->datatype1);
+ break;
+ case TRACING_RECV:
+ fprintf(trace_file, "%s recv %d %d %s\n", process_id, extra->src,
+ extra->send_size, extra->datatype1);
+ break;
+ case TRACING_IRECV:
+ fprintf(trace_file, "%s irecv %d %d %s\n", process_id, extra->src,
+ extra->send_size, extra->datatype1);
+ break;
+ case TRACING_WAIT:
+ fprintf(trace_file, "%s wait\n", process_id);
+ break;
+ case TRACING_WAITALL:
+ fprintf(trace_file, "%s waitall\n", process_id);
+ break;
+ case TRACING_BARRIER:
+ fprintf(trace_file, "%s barrier\n", process_id);
+ break;
+ case TRACING_BCAST: // rank bcast size (root) (datatype)
+ fprintf(trace_file, "%s bcast %d ", process_id, extra->send_size);
+ if (extra->root != 0 || (extra->datatype1 && strcmp(extra->datatype1, "")))
+ fprintf(trace_file, "%d %s", extra->root, extra->datatype1);
+ fprintf(trace_file, "\n");
+ break;
+ case TRACING_REDUCE: // rank reduce comm_size comp_size (root) (datatype)
+ fprintf(trace_file, "%s reduce %d %f ", process_id, extra->send_size,
+ extra->comp_size);
+ if (extra->root != 0 || (extra->datatype1 && strcmp(extra->datatype1, "")))
+ fprintf(trace_file, "%d %s", extra->root, extra->datatype1);
+ fprintf(trace_file, "\n");
+ break;
+ case TRACING_ALLREDUCE: // rank allreduce comm_size comp_size (datatype)
+ fprintf(trace_file, "%s allreduce %d %f %s\n", process_id,
+ extra->send_size, extra->comp_size, extra->datatype1);
+ break;
+ case TRACING_ALLTOALL: // rank alltoall send_size recv_size (sendtype) (recvtype)
+ fprintf(trace_file, "%s alltoall %d %d %s %s\n", process_id,
+ extra->send_size, extra->recv_size, extra->datatype1,
+ extra->datatype2);
+ break;
+ case TRACING_ALLTOALLV: // rank alltoallv send_size [sendcounts] recv_size [recvcounts] (sendtype) (recvtype)
+ fprintf(trace_file, "%s alltoallv %d ", process_id, extra->send_size);
+ for (i = 0; i < extra->num_processes; i++)
+ fprintf(trace_file, "%d ", extra->sendcounts[i]);
+ fprintf(trace_file, "%d ", extra->recv_size);
+ for (i = 0; i < extra->num_processes; i++)
+ fprintf(trace_file, "%d ", extra->recvcounts[i]);
+ fprintf(trace_file, "%s %s \n", extra->datatype1, extra->datatype2);
+ break;
+ case TRACING_GATHER: // rank gather send_size recv_size root (sendtype) (recvtype)
+ fprintf(trace_file, "%s gather %d %d %d %s %s\n", process_id,
+ extra->send_size, extra->recv_size, extra->root, extra->datatype1,
+ extra->datatype2);
+ break;
+ case TRACING_ALLGATHERV: // rank allgatherv send_size [recvcounts] (sendtype) (recvtype)
+ fprintf(trace_file, "%s allgatherv %d ", process_id, extra->send_size);
+ for (i = 0; i < extra->num_processes; i++)
+ fprintf(trace_file, "%d ", extra->recvcounts[i]);
+ fprintf(trace_file, "%s %s \n", extra->datatype1, extra->datatype2);
+ break;
+ case TRACING_REDUCE_SCATTER: // rank reducescatter [recvcounts] comp_size (sendtype)
+ fprintf(trace_file, "%s reducescatter ", process_id);
+ for (i = 0; i < extra->num_processes; i++)
+ fprintf(trace_file, "%d ", extra->recvcounts[i]);
+ fprintf(trace_file, "%f %s\n", extra->comp_size, extra->datatype1);
+ break;
+ case TRACING_COMPUTING:
+ fprintf(trace_file, "%s compute %f\n", process_id, extra->comp_size);
+ break;
+ case TRACING_GATHERV: // rank gatherv send_size [recvcounts] root (sendtype) (recvtype)
+ fprintf(trace_file, "%s gatherv %d ", process_id, extra->send_size);
+ for (i = 0; i < extra->num_processes; i++)
+ fprintf(trace_file, "%d ", extra->recvcounts[i]);
+ fprintf(trace_file, "%d %s %s\n", extra->root, extra->datatype1, extra->datatype2);
+ break;
+ case TRACING_WAITANY:
+ case TRACING_SENDRECV:
+ case TRACING_SCATTER:
+ case TRACING_SCATTERV:
+ case TRACING_ALLGATHER:
+ case TRACING_SCAN:
+ case TRACING_EXSCAN:
+ case TRACING_COMM_SIZE:
+ case TRACING_COMM_SPLIT:
+ case TRACING_COMM_DUP:
+ case TRACING_SSEND:
+ case TRACING_ISSEND:
+ default:
+
+ XBT_WARN
+ ("Call from %s impossible to translate into replay command : Not implemented (yet)",
+ ((pushState_t) event->data)->value->name);
+ break;
+ }
+
+ if (extra->recvcounts != NULL)
+ xbt_free(extra->recvcounts);
+ if (extra->sendcounts != NULL)
+ xbt_free(extra->sendcounts);
+ xbt_free(process_id);
+ xbt_free(extra);
+}
#define OPT_TRACING_SMPI_COMPUTING "tracing/smpi/computing"
#define OPT_TRACING_SMPI_INTERNALS "tracing/smpi/internals"
#define OPT_TRACING_DISPLAY_SIZES "tracing/smpi/display_sizes"
+#define OPT_TRACING_FORMAT "tracing/smpi/format"
+#define OPT_TRACING_FORMAT_TI_ONEFILE "tracing/smpi/format/ti_one_file"
#define OPT_TRACING_CATEGORIZED "tracing/categorized"
#define OPT_TRACING_UNCATEGORIZED "tracing/uncategorized"
#define OPT_TRACING_MSG_PROCESS "tracing/msg/process"
static void TRACE_getopts(void)
{
- trace_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING);
- trace_platform = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_PLATFORM);
- trace_platform_topology = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_TOPOLOGY);
- trace_smpi_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI);
- trace_smpi_grouped = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI_GROUP);
- trace_smpi_computing = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING);
- trace_view_internals = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS);
- trace_categorized = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_CATEGORIZED);
- trace_uncategorized = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED);
- trace_msg_process_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_MSG_PROCESS);
- trace_msg_vm_enabled = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_MSG_VM);
- trace_buffer = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_BUFFER);
- trace_onelink_only = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY);
- trace_disable_destroy = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY);
- trace_basic = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_BASIC);
- trace_display_sizes = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES);
- trace_disable_link = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_LINK);
- trace_disable_power = xbt_cfg_get_int(_sg_cfg_set, OPT_TRACING_DISABLE_POWER);
+ trace_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING);
+ trace_platform = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_PLATFORM);
+ trace_platform_topology = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_TOPOLOGY);
+ trace_smpi_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI);
+ trace_smpi_grouped = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP);
+ trace_smpi_computing = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING);
+ trace_view_internals = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS);
+ trace_categorized = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_CATEGORIZED);
+ trace_uncategorized = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED);
+ trace_msg_process_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_MSG_PROCESS);
+ trace_msg_vm_enabled = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_MSG_VM);
+ trace_buffer = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_BUFFER);
+ trace_onelink_only = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY);
+ trace_disable_destroy = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY);
+ trace_basic = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_BASIC);
+ trace_display_sizes = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES);
+ trace_disable_link = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_LINK);
+ trace_disable_power = xbt_cfg_get_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_POWER);
}
static xbt_dynar_t TRACE_start_functions = NULL;
TRACE_getopts();
// tracing system must be:
- // - enabled (with --cfg=tracing:1)
+ // - enabled (with --cfg=tracing:yes)
// - already configured (TRACE_global_init already called)
if (TRACE_is_enabled() && TRACE_is_configured()) {
XBT_DEBUG("Tracing starts");
- /* open the trace file */
- TRACE_paje_start();
+ /* init the tracing module to generate the right output */
+ /* open internal buffer */
+ TRACE_init();
+
+ /* open the trace file(s) */
+ const char* format = sg_cfg_get_string(OPT_TRACING_FORMAT);
+ XBT_DEBUG("Tracing format %s\n", format);
+ if(!strcmp(format, "Paje")){
+ TRACE_paje_init();
+ TRACE_paje_start();
+ }else if (!strcmp(format, "TI")){
+ TRACE_TI_init();
+ TRACE_TI_start();
+ }else{
+ xbt_die("Unknown trace format :%s ", format);
+ }
/* activate trace */
if (trace_active == 1) {
xbt_dict_free(&declared_marks);
xbt_dict_free(&created_categories);
- /* close the trace file */
- TRACE_paje_end();
-
+ /* close the trace files */
+ const char* format = sg_cfg_get_string(OPT_TRACING_FORMAT);
+ XBT_DEBUG("Tracing format %s\n", format);
+ if(!strcmp(format, "Paje")){
+ TRACE_paje_end();
+ }else if (!strcmp(format, "TI")){
+ TRACE_TI_end();
+ }else{
+ xbt_die("Unknown trace format :%s ", format);
+ }
+ /* close internal buffer */
+ TRACE_finalize();
/* de-activate trace */
trace_active = 0;
XBT_DEBUG("Tracing is off");
/* tracing */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING,
"Enable Tracing.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING, "no");
/* register platform in the trace */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_PLATFORM,
"Register the platform in the trace as a hierarchy.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_PLATFORM, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_PLATFORM, "no");
/* register platform in the trace */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_TOPOLOGY,
"Register the platform topology in the trace as a graph.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_TOPOLOGY, 1);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_TOPOLOGY, "yes");
/* smpi */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI,
"Tracing of the SMPI interface.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI, "no");
/* smpi grouped */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_GROUP,
"Group MPI processes by host.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI_GROUP, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_GROUP, "no");
/* smpi computing */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING,
"Generate states for timing out of SMPI parts of the application",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_COMPUTING, "no");
/* smpi internals */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS,
"View internal messages sent by Collective communications in SMPI",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_SMPI_INTERNALS, "no");
/* tracing categorized resource utilization traces */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_CATEGORIZED,
"Tracing categorized resource utilization of hosts and links.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_CATEGORIZED, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_CATEGORIZED, "no");
/* tracing uncategorized resource utilization */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_UNCATEGORIZED,
"Tracing uncategorized resource utilization of hosts and links.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_UNCATEGORIZED, "no");
/* msg process */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_MSG_PROCESS,
"Tracing of MSG process behavior.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_MSG_PROCESS, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_MSG_PROCESS, "no");
/* msg process */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_MSG_VM,
"Tracing of MSG process behavior.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_MSG_VM, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_MSG_VM, "no");
/* disable tracing link */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_LINK,
"Do not trace link bandwidth and latency.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISABLE_LINK, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_LINK, "no");
/* disable tracing link */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_POWER,
"Do not trace host power.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISABLE_POWER, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_POWER, "no");
/* tracing buffer */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BUFFER,
"Buffer trace events to put them in temporal order.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_BUFFER, 1);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_BUFFER, "yes");
/* tracing one link only */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_ONELINK_ONLY,
"Use only routes with one link to trace platform.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_ONELINK_ONLY, "no");
/* disable destroy */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY,
"Disable platform containers destruction.",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISABLE_DESTROY, "no");
/* basic -- Avoid extended events (impoverished trace file) */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_BASIC,
"Avoid extended events (impoverished trace file).",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_BASIC, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_BASIC, "no");
/* display_sizes -- Extended events with message size information */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES,
"(smpi only for now) Extended events with message size information",
- xbt_cfgelm_int, 0, 1, NULL, NULL);
- xbt_cfg_setdefault_int(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES, 0);
+ xbt_cfgelm_boolean, 0, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_DISPLAY_SIZES, "no");
+
+ /* format -- Switch the ouput format of Tracing */
+ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_FORMAT,
+ "(smpi only for now) Switch the ouput format of Tracing",
+ xbt_cfgelm_string, 1, 1, NULL, NULL);
+ xbt_cfg_setdefault_string(_sg_cfg_set, OPT_TRACING_FORMAT, "Paje");
+
+
+ /* format -- Switch the ouput format of Tracing */
+ xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_FORMAT_TI_ONEFILE,
+ "(smpi only for now) For replay format only : output to one file only",
+ xbt_cfgelm_boolean, 1, 1, NULL, NULL);
+ xbt_cfg_setdefault_boolean(_sg_cfg_set, OPT_TRACING_FORMAT_TI_ONEFILE, "no");
/* comment */
xbt_cfg_register(&_sg_cfg_set, OPT_TRACING_COMMENT,
"Message size (in bytes) is added to links, and to states. For collectives, the displayed value \n"
"is the more relevant to the collective (total sent by the process, usually)",
detailed);
+ print_line (OPT_TRACING_FORMAT, "Only works for SMPI now. Switch output format",
+ "Default format is Paje. Time independent traces are also supported, \n"
+ "to output traces that can later be used by the trace replay tool",
+ detailed);
+ print_line (OPT_TRACING_FORMAT_TI_ONEFILE, "Only works for SMPI now, and TI output format",
+ "By default, each process outputs to a separate file, inside a filename_files folder \n"
+ "By setting this option to yes, all processes will output to only one file \n"
+ "This is meant to avoid opening thousands of files with large simulations",
+ detailed);
print_line (OPT_TRACING_COMMENT, "Comment to be added on the top of the trace file.",
" Use this to add a comment line to the top of the trace file.",
detailed);
#include "instr/instr_private.h"
#include "xbt/virtu.h" /* sg_cmdline */
-#ifdef HAVE_TRACING
-
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr, "Paje tracing event system");
-
-typedef struct paje_event *paje_event_t;
-typedef struct paje_event {
- double timestamp;
- e_event_type event_type;
- void (*print) (paje_event_t event);
- void (*free) (paje_event_t event);
- void *data;
-} s_paje_event_t;
-
-typedef struct s_defineContainerType *defineContainerType_t;
-typedef struct s_defineContainerType {
- type_t type;
-}s_defineContainerType_t;
-
-typedef struct s_defineVariableType *defineVariableType_t;
-typedef struct s_defineVariableType {
- type_t type;
-}s_defineVariableType_t;
-
-typedef struct s_defineStateType *defineStateType_t;
-typedef struct s_defineStateType {
- type_t type;
-}s_defineStateType_t;
-
-typedef struct s_defineEventType *defineEventType_t;
-typedef struct s_defineEventType {
- type_t type;
-}s_defineEventType_t;
-
-typedef struct s_defineLinkType *defineLinkType_t;
-typedef struct s_defineLinkType {
- type_t type;
- type_t source;
- type_t dest;
-}s_defineLinkType_t;
-
-typedef struct s_defineEntityValue *defineEntityValue_t;
-typedef struct s_defineEntityValue {
- val_t value;
-}s_defineEntityValue_t;
-
-typedef struct s_createContainer *createContainer_t;
-typedef struct s_createContainer {
- container_t container;
-}s_createContainer_t;
-
-typedef struct s_destroyContainer *destroyContainer_t;
-typedef struct s_destroyContainer {
- container_t container;
-}s_destroyContainer_t;
-
-typedef struct s_setVariable *setVariable_t;
-typedef struct s_setVariable {
- container_t container;
- type_t type;
- double value;
-}s_setVariable_t;
-
-typedef struct s_addVariable *addVariable_t;
-typedef struct s_addVariable {
- container_t container;
- type_t type;
- double value;
-}s_addVariable_t;
-
-typedef struct s_subVariable *subVariable_t;
-typedef struct s_subVariable {
- container_t container;
- type_t type;
- double value;
-}s_subVariable_t;
-
-typedef struct s_setState *setState_t;
-typedef struct s_setState {
- container_t container;
- type_t type;
- val_t value;
-}s_setState_t;
-
-typedef struct s_pushState *pushState_t;
-typedef struct s_pushState {
- container_t container;
- type_t type;
- val_t value;
- int size;
-}s_pushState_t;
-
-typedef struct s_popState *popState_t;
-typedef struct s_popState {
- container_t container;
- type_t type;
-}s_popState_t;
-
-typedef struct s_resetState *resetState_t;
-typedef struct s_resetState {
- container_t container;
- type_t type;
-}s_resetState_t;
-
-typedef struct s_startLink *startLink_t;
-typedef struct s_startLink {
- container_t container;
- type_t type;
- container_t sourceContainer;
- char *value;
- char *key;
- int size;
-}s_startLink_t;
-
-typedef struct s_endLink *endLink_t;
-typedef struct s_endLink {
- container_t container;
- type_t type;
- container_t destContainer;
- char *value;
- char *key;
-}s_endLink_t;
-
-typedef struct s_newEvent *newEvent_t;
-typedef struct s_newEvent {
- container_t container;
- type_t type;
- val_t value;
-}s_newEvent_t;
-
-FILE *tracing_file = NULL;
-
-static xbt_dynar_t buffer = NULL;
-
-static void dump_comment (const char *comment)
-{
- if (!strlen(comment)) return;
- fprintf (tracing_file, "# %s\n", comment);
-}
-
-static void dump_comment_file (const char *filename)
-{
- if (!strlen(filename)) return;
- FILE *file = fopen (filename, "r");
- if (!file){
- THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
- }
- while (!feof(file)){
- char c;
- c = fgetc(file);
- if (feof(file)) break;
- fprintf (tracing_file, "# ");
- while (c != '\n'){
- fprintf (tracing_file, "%c", c);
- c = fgetc(file);
- if (feof(file)) break;
- }
- fprintf (tracing_file, "\n");
- }
- fclose(file);
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_paje_trace, instr_trace, "tracing event system");
+
+extern FILE * tracing_file;
+extern s_instr_trace_writer_t active_writer;
+
+
+void TRACE_paje_init(void)
+{
+ active_writer.print_DefineContainerType=print_pajeDefineContainerType;
+ active_writer.print_DefineVariableType=print_pajeDefineVariableType;
+ active_writer.print_DefineStateType=print_pajeDefineStateType;
+ active_writer.print_DefineEventType=print_pajeDefineEventType;
+ active_writer.print_DefineLinkType=print_pajeDefineLinkType;
+ active_writer.print_DefineEntityValue=print_pajeDefineEntityValue;
+ active_writer.print_CreateContainer=print_pajeCreateContainer;
+ active_writer.print_DestroyContainer=print_pajeDestroyContainer;
+ active_writer.print_SetVariable=print_pajeSetVariable;
+ active_writer.print_AddVariable=print_pajeAddVariable;
+ active_writer.print_SubVariable=print_pajeSubVariable;
+ active_writer.print_SetState=print_pajeSetState;
+ active_writer.print_PushState=print_pajePushState;
+ active_writer.print_PopState=print_pajePopState;
+ active_writer.print_ResetState=print_pajeResetState;
+ active_writer.print_StartLink=print_pajeStartLink;
+ active_writer.print_EndLink=print_pajeEndLink;
+ active_writer.print_NewEvent=print_pajeNewEvent;
}
-
void TRACE_paje_start(void)
{
char *filename = TRACE_get_filename();
/* output header */
TRACE_header(TRACE_basic(),TRACE_display_sizes());
- buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
}
void TRACE_paje_end(void)
{
fclose(tracing_file);
char *filename = TRACE_get_filename();
- xbt_dynar_free (&buffer);
XBT_DEBUG("Filename %s is closed", filename);
}
-double TRACE_last_timestamp_to_dump = 0;
-//dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
-void TRACE_paje_dump_buffer (int force)
-{
- if (!TRACE_is_enabled()) return;
- XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
- if (force){
- paje_event_t event;
- unsigned int i;
- xbt_dynar_foreach(buffer, i, event){
- event->print (event);
- event->free (event);
- }
- xbt_dynar_free (&buffer);
- buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
- }else{
- paje_event_t event;
- unsigned int cursor;
- xbt_dynar_foreach(buffer, cursor, event) {
- double head_timestamp = event->timestamp;
- if (head_timestamp > TRACE_last_timestamp_to_dump){
- break;
- }
- event->print (event);
- event->free (event);
- }
- xbt_dynar_remove_n_at(buffer, cursor, 0);
- }
- XBT_DEBUG("%s: ends", __FUNCTION__);
-}
-
-/* internal do the instrumentation module */
-static void insert_into_buffer (paje_event_t tbi)
-{
- if (TRACE_buffer() == 0){
- tbi->print (tbi);
- tbi->free (tbi);
- return;
- }
- XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
- __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
-
- unsigned int i;
- for (i = xbt_dynar_length(buffer); i > 0; i--) {
- paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
- if (e1->timestamp <= tbi->timestamp)
- break;
- }
- xbt_dynar_insert_at(buffer, i, &tbi);
- if (i == 0)
- XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
- else
- XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
- (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
-}
-static void print_pajeDefineContainerType(paje_event_t event)
+void print_pajeDefineContainerType(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
fprintf(tracing_file, "%d %s %s %s\n",
((defineContainerType_t)event->data)->type->name);
}
-static void print_pajeDefineVariableType(paje_event_t event)
+void print_pajeDefineVariableType(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
((defineVariableType_t)event->data)->type->color);
}
-static void print_pajeDefineStateType(paje_event_t event)
+void print_pajeDefineStateType(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
fprintf(tracing_file, "%d %s %s %s\n",
((defineStateType_t)event->data)->type->name);
}
-static void print_pajeDefineEventType(paje_event_t event)
+void print_pajeDefineEventType(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
fprintf(tracing_file, "%d %s %s %s\n",
((defineEventType_t)event->data)->type->name);
}
-static void print_pajeDefineLinkType(paje_event_t event)
+void print_pajeDefineLinkType(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
fprintf(tracing_file, "%d %s %s %s %s %s\n",
((defineLinkType_t)event->data)->type->name);
}
-static void print_pajeDefineEntityValue (paje_event_t event)
+void print_pajeDefineEntityValue (paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
fprintf(tracing_file, "%d %s %s %s \"%s\"\n",
((defineEntityValue_t)event->data)->value->color);
}
-static void print_pajeCreateContainer(paje_event_t event)
+void print_pajeCreateContainer(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeDestroyContainer(paje_event_t event)
+void print_pajeDestroyContainer(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeSetVariable(paje_event_t event)
+void print_pajeSetVariable(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeAddVariable(paje_event_t event)
+void print_pajeAddVariable(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeSubVariable(paje_event_t event)
+void print_pajeSubVariable(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeSetState(paje_event_t event)
+void print_pajeSetState(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajePushState(paje_event_t event)
+void print_pajePushState(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (!TRACE_display_sizes()){
}
}else{
if (event->timestamp == 0){
- fprintf(tracing_file, "%d 0 %s %s %s %d\n",
+ fprintf(tracing_file, "%d 0 %s %s %s ",
(int)event->event_type,
((pushState_t)event->data)->type->id,
((pushState_t)event->data)->container->id,
- ((pushState_t)event->data)->value->id,
- ((pushState_t)event->data)->size);
+ ((pushState_t)event->data)->value->id);
+ if(((pushState_t)event->data)->extra !=NULL){
+ fprintf(tracing_file, "%d ", ((instr_extra_data)((pushState_t)event->data)->extra)->send_size);
+ }else{
+ fprintf(tracing_file, "0 ");
+ }
+ fprintf(tracing_file, "\n");
+
}else{
- fprintf(tracing_file, "%d %f %s %s %s %d\n",
+ fprintf(tracing_file, "%d %f %s %s %s ",
(int)event->event_type,
event->timestamp,
((pushState_t)event->data)->type->id,
((pushState_t)event->data)->container->id,
- ((pushState_t)event->data)->value->id,
- ((pushState_t)event->data)->size);
- }
+ ((pushState_t)event->data)->value->id);
+ if(((pushState_t)event->data)->extra !=NULL){
+ fprintf(tracing_file, "%d ", ((instr_extra_data)((pushState_t)event->data)->extra)->send_size);
+ }else{
+ fprintf(tracing_file, "0 ");
+ }
+ fprintf(tracing_file, "\n");
+ }
}
+ if(((pushState_t)event->data)->extra!=NULL){
+ if(((instr_extra_data)((pushState_t)event->data)->extra)->sendcounts!=NULL)
+ xbt_free(((instr_extra_data)((pushState_t)event->data)->extra)->sendcounts);
+ if(((instr_extra_data)((pushState_t)event->data)->extra)->recvcounts!=NULL)
+ xbt_free(((instr_extra_data)((pushState_t)event->data)->extra)->recvcounts);
+ xbt_free(((pushState_t)event->data)->extra);
+ }
}
-static void print_pajePopState(paje_event_t event)
+void print_pajePopState(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeResetState(paje_event_t event)
+void print_pajeResetState(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeStartLink(paje_event_t event)
+void print_pajeStartLink(paje_event_t event)
{
if (!TRACE_display_sizes()){
if (event->timestamp == 0){
}
}
-static void print_pajeEndLink(paje_event_t event)
+void print_pajeEndLink(paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
}
}
-static void print_pajeNewEvent (paje_event_t event)
+void print_pajeNewEvent (paje_event_t event)
{
XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
if (event->timestamp == 0){
((newEvent_t)event->data)->value->id);
}
}
-
-static void free_paje_event (paje_event_t event)
-{
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
- switch (event->event_type){
- case PAJE_StartLink:
- xbt_free (((startLink_t)(event->data))->value);
- xbt_free (((startLink_t)(event->data))->key);
- break;
- case PAJE_EndLink:
- xbt_free (((endLink_t)(event->data))->value);
- xbt_free (((endLink_t)(event->data))->key);
- break;
- default:
- break;
- }
- xbt_free (event->data);
- xbt_free (event);
-}
-
-void new_pajeDefineContainerType(type_t type)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DefineContainerType;
- event->timestamp = 0;
- event->print = print_pajeDefineContainerType;
- event->free = free_paje_event;
- event->data = xbt_new0(s_defineContainerType_t, 1);
- ((defineContainerType_t)(event->data))->type = type;
-
- XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeDefineVariableType(type_t type)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DefineVariableType;
- event->timestamp = 0;
- event->print = print_pajeDefineVariableType;
- event->free = free_paje_event;
- event->data = xbt_new0(s_defineVariableType_t, 1);
- ((defineVariableType_t)(event->data))->type = type;
-
- XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeDefineStateType(type_t type)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DefineStateType;
- event->timestamp = 0;
- event->print = print_pajeDefineStateType;
- event->free = free_paje_event;
- event->data = xbt_new0(s_defineStateType_t, 1);
- ((defineStateType_t)(event->data))->type = type;
-
- XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeDefineEventType(type_t type)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DefineEventType;
- event->timestamp = 0;
- event->print = print_pajeDefineEventType;
- event->free = free_paje_event;
- event->data = xbt_new0(s_defineEventType_t, 1);
- ((defineEventType_t)(event->data))->type = type;
-
- XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DefineLinkType;
- event->timestamp = 0;
- event->print = print_pajeDefineLinkType;
- event->free = free_paje_event;
- event->data = xbt_new0(s_defineLinkType_t, 1);
- ((defineLinkType_t)(event->data))->type = type;
- ((defineLinkType_t)(event->data))->source = source;
- ((defineLinkType_t)(event->data))->dest = dest;
-
- XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeDefineEntityValue (val_t value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DefineEntityValue;
- event->timestamp = 0;
- event->print = print_pajeDefineEntityValue;
- event->free = free_paje_event;
- event->data = xbt_new0(s_defineEntityValue_t, 1);
- ((defineEntityValue_t)(event->data))->value = value;
-
- XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeCreateContainer (container_t container)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_CreateContainer;
- event->timestamp = SIMIX_get_clock();
- event->print = print_pajeCreateContainer;
- event->free = free_paje_event;
- event->data = xbt_new0(s_createContainer_t, 1);
- ((createContainer_t)(event->data))->container = container;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeDestroyContainer (container_t container)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_DestroyContainer;
- event->timestamp = SIMIX_get_clock();
- event->print = print_pajeDestroyContainer;
- event->free = free_paje_event;
- event->data = xbt_new0(s_destroyContainer_t, 1);
- ((destroyContainer_t)(event->data))->container = container;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- //print it
- event->print (event);
- event->free (event);
-}
-
-void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_SetVariable;
- event->timestamp = timestamp;
- event->print = print_pajeSetVariable;
- event->free = free_paje_event;
- event->data = xbt_new0(s_setVariable_t, 1);
- ((setVariable_t)(event->data))->type = type;
- ((setVariable_t)(event->data))->container = container;
- ((setVariable_t)(event->data))->value = value;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-
-void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_AddVariable;
- event->timestamp = timestamp;
- event->print = print_pajeAddVariable;
- event->free = free_paje_event;
- event->data = xbt_new0(s_addVariable_t, 1);
- ((addVariable_t)(event->data))->type = type;
- ((addVariable_t)(event->data))->container = container;
- ((addVariable_t)(event->data))->value = value;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_SubVariable;
- event->timestamp = timestamp;
- event->print = print_pajeSubVariable;
- event->free = free_paje_event;
- event->data = xbt_new0(s_subVariable_t, 1);
- ((subVariable_t)(event->data))->type = type;
- ((subVariable_t)(event->data))->container = container;
- ((subVariable_t)(event->data))->value = value;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_SetState;
- event->timestamp = timestamp;
- event->print = print_pajeSetState;
- event->free = free_paje_event;
- event->data = xbt_new0(s_setState_t, 1);
- ((setState_t)(event->data))->type = type;
- ((setState_t)(event->data))->container = container;
- ((setState_t)(event->data))->value = value;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-
-void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_PushState;
- event->timestamp = timestamp;
- event->print = print_pajePushState;
- event->free = free_paje_event;
- event->data = xbt_new0(s_pushState_t, 1);
- ((pushState_t)(event->data))->type = type;
- ((pushState_t)(event->data))->container = container;
- ((pushState_t)(event->data))->value = value;
- ((pushState_t)(event->data))->size = -1;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_PushState;
- event->timestamp = timestamp;
- event->print = print_pajePushState;
- event->free = free_paje_event;
- event->data = xbt_new0(s_pushState_t, 1);
- ((pushState_t)(event->data))->type = type;
- ((pushState_t)(event->data))->container = container;
- ((pushState_t)(event->data))->value = value;
- ((pushState_t)(event->data))->size = size;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-
-void new_pajePopState (double timestamp, container_t container, type_t type)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_PopState;
- event->timestamp = timestamp;
- event->print = print_pajePopState;
- event->free = free_paje_event;
- event->data = xbt_new0(s_popState_t, 1);
- ((popState_t)(event->data))->type = type;
- ((popState_t)(event->data))->container = container;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-
-void new_pajeResetState (double timestamp, container_t container, type_t type)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_ResetState;
- event->timestamp = timestamp;
- event->print = print_pajeResetState;
- event->free = free_paje_event;
- event->data = xbt_new0(s_resetState_t, 1);
- ((resetState_t)(event->data))->type = type;
- ((resetState_t)(event->data))->container = container;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_StartLink;
- event->timestamp = timestamp;
- event->print = print_pajeStartLink;
- event->free = free_paje_event;
- event->data = xbt_new0(s_startLink_t, 1);
- ((startLink_t)(event->data))->type = type;
- ((startLink_t)(event->data))->container = container;
- ((startLink_t)(event->data))->sourceContainer = sourceContainer;
- ((startLink_t)(event->data))->value = xbt_strdup(value);
- ((startLink_t)(event->data))->key = xbt_strdup(key);
- ((startLink_t)(event->data))->size = -1;
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_StartLink;
- event->timestamp = timestamp;
- event->print = print_pajeStartLink;
- event->free = free_paje_event;
- event->data = xbt_new0(s_startLink_t, 1);
- ((startLink_t)(event->data))->type = type;
- ((startLink_t)(event->data))->container = container;
- ((startLink_t)(event->data))->sourceContainer = sourceContainer;
- ((startLink_t)(event->data))->value = xbt_strdup(value);
- ((startLink_t)(event->data))->key = xbt_strdup(key);
- ((startLink_t)(event->data))->size = size;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_EndLink;
- event->timestamp = timestamp;
- event->print = print_pajeEndLink;
- event->free = free_paje_event;
- event->data = xbt_new0(s_endLink_t, 1);
- ((endLink_t)(event->data))->type = type;
- ((endLink_t)(event->data))->container = container;
- ((endLink_t)(event->data))->destContainer = destContainer;
- ((endLink_t)(event->data))->value = xbt_strdup(value);
- ((endLink_t)(event->data))->key = xbt_strdup(key);
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
-{
- paje_event_t event = xbt_new0(s_paje_event_t, 1);
- event->event_type = PAJE_NewEvent;
- event->timestamp = timestamp;
- event->print = print_pajeNewEvent;
- event->free = free_paje_event;
- event->data = xbt_new0(s_newEvent_t, 1);
- ((newEvent_t)(event->data))->type = type;
- ((newEvent_t)(event->data))->container = container;
- ((newEvent_t)(event->data))->value = value;
-
- XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
-
- insert_into_buffer (event);
-}
-
-#endif /* HAVE_TRACING */
#include "instr/instr.h"
#include "instr/instr_interface.h"
+#include "internal_config.h"
#include "simgrid_config.h"
#ifdef HAVE_TRACING
xbt_dict_t children;
}s_container_t;
+typedef struct paje_event *paje_event_t;
+typedef struct paje_event {
+ double timestamp;
+ e_event_type event_type;
+ void (*print) (paje_event_t event);
+ void (*free) (paje_event_t event);
+ void *data;
+} s_paje_event_t;
+
+typedef struct s_defineContainerType *defineContainerType_t;
+typedef struct s_defineContainerType {
+ type_t type;
+}s_defineContainerType_t;
+
+typedef struct s_defineVariableType *defineVariableType_t;
+typedef struct s_defineVariableType {
+ type_t type;
+}s_defineVariableType_t;
+
+typedef struct s_defineStateType *defineStateType_t;
+typedef struct s_defineStateType {
+ type_t type;
+}s_defineStateType_t;
+
+typedef struct s_defineEventType *defineEventType_t;
+typedef struct s_defineEventType {
+ type_t type;
+}s_defineEventType_t;
+
+typedef struct s_defineLinkType *defineLinkType_t;
+typedef struct s_defineLinkType {
+ type_t type;
+ type_t source;
+ type_t dest;
+}s_defineLinkType_t;
+
+typedef struct s_defineEntityValue *defineEntityValue_t;
+typedef struct s_defineEntityValue {
+ val_t value;
+}s_defineEntityValue_t;
+
+typedef struct s_createContainer *createContainer_t;
+typedef struct s_createContainer {
+ container_t container;
+}s_createContainer_t;
+
+typedef struct s_destroyContainer *destroyContainer_t;
+typedef struct s_destroyContainer {
+ container_t container;
+}s_destroyContainer_t;
+
+typedef struct s_setVariable *setVariable_t;
+typedef struct s_setVariable {
+ container_t container;
+ type_t type;
+ double value;
+}s_setVariable_t;
+
+typedef struct s_addVariable *addVariable_t;
+typedef struct s_addVariable {
+ container_t container;
+ type_t type;
+ double value;
+}s_addVariable_t;
+
+typedef struct s_subVariable *subVariable_t;
+typedef struct s_subVariable {
+ container_t container;
+ type_t type;
+ double value;
+}s_subVariable_t;
+
+typedef struct s_setState *setState_t;
+typedef struct s_setState {
+ container_t container;
+ type_t type;
+ val_t value;
+}s_setState_t;
+
+typedef struct s_pushState *pushState_t;
+typedef struct s_pushState {
+ container_t container;
+ type_t type;
+ val_t value;
+ int size;
+ void* extra;
+}s_pushState_t;
+
+typedef struct s_popState *popState_t;
+typedef struct s_popState {
+ container_t container;
+ type_t type;
+ xbt_dynar_t extra;
+}s_popState_t;
+
+typedef struct s_resetState *resetState_t;
+typedef struct s_resetState {
+ container_t container;
+ type_t type;
+}s_resetState_t;
+
+typedef struct s_startLink *startLink_t;
+typedef struct s_startLink {
+ container_t container;
+ type_t type;
+ container_t sourceContainer;
+ char *value;
+ char *key;
+ int size;
+}s_startLink_t;
+
+typedef struct s_endLink *endLink_t;
+typedef struct s_endLink {
+ container_t container;
+ type_t type;
+ container_t destContainer;
+ char *value;
+ char *key;
+}s_endLink_t;
+
+typedef struct s_newEvent *newEvent_t;
+typedef struct s_newEvent {
+ container_t container;
+ type_t type;
+ val_t value;
+}s_newEvent_t;
+
extern xbt_dict_t created_categories;
extern xbt_dict_t declared_marks;
extern xbt_dict_t user_host_variables;
void TRACE_header(int basic, int size);
/* from paje.c */
+void TRACE_init(void);
+void TRACE_finalize(void);
+void TRACE_paje_init(void);
void TRACE_paje_start(void);
void TRACE_paje_end(void);
void TRACE_paje_dump_buffer (int force);
XBT_PUBLIC(void) new_pajeSubVariable (double timestamp, container_t container, type_t type, double value);
XBT_PUBLIC(void) new_pajeSetState (double timestamp, container_t container, type_t type, val_t value);
XBT_PUBLIC(void) new_pajePushState (double timestamp, container_t container, type_t type, val_t value);
-XBT_PUBLIC(void) new_pajePushStateWithSize (double timestamp, container_t container, type_t type, val_t value, int size);
+XBT_PUBLIC(void) new_pajePushStateWithExtra (double timestamp, container_t container, type_t type, val_t value, void* extra);
XBT_PUBLIC(void) new_pajePopState (double timestamp, container_t container, type_t type);
XBT_PUBLIC(void) new_pajeResetState (double timestamp, container_t container, type_t type);
XBT_PUBLIC(void) new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key);
XBT_PUBLIC(val_t) PJ_value_get (const char *name, const type_t father);
void PJ_value_free (val_t value);
+
+void print_pajeDefineContainerType(paje_event_t event);
+void print_pajeDefineVariableType(paje_event_t event);
+void print_pajeDefineStateType(paje_event_t event);
+void print_pajeDefineEventType(paje_event_t event);
+void print_pajeDefineLinkType(paje_event_t event);
+void print_pajeDefineEntityValue (paje_event_t event);
+void print_pajeCreateContainer(paje_event_t event);
+void print_pajeDestroyContainer(paje_event_t event);
+void print_pajeSetVariable(paje_event_t event);
+void print_pajeAddVariable(paje_event_t event);
+void print_pajeSubVariable(paje_event_t event);
+void print_pajeSetState(paje_event_t event);
+void print_pajePushState(paje_event_t event);
+void print_pajePopState(paje_event_t event);
+void print_pajeResetState(paje_event_t event);
+void print_pajeStartLink(paje_event_t event);
+void print_pajeEndLink(paje_event_t event);
+void print_pajeNewEvent (paje_event_t event);
+
+void print_TIPushState(paje_event_t event);
+void print_TICreateContainer(paje_event_t event);
+void print_TIDestroyContainer(paje_event_t event);
+void TRACE_TI_start(void);
+void TRACE_TI_end(void);
+void TRACE_TI_init(void);
+
+void print_NULL (paje_event_t event);
+void TRACE_paje_dump_buffer (int force);
+void dump_comment_file (const char *filename);
+void dump_comment (const char *comment);
+
+
+
+
+typedef struct instr_trace_writer {
+ void (*print_DefineContainerType) (paje_event_t event);
+ void (*print_DefineVariableType)(paje_event_t event);
+ void (*print_DefineStateType)(paje_event_t event);
+ void (*print_DefineEventType)(paje_event_t event);
+ void (*print_DefineLinkType)(paje_event_t event);
+ void (*print_DefineEntityValue)(paje_event_t event);
+ void (*print_CreateContainer)(paje_event_t event);
+ void (*print_DestroyContainer)(paje_event_t event);
+ void (*print_SetVariable)(paje_event_t event);
+ void (*print_AddVariable)(paje_event_t event);
+ void (*print_SubVariable)(paje_event_t event);
+ void (*print_SetState)(paje_event_t event);
+ void (*print_PushState)(paje_event_t event);
+ void (*print_PopState)(paje_event_t event);
+ void (*print_ResetState)(paje_event_t event);
+ void (*print_StartLink)(paje_event_t event);
+ void (*print_EndLink)(paje_event_t event);
+ void (*print_NewEvent) (paje_event_t event);
+} s_instr_trace_writer_t;
+
+
+
+struct s_instr_extra_data;
+typedef struct s_instr_extra_data *instr_extra_data;
+
+
+typedef enum{
+ TRACING_INIT,
+ TRACING_FINALIZE,
+ TRACING_COMM_SIZE,
+ TRACING_COMM_SPLIT,
+ TRACING_COMM_DUP,
+ TRACING_SEND,
+ TRACING_ISEND,
+ TRACING_SSEND,
+ TRACING_ISSEND,
+ TRACING_RECV,
+ TRACING_IRECV,
+ TRACING_SENDRECV,
+ TRACING_WAIT,
+ TRACING_WAITALL,
+ TRACING_WAITANY,
+ TRACING_BARRIER,
+ TRACING_BCAST,
+ TRACING_REDUCE,
+ TRACING_ALLREDUCE,
+ TRACING_ALLTOALL,
+ TRACING_ALLTOALLV,
+ TRACING_GATHER,
+ TRACING_GATHERV,
+ TRACING_SCATTER,
+ TRACING_SCATTERV,
+ TRACING_ALLGATHER,
+ TRACING_ALLGATHERV,
+ TRACING_REDUCE_SCATTER,
+ TRACING_COMPUTING,
+ TRACING_SCAN,
+ TRACING_EXSCAN
+} e_caller_type ;
+
+
+
+typedef struct s_instr_extra_data {
+ e_caller_type type;
+ int send_size;
+ int recv_size;
+ double comp_size;
+ int src;
+ int dst;
+ int root;
+ const char* datatype1;
+ const char* datatype2;
+ int * sendcounts;
+ int * recvcounts;
+ int num_processes;
+} s_instr_extra_data_t;
+
#endif /* HAVE_TRACING */
#ifdef HAVE_JEDULE
#include "instr/jedule/jedule_sd_binding.h"
#endif
+
+
+
+
+
#endif /* INSTR_PRIVATE_H_ */
--- /dev/null
+/* Copyright (c) 2010-2013. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "instr/instr_private.h"
+#include "xbt/virtu.h" /* sg_cmdline */
+
+#ifdef HAVE_TRACING
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_trace, instr, "tracing event system");
+
+
+FILE *tracing_file = NULL;
+
+void print_NULL(paje_event_t event){}
+
+/* The active set of functions for the selected trace format
+ * By default, they all do nothing, hence the print_NULL to avoid segfaults */
+
+s_instr_trace_writer_t active_writer = {
+ print_NULL, print_NULL, print_NULL, print_NULL,
+ print_NULL, print_NULL, print_NULL, print_NULL,
+ print_NULL, print_NULL, print_NULL, print_NULL,
+ print_NULL, print_NULL, print_NULL, print_NULL,
+ print_NULL, print_NULL
+};
+
+xbt_dynar_t buffer = NULL;
+
+void dump_comment (const char *comment)
+{
+ if (!strlen(comment)) return;
+ fprintf (tracing_file, "# %s\n", comment);
+}
+
+void dump_comment_file (const char *filename)
+{
+ if (!strlen(filename)) return;
+ FILE *file = fopen (filename, "r");
+ if (!file){
+ THROWF (system_error, 1, "Comment file %s could not be opened for reading.", filename);
+ }
+ while (!feof(file)){
+ char c;
+ c = fgetc(file);
+ if (feof(file)) break;
+ fprintf (tracing_file, "# ");
+ while (c != '\n'){
+ fprintf (tracing_file, "%c", c);
+ c = fgetc(file);
+ if (feof(file)) break;
+ }
+ fprintf (tracing_file, "\n");
+ }
+ fclose(file);
+}
+
+void TRACE_init()
+{
+ buffer = xbt_dynar_new(sizeof(paje_event_t), NULL);
+}
+
+void TRACE_finalize()
+{
+ xbt_dynar_free(&buffer);
+}
+
+double TRACE_last_timestamp_to_dump = 0;
+//dumps the trace file until the timestamp TRACE_last_timestamp_to_dump
+void TRACE_paje_dump_buffer (int force)
+{
+ if (!TRACE_is_enabled()) return;
+ XBT_DEBUG("%s: dump until %f. starts", __FUNCTION__, TRACE_last_timestamp_to_dump);
+ if (force){
+ paje_event_t event;
+ unsigned int i;
+ xbt_dynar_foreach(buffer, i, event){
+ event->print (event);
+ event->free (event);
+ }
+ xbt_dynar_free (&buffer);
+ buffer = xbt_dynar_new (sizeof(paje_event_t), NULL);
+ }else{
+ paje_event_t event;
+ unsigned int cursor;
+ xbt_dynar_foreach(buffer, cursor, event) {
+ double head_timestamp = event->timestamp;
+ if (head_timestamp > TRACE_last_timestamp_to_dump){
+ break;
+ }
+ event->print (event);
+ event->free (event);
+ }
+ xbt_dynar_remove_n_at(buffer, cursor, 0);
+ }
+ XBT_DEBUG("%s: ends", __FUNCTION__);
+}
+
+/* internal do the instrumentation module */
+static void insert_into_buffer (paje_event_t tbi)
+{
+ if (TRACE_buffer() == 0){
+ tbi->print (tbi);
+ tbi->free (tbi);
+ return;
+ }
+
+ XBT_DEBUG("%s: insert event_type=%d, timestamp=%f, buffersize=%lu)",
+ __FUNCTION__, (int)tbi->event_type, tbi->timestamp, xbt_dynar_length(buffer));
+
+ unsigned int i;
+ for (i = xbt_dynar_length(buffer); i > 0; i--) {
+ paje_event_t e1 = *(paje_event_t*)xbt_dynar_get_ptr(buffer, i - 1);
+ if (e1->timestamp <= tbi->timestamp)
+ break;
+ }
+ xbt_dynar_insert_at(buffer, i, &tbi);
+ if (i == 0)
+ XBT_DEBUG("%s: inserted at beginning", __FUNCTION__);
+ else
+ XBT_DEBUG("%s: inserted at%s %u", __FUNCTION__,
+ (i == xbt_dynar_length(buffer) - 1 ? " end, pos =" : ""), i);
+}
+
+
+static void free_paje_event (paje_event_t event)
+{
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+ switch (event->event_type){
+ case PAJE_StartLink:
+ xbt_free (((startLink_t)(event->data))->value);
+ xbt_free (((startLink_t)(event->data))->key);
+ break;
+ case PAJE_EndLink:
+ xbt_free (((endLink_t)(event->data))->value);
+ xbt_free (((endLink_t)(event->data))->key);
+ break;
+ default:
+ break;
+ }
+ xbt_free (event->data);
+ xbt_free (event);
+}
+
+void new_pajeDefineContainerType(type_t type)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DefineContainerType;
+ event->timestamp = 0;
+ event->print = active_writer.print_DefineContainerType;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_defineContainerType_t, 1);
+ ((defineContainerType_t)(event->data))->type = type;
+
+ XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeDefineVariableType(type_t type)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DefineVariableType;
+ event->timestamp = 0;
+ event->print = active_writer.print_DefineVariableType;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_defineVariableType_t, 1);
+ ((defineVariableType_t)(event->data))->type = type;
+
+ XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeDefineStateType(type_t type)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DefineStateType;
+ event->timestamp = 0;
+ event->print = active_writer.print_DefineStateType;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_defineStateType_t, 1);
+ ((defineStateType_t)(event->data))->type = type;
+
+ XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeDefineEventType(type_t type)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DefineEventType;
+ event->timestamp = 0;
+ event->print = active_writer.print_DefineEventType;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_defineEventType_t, 1);
+ ((defineEventType_t)(event->data))->type = type;
+
+ XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeDefineLinkType(type_t type, type_t source, type_t dest)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DefineLinkType;
+ event->timestamp = 0;
+ event->print = active_writer.print_DefineLinkType;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_defineLinkType_t, 1);
+ ((defineLinkType_t)(event->data))->type = type;
+ ((defineLinkType_t)(event->data))->source = source;
+ ((defineLinkType_t)(event->data))->dest = dest;
+
+ XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeDefineEntityValue (val_t value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DefineEntityValue;
+ event->timestamp = 0;
+ event->print = active_writer.print_DefineEntityValue;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_defineEntityValue_t, 1);
+ ((defineEntityValue_t)(event->data))->value = value;
+
+ XBT_DEBUG("%s: event_type=%d", __FUNCTION__, (int)event->event_type);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeCreateContainer (container_t container)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_CreateContainer;
+ event->timestamp = SIMIX_get_clock();
+ event->print = active_writer.print_CreateContainer;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_createContainer_t, 1);
+ ((createContainer_t)(event->data))->container = container;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeDestroyContainer (container_t container)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_DestroyContainer;
+ event->timestamp = SIMIX_get_clock();
+ event->print = active_writer.print_DestroyContainer;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_destroyContainer_t, 1);
+ ((destroyContainer_t)(event->data))->container = container;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ //print it
+ event->print (event);
+ event->free (event);
+}
+
+void new_pajeSetVariable (double timestamp, container_t container, type_t type, double value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_SetVariable;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_SetVariable;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_setVariable_t, 1);
+ ((setVariable_t)(event->data))->type = type;
+ ((setVariable_t)(event->data))->container = container;
+ ((setVariable_t)(event->data))->value = value;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+
+void new_pajeAddVariable (double timestamp, container_t container, type_t type, double value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_AddVariable;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_AddVariable;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_addVariable_t, 1);
+ ((addVariable_t)(event->data))->type = type;
+ ((addVariable_t)(event->data))->container = container;
+ ((addVariable_t)(event->data))->value = value;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajeSubVariable (double timestamp, container_t container, type_t type, double value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_SubVariable;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_SubVariable;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_subVariable_t, 1);
+ ((subVariable_t)(event->data))->type = type;
+ ((subVariable_t)(event->data))->container = container;
+ ((subVariable_t)(event->data))->value = value;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajeSetState (double timestamp, container_t container, type_t type, val_t value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_SetState;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_SetState;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_setState_t, 1);
+ ((setState_t)(event->data))->type = type;
+ ((setState_t)(event->data))->container = container;
+ ((setState_t)(event->data))->value = value;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+
+void new_pajePushStateWithExtra (double timestamp, container_t container, type_t type, val_t value, void* extra)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_PushState;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_PushState;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_pushState_t, 1);
+ ((pushState_t)(event->data))->type = type;
+ ((pushState_t)(event->data))->container = container;
+ ((pushState_t)(event->data))->value = value;
+ ((pushState_t)(event->data))->extra = extra;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+
+void new_pajePushState (double timestamp, container_t container, type_t type, val_t value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_PushState;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_PushState;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_pushState_t, 1);
+ ((pushState_t)(event->data))->type = type;
+ ((pushState_t)(event->data))->container = container;
+ ((pushState_t)(event->data))->value = value;
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajePopState (double timestamp, container_t container, type_t type)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_PopState;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_PopState;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_popState_t, 1);
+ ((popState_t)(event->data))->type = type;
+ ((popState_t)(event->data))->container = container;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+
+void new_pajeResetState (double timestamp, container_t container, type_t type)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_ResetState;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_ResetState;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_resetState_t, 1);
+ ((resetState_t)(event->data))->type = type;
+ ((resetState_t)(event->data))->container = container;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajeStartLink (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_StartLink;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_StartLink;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_startLink_t, 1);
+ ((startLink_t)(event->data))->type = type;
+ ((startLink_t)(event->data))->container = container;
+ ((startLink_t)(event->data))->sourceContainer = sourceContainer;
+ ((startLink_t)(event->data))->value = xbt_strdup(value);
+ ((startLink_t)(event->data))->key = xbt_strdup(key);
+ ((startLink_t)(event->data))->size = -1;
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajeStartLinkWithSize (double timestamp, container_t container, type_t type, container_t sourceContainer, const char *value, const char *key, int size)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_StartLink;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_StartLink;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_startLink_t, 1);
+ ((startLink_t)(event->data))->type = type;
+ ((startLink_t)(event->data))->container = container;
+ ((startLink_t)(event->data))->sourceContainer = sourceContainer;
+ ((startLink_t)(event->data))->value = xbt_strdup(value);
+ ((startLink_t)(event->data))->key = xbt_strdup(key);
+ ((startLink_t)(event->data))->size = size;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajeEndLink (double timestamp, container_t container, type_t type, container_t destContainer, const char *value, const char *key)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_EndLink;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_EndLink;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_endLink_t, 1);
+ ((endLink_t)(event->data))->type = type;
+ ((endLink_t)(event->data))->container = container;
+ ((endLink_t)(event->data))->destContainer = destContainer;
+ ((endLink_t)(event->data))->value = xbt_strdup(value);
+ ((endLink_t)(event->data))->key = xbt_strdup(key);
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+void new_pajeNewEvent (double timestamp, container_t container, type_t type, val_t value)
+{
+ paje_event_t event = xbt_new0(s_paje_event_t, 1);
+ event->event_type = PAJE_NewEvent;
+ event->timestamp = timestamp;
+ event->print = active_writer.print_NewEvent;
+ event->free = free_paje_event;
+ event->data = xbt_new0(s_newEvent_t, 1);
+ ((newEvent_t)(event->data))->type = type;
+ ((newEvent_t)(event->data))->container = container;
+ ((newEvent_t)(event->data))->value = value;
+
+ XBT_DEBUG("%s: event_type=%d, timestamp=%f", __FUNCTION__, (int)event->event_type, event->timestamp);
+
+ insert_into_buffer (event);
+}
+
+#endif /* HAVE_TRACING */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include <libgen.h>
+#define _GNU_SOURCE
+#include <string.h>
+#include <link.h>
#include "mc_private.h"
#include "xbt/module.h"
#include "../simix/smx_private.h"
#include <libunwind.h>
+#include <libelf.h>
+
+#include "mc_private.h"
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_checkpoint, mc,
"Logging specific to mc_checkpoint");
-void *start_text_libsimgrid;
-void *start_plt_libsimgrid, *end_plt_libsimgrid;
-void *start_got_plt_libsimgrid, *end_got_plt_libsimgrid;
-void *start_plt_binary, *end_plt_binary;
-void *start_got_plt_binary, *end_got_plt_binary;
char *libsimgrid_path;
-void *start_data_libsimgrid, *start_bss_libsimgrid;
-void *start_data_binary, *start_bss_binary;
-void *start_text_binary;
+
+static void MC_find_object_address(memory_map_t maps, mc_object_info_t result);
/************************************ Free functions **************************************/
/*****************************************************************************************/
}
tok = strtok(lfields[0], "-");
start_addr1 = (void *)strtoul(tok, NULL, 16);
- if(lfields[1][1] == 'w' && lfields[5] == NULL){
+ if(lfields[1][1] == 'w'){
if(start_addr1 == std_heap){ /* Std_heap ? */
tok = strtok(NULL, "-");
end_addr = (void *)strtoul(tok, NULL, 16);
}
+/** @brief Finds the range of the different memory segments and binary paths */
void MC_init_memory_map_info(){
unsigned int i = 0;
s_map_region_t reg;
memory_map_t maps = MC_get_memory_map();
+ maestro_stack_start = NULL;
+ maestro_stack_end = NULL;
+ libsimgrid_path = NULL;
+
while (i < maps->mapsize) {
reg = maps->regions[i];
- if ((reg.prot & PROT_WRITE)){
- if (maps->regions[i].pathname != NULL){
- if (!memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
- start_data_libsimgrid = reg.start_addr;
- i++;
- reg = maps->regions[i];
- if(reg.pathname == NULL && (reg.prot & PROT_WRITE) && i < maps->mapsize)
- start_bss_libsimgrid = reg.start_addr;
- }else if (!memcmp(basename(maps->regions[i].pathname), basename(xbt_binary_name), strlen(basename(xbt_binary_name)))){
- start_data_binary = reg.start_addr;
- i++;
- reg = maps->regions[i];
- if(reg.pathname == NULL && (reg.prot & PROT_WRITE) && reg.start_addr != std_heap && reg.start_addr != raw_heap && i < maps->mapsize){
- start_bss_binary = reg.start_addr;
- i++;
- }
- }else if(!memcmp(maps->regions[i].pathname, "[stack]", 7)){
+ if (maps->regions[i].pathname == NULL) {
+ // Nothing to do
+ }
+ else if ((reg.prot & PROT_WRITE) && !memcmp(maps->regions[i].pathname, "[stack]", 7)){
maestro_stack_start = reg.start_addr;
maestro_stack_end = reg.end_addr;
- i++;
- }
- }
- }else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC)){
- if (maps->regions[i].pathname != NULL){
- if (!memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
- start_text_libsimgrid = reg.start_addr;
+ } else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC) && !memcmp(basename(maps->regions[i].pathname), "libsimgrid", 10)){
+ if(libsimgrid_path == NULL)
libsimgrid_path = strdup(maps->regions[i].pathname);
- }else if (!memcmp(basename(maps->regions[i].pathname), basename(xbt_binary_name), strlen(basename(xbt_binary_name)))){
- start_text_binary = reg.start_addr;
- }
- }
}
i++;
}
-
- MC_free_memory_map(maps);
-
-}
-
-void MC_get_libsimgrid_plt_section(){
-
- FILE *fp;
- char *line = NULL; /* Temporal storage for each line that is readed */
- ssize_t read; /* Number of bytes readed */
- size_t n = 0; /* Amount of bytes to read by xbt_getline */
-
- char *lfields[7];
- int i, plt_found = 0;
- unsigned long int size, offset;
-
- char *command = bprintf("objdump --section-headers %s", libsimgrid_path);
- fp = popen(command, "r");
-
- if(fp == NULL){
- perror("popen failed");
- xbt_abort();
- }
-
- while ((read = xbt_getline(&line, &n, fp)) != -1 && plt_found != 2) {
-
- if(n == 0)
- continue;
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- lfields[0] = strtok(line, " ");
-
- if(lfields[0] == NULL)
- continue;
-
- if(strcmp(lfields[0], "Sections:") == 0 || strcmp(lfields[0], "Idx") == 0 || strncmp(lfields[0], libsimgrid_path, strlen(libsimgrid_path)) == 0)
- continue;
-
- for (i = 1; i < 7 && lfields[i - 1] != NULL; i++) {
- lfields[i] = strtok(NULL, " ");
- }
-
- if(i>=6){
- if(strcmp(lfields[1], ".plt") == 0){
- size = strtoul(lfields[2], NULL, 16);
- offset = strtoul(lfields[5], NULL, 16);
- start_plt_libsimgrid = (char *)start_text_libsimgrid + offset;
- end_plt_libsimgrid = (char *)start_plt_libsimgrid + size;
- plt_found++;
- }else if(strcmp(lfields[1], ".got.plt") == 0){
- size = strtoul(lfields[2], NULL, 16);
- offset = strtoul(lfields[5], NULL, 16);
- start_got_plt_libsimgrid = (char *)start_text_libsimgrid + offset;
- end_got_plt_libsimgrid = (char *)start_got_plt_libsimgrid + size;
- plt_found++;
- }
-
- }
-
- }
+ xbt_assert(maestro_stack_start, "maestro_stack_start");
+ xbt_assert(maestro_stack_end, "maestro_stack_end");
+ xbt_assert(libsimgrid_path, "libsimgrid_path&");
- xbt_free(command);
- xbt_free(line);
- pclose(fp);
+ MC_free_memory_map(maps);
}
-void MC_get_binary_plt_section(){
-
- FILE *fp;
- char *line = NULL; /* Temporal storage for each line that is readed */
- ssize_t read; /* Number of bytes readed */
- size_t n = 0; /* Amount of bytes to read by xbt_getline */
-
- char *lfields[7];
- int i, plt_found = 0;
- unsigned long int size;
-
- char *command = bprintf( "objdump --section-headers %s", xbt_binary_name);
-
- fp = popen(command, "r");
-
- if(fp == NULL){
- perror("popen failed");
- xbt_abort();
- }
-
- while ((read = xbt_getline(&line, &n, fp)) != -1 && plt_found != 2) {
-
- if(n == 0)
- continue;
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
+/** \brief Finds informations about a given shared object/executable */
+mc_object_info_t MC_find_object_info(memory_map_t maps, char* name) {
+ mc_object_info_t result = MC_new_object_info();
+ result->file_name = xbt_strdup(name);
+ result->start_data = NULL;
+ result->start_text = NULL;
+ MC_find_object_address(maps, result);
+ MC_dwarf_get_variables(result);
+ return result;
+}
- lfields[0] = strtok(line, " ");
+/** \brief Fills the position of the .bss and .data sections. */
+static void MC_find_object_address(memory_map_t maps, mc_object_info_t result) {
- if(lfields[0] == NULL)
- continue;
-
- if(strcmp(lfields[0], "Sections:") == 0 || strcmp(lfields[0], "Idx") == 0 || strncmp(lfields[0], basename(xbt_binary_name), strlen(xbt_binary_name)) == 0)
- continue;
-
- for (i = 1; i < 7 && lfields[i - 1] != NULL; i++) {
- lfields[i] = strtok(NULL, " ");
+ unsigned int i = 0;
+ s_map_region_t reg;
+ const char* name = basename(result->file_name);
+ while (i < maps->mapsize) {
+ reg = maps->regions[i];
+ if (maps->regions[i].pathname == NULL || strcmp(basename(maps->regions[i].pathname), name)) {
+ // Nothing to do
}
-
- if(i>=6){
- if(strcmp(lfields[1], ".plt") == 0){
- size = strtoul(lfields[2], NULL, 16);
- start_plt_binary = (void *)strtoul(lfields[3], NULL, 16);
- end_plt_binary = (char *)start_plt_binary + size;
- plt_found++;
- }else if(strcmp(lfields[1], ".got.plt") == 0){
- size = strtoul(lfields[2], NULL, 16);
- start_got_plt_binary = (char *)strtoul(lfields[3], NULL, 16);
- end_got_plt_binary = (char *)start_got_plt_binary + size;
- plt_found++;
- }
+ else if ((reg.prot & PROT_WRITE)){
+ result->start_data = reg.start_addr;
+ } else if ((reg.prot & PROT_READ) && (reg.prot & PROT_EXEC)){
+ result->start_text = reg.start_addr;
}
-
-
+ i++;
}
- xbt_free(command);
- xbt_free(line);
- pclose(fp);
-
+ xbt_assert(result->file_name);
+ xbt_assert(result->start_data);
+ xbt_assert(result->start_text);
}
/************************************* Take Snapshot ************************************/
}
+
+
static xbt_dynar_t MC_get_local_variables_values(void *stack_context){
unw_cursor_t c;
unsigned int cursor = 0;
dw_variable_t current_variable;
dw_location_entry_t entry = NULL;
- dw_location_t location_entry = NULL;
- unw_word_t res;
int frame_found = 0, region_type;
void *frame_pointer_address = NULL;
- long true_ip, value;
+ long true_ip;
int stop = 0;
xbt_dynar_t variables = xbt_dynar_new(sizeof(local_variable_t), local_variable_free_voidp);
if(!strcmp(frame_name, "smx_ctx_sysv_wrapper")) /* Stop before context switch with maestro */
stop = 1;
- if((long)ip > (long)start_text_libsimgrid)
- frame = xbt_dict_get_or_null(mc_local_variables_libsimgrid, frame_name);
+ if((long)ip > (long) mc_libsimgrid_info->start_text)
+ frame = xbt_dict_get_or_null(mc_libsimgrid_info->local_variables, frame_name);
else
- frame = xbt_dict_get_or_null(mc_local_variables_binary, frame_name);
+ frame = xbt_dict_get_or_null(mc_binary_info->local_variables, frame_name);
if(frame == NULL){
ret = unw_step(&c);
entry = xbt_dynar_get_as(frame->frame_base->location.loclist, cursor, dw_location_entry_t);
if((true_ip >= entry->lowpc) && (true_ip < entry->highpc)){
frame_found = 1;
- switch(entry->location->type){
- case e_dw_compose:
- if(xbt_dynar_length(entry->location->location.compose) > 1){
- frame_pointer_address = NULL; /* TODO : location list with optimizations enabled */
- }else{
- location_entry = xbt_dynar_get_as(entry->location->location.compose, 0, dw_location_t);
- switch(location_entry->type){
- case e_dw_register:
- unw_get_reg(&c, location_entry->location.reg, &res);
- frame_pointer_address = (void*)(long)res;
- break;
- case e_dw_bregister_op:
- unw_get_reg(&c, location_entry->location.breg_op.reg, &res);
- frame_pointer_address = (void*)((long)res + location_entry->location.breg_op.offset);
- break;
- default:
- frame_pointer_address = NULL; /* FIXME : implement other cases (with optimizations enabled) */
- break;
- }
- }
- break;
- default:
- frame_pointer_address = NULL; /* FIXME : implement other cases (with optimizations enabled) */
- break;
- }
+ frame_pointer_address = (void*) MC_dwarf_resolve_location(&c, entry->location, NULL);
}
cursor++;
}
xbt_dynar_foreach(frame->variables, cursor, current_variable){
- if((long)ip > (long)start_text_libsimgrid)
+ if((long)ip > (long)mc_libsimgrid_info->start_text)
region_type = 1;
else
region_type = 2;
new_var->region= region_type;
if(current_variable->address.location != NULL){
- switch(current_variable->address.location->type){
- case e_dw_compose:
- if(xbt_dynar_length(current_variable->address.location->location.compose) > 1){
- /* TODO : location list with optimizations enabled */
- }else{
- location_entry = xbt_dynar_get_as(current_variable->address.location->location.compose, 0, dw_location_t);
-
- switch(location_entry->type){
- case e_dw_register:
- unw_get_reg(&c, location_entry->location.reg, &res);
- value = (long)res;
- break;
- case e_dw_bregister_op:
- unw_get_reg(&c, location_entry->location.breg_op.reg, &res);
- value = (long)res + location_entry->location.breg_op.offset;
- break;
- case e_dw_fbregister_op:
- if(frame_pointer_address != NULL)
- value = (long)((char *)frame_pointer_address + location_entry->location.fbreg_op);
- else
- value = 0;
- break;
- default:
- value = 0; /* FIXME : implement other cases (with optimizations enabled)*/
- break;
- }
-
- if(value)
- new_var->address = (void *)value;
- else
- new_var->address = NULL;
- }
- break;
- default :
- break;
- }
+ new_var->address = (void*) MC_dwarf_resolve_location(&c, current_variable->address.location, frame_pointer_address);
}
xbt_dynar_push(variables, &new_var);
void *addr_pointed1, *addr_pointed2;
switch(type->type){
- case e_dw_base_type:
- case e_dw_enumeration_type:
- case e_dw_union_type:
- return (memcmp(area1, area2, type->size) != 0);
+ case DW_TAG_base_type:
+ case DW_TAG_enumeration_type:
+ case DW_TAG_union_type:
+ return (memcmp(area1, area2, type->byte_size) != 0);
break;
- case e_dw_typedef:
- case e_dw_volatile_type:
+ case DW_TAG_typedef:
+ case DW_TAG_volatile_type:
return compare_areas_with_type(area1, area2, types, other_types, type->dw_type_id, region_size, region_type, start_data, pointer_level);
break;
- case e_dw_const_type: /* Const variable cannot be modified */
+ case DW_TAG_const_type: /* Const variable cannot be modified */
return -1;
break;
- case e_dw_array_type:
+ case DW_TAG_array_type:
subtype = xbt_dict_get_or_null(types, type->dw_type_id);
switch(subtype->type){
- case e_dw_base_type:
- case e_dw_enumeration_type:
- case e_dw_pointer_type:
- case e_dw_structure_type:
- case e_dw_union_type:
- if(subtype->size == 0){ /*declaration of the type, need the complete description */
+ case DW_TAG_base_type:
+ case DW_TAG_enumeration_type:
+ case DW_TAG_pointer_type:
+ case DW_TAG_structure_type:
+ case DW_TAG_union_type:
+ if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
subtype = xbt_dict_get_or_null(types, get_type_description(types, subtype->name));
if(subtype == NULL){
subtype = xbt_dict_get_or_null(other_types, get_type_description(other_types, subtype->name));
switch_types = 1;
}
}
- elm_size = subtype->size;
+ elm_size = subtype->byte_size;
break;
- case e_dw_typedef:
- case e_dw_volatile_type:
+ case DW_TAG_typedef:
+ case DW_TAG_volatile_type:
subsubtype = xbt_dict_get_or_null(types, subtype->dw_type_id);
- if(subsubtype->size == 0){ /*declaration of the type, need the complete description */
+ if(subsubtype->byte_size == 0){ /*declaration of the type, need the complete description */
subsubtype = xbt_dict_get_or_null(types, get_type_description(types, subsubtype->name));
if(subsubtype == NULL){
subsubtype = xbt_dict_get_or_null(other_types, get_type_description(other_types, subsubtype->name));
switch_types = 1;
}
}
- elm_size = subsubtype->size;
+ elm_size = subsubtype->byte_size;
break;
default :
return 0;
break;
}
- for(i=0; i<type->size; i++){
+ for(i=0; i<type->element_count; i++){
if(switch_types)
res = compare_areas_with_type((char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), other_types, types, type->dw_type_id, region_size, region_type, start_data, pointer_level);
else
return res;
}
break;
- case e_dw_pointer_type:
- if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(types, type->dw_type_id))->type == e_dw_subroutine_type){
+ case DW_TAG_pointer_type:
+ if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(types, type->dw_type_id))->type == DW_TAG_subroutine_type){
addr_pointed1 = *((void **)(area1));
addr_pointed2 = *((void **)(area2));
return (addr_pointed1 != addr_pointed2);
}
}
break;
- case e_dw_structure_type:
+ case DW_TAG_structure_type:
xbt_dynar_foreach(type->members, cursor, member){
res = compare_areas_with_type((char *)area1 + member->offset, (char *)area2 + member->offset, types, other_types, member->dw_type_id, region_size, region_type, start_data, pointer_level);
if(res == 1)
return res;
}
break;
- case e_dw_subroutine_type:
+ case DW_TAG_subroutine_type:
return -1;
break;
default:
dw_variable_t current_var;
size_t offset;
void *start_data;
+ void* start_data_binary = mc_binary_info->start_data;
+ void* start_data_libsimgrid = mc_libsimgrid_info->start_data;
+ mc_object_info_t object_info = NULL;
+ mc_object_info_t other_object_info = NULL;
if(region_type == 2){
- variables = mc_global_variables_binary;
- types = mc_variables_type_binary;
- other_types = mc_variables_type_libsimgrid;
+ object_info = mc_binary_info;
+ other_object_info = mc_libsimgrid_info;
start_data = start_data_binary;
}else{
- variables = mc_global_variables_libsimgrid;
- types = mc_variables_type_libsimgrid;
- other_types = mc_variables_type_binary;
+ object_info = mc_libsimgrid_info;
+ other_object_info = mc_binary_info;
start_data = start_data_libsimgrid;
}
+ variables = object_info->global_variables;
+ types = object_info->types;
+ other_types = other_object_info->types;
xbt_dynar_foreach(variables, cursor, current_var){
}
static int compare_local_variables(mc_snapshot_stack_t stack1, mc_snapshot_stack_t stack2, void *heap1, void *heap2){
+ void* start_data_binary = mc_binary_info->start_data;
+ void* start_data_libsimgrid = mc_libsimgrid_info->start_data;
if(!compared_pointers){
compared_pointers = xbt_dynar_new(sizeof(pointers_pair_t), pointers_pair_free_voidp);
offset1 = (char *)current_var1->address - (char *)std_heap;
offset2 = (char *)current_var2->address - (char *)std_heap;
if(current_var1->region == 1)
- res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_variables_type_libsimgrid, mc_variables_type_binary, current_var1->type, 0, 1, start_data_libsimgrid, 0);
+ res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_libsimgrid_info->types, mc_binary_info->types, current_var1->type, 0, 1, start_data_libsimgrid, 0);
else
- res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_variables_type_binary, mc_variables_type_libsimgrid, current_var1->type, 0, 2, start_data_binary, 0);
+ res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_binary_info->types, mc_libsimgrid_info->types, current_var1->type, 0, 2, start_data_binary, 0);
if(res == 1){
XBT_VERB("Local variable %s (%p - %p) in frame %s is different between snapshots", current_var1->name,(char *)heap1 + offset1, (char *)heap2 + offset2, current_var1->frame);
xbt_dynar_free(&compared_pointers);
#endif
/* Compare heap */
- if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[0]->data, (xbt_mheap_t)s2->regions[0]->data, mc_variables_type_libsimgrid, mc_variables_type_binary) > 0){
+ if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[0]->data,
+ (xbt_mheap_t)s2->regions[0]->data,
+ mc_libsimgrid_info->types,
+ mc_binary_info->types) > 0){
#ifdef MC_DEBUG
xbt_os_walltimer_stop(timer);
--- /dev/null
+/* Copyright (c) 2008-2013. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include <stdlib.h>
+#include <dwarf.h>
+#include <elfutils/libdw.h>
+#include <inttypes.h>
+
+#include <simgrid_config.h>
+#include <xbt/log.h>
+#include <xbt/sysdep.h>
+
+#include "mc_private.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_dwarf, mc, "DWARF processing");
+
+/** \brief The default DW_TAG_lower_bound for a given DW_AT_language.
+ *
+ * The default for a given language is defined in the DWARF spec.
+ *
+ * \param language consant as defined by the DWARf spec
+ */
+static uint64_t MC_dwarf_default_lower_bound(int lang);
+
+/** \brief Computes the the element_count of a DW_TAG_enumeration_type DIE
+ *
+ * This is the number of elements in a given array dimension.
+ *
+ * A reference of the compilation unit (DW_TAG_compile_unit) is
+ * needed because the default lower bound (when there is no DW_AT_lower_bound)
+ * depends of the language of the compilation unit (DW_AT_language).
+ *
+ * \param die DIE for the DW_TAG_enumeration_type or DW_TAG_subrange_type
+ * \param unit DIE of the DW_TAG_compile_unit
+ */
+static uint64_t MC_dwarf_subrange_element_count(Dwarf_Die* die, Dwarf_Die* unit);
+
+/** \brief Computes the number of elements of a given DW_TAG_array_type.
+ *
+ * \param die DIE for the DW_TAG_array_type
+ */
+static uint64_t MC_dwarf_array_element_count(Dwarf_Die* die, Dwarf_Die* unit);
+
+/** \brief Process a DIE
+ *
+ * \param info the resulting object fot the library/binary file (output)
+ * \param die the current DIE
+ * \param unit the DIE of the compile unit of the current DIE
+ * \param frame containg frame if any
+ */
+static void MC_dwarf_handle_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame);
+
+/** \brief Process a type DIE
+ */
+static void MC_dwarf_handle_type_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit);
+
+/** \brief Calls MC_dwarf_handle_die on all childrend of the given die
+ *
+ * \param info the resulting object fot the library/binary file (output)
+ * \param die the current DIE
+ * \param unit the DIE of the compile unit of the current DIE
+ * \param frame containg frame if any
+ */
+static void MC_dwarf_handle_children(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame);
+
+/** \brief Handle a variable (DW_TAG_variable or other)
+ *
+ * \param info the resulting object fot the library/binary file (output)
+ * \param die the current DIE
+ * \param unit the DIE of the compile unit of the current DIE
+ * \param frame containg frame if any
+ */
+static void MC_dwarf_handle_variable_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame);
+
+/** \brief Convert a libdw DWARF expression into a MC representation of the location
+ *
+ * \param expr array of DWARf operations
+ * \param len number of elements
+ * \return a new MC expression
+ */
+static dw_location_t MC_dwarf_get_expression(Dwarf_Op* expr, size_t len);
+
+/** \brief Get the DW_TAG_type of the DIE
+ *
+ * \param die DIE
+ * \return DW_TAG_type attribute as a new string (NULL if none)
+ */
+static char* MC_dwarf_at_type(Dwarf_Die* die);
+
+/** \brief Get the name of an attribute (DW_AT_*) from its code
+ *
+ * \param attr attribute code (see the DWARF specification)
+ * \return name of the attribute
+ */
+const char* MC_dwarf_attrname(int attr) {
+ switch (attr) {
+#include "mc_dwarf_attrnames.h"
+ default:
+ return "DW_AT_unkown";
+ }
+}
+
+/** \brief Get the name of a dwarf tag (DW_TAG_*) from its code
+ *
+ * \param tag tag code (see the DWARF specification)
+ * \return name of the tag
+ */
+const char* MC_dwarf_tagname(int tag) {
+ switch (tag) {
+#include "mc_dwarf_tagnames.h"
+ case DW_TAG_invalid:
+ return "DW_TAG_invalid";
+ default:
+ return "DW_TAG_unkown";
+ }
+}
+
+/** \brief Get the name of the tag of a given DIE
+ *
+ * \param die DIE
+ * \return name of the tag of this DIE
+ */
+static inline const char* MC_dwarf_die_tagname(Dwarf_Die* die) {
+ return MC_dwarf_tagname(dwarf_tag(die));
+}
+
+// ***** Attributes
+
+/** \brief Get an attribute of a given DIE as a string
+ *
+ * \param the DIE
+ * \param attribute attribute
+ * \return value of the given attribute of the given DIE
+ */
+static const char* MC_dwarf_attr_string(Dwarf_Die* die, int attribute) {
+ Dwarf_Attribute attr;
+ if (!dwarf_attr_integrate(die, attribute, &attr)) {
+ return NULL;
+ } else {
+ return dwarf_formstring(&attr);
+ }
+}
+
+/** \brief Get the linkage name of a DIE.
+ *
+ * Use either DW_AT_linkage_name or DW_AR_MIPS_linkage_name.
+ *
+ * \param DIE
+ * \return linkage name of the given DIE (or NULL)
+ * */
+static const char* MC_dwarf_at_linkage_name(Dwarf_Die* die) {
+ const char* name = MC_dwarf_attr_string(die, DW_AT_linkage_name);
+ if (!name)
+ name = MC_dwarf_attr_string(die, DW_AT_MIPS_linkage_name);
+ return name;
+}
+
+/** \brief Create a location list from a given attribute
+ *
+ * \param die the DIE
+ * \param attr the attribute
+ * \return MC specific representation of the location list represented by the given attribute
+ * of the given die
+ */
+static dw_location_t MC_dwarf_get_location_list(Dwarf_Die* die, Dwarf_Attribute* attr) {
+
+ dw_location_t location = xbt_new0(s_dw_location_t, 1);
+ location->type = e_dw_loclist;
+ xbt_dynar_t loclist = xbt_dynar_new(sizeof(dw_location_entry_t), NULL);
+ location->location.loclist = loclist;
+
+ ptrdiff_t offset = 0;
+ Dwarf_Addr base, start, end;
+ Dwarf_Op *expr;
+ size_t len;
+
+ while (1) {
+
+ offset = dwarf_getlocations(attr, offset, &base, &start, &end, &expr, &len);
+ if (offset==0)
+ return location;
+ else if (offset==-1)
+ xbt_die("Error while loading location list");
+
+ dw_location_entry_t new_entry = xbt_new0(s_dw_location_entry_t, 1);
+ new_entry->lowpc = start;
+ new_entry->highpc = end;
+ new_entry->location = MC_dwarf_get_expression(expr, len);
+
+ xbt_dynar_push(loclist, &new_entry);
+
+ }
+}
+
+/** \brief Get the location expression or location list from an attribute
+ *
+ * Processes direct expressions as well as location lists.
+ *
+ * \param die the DIE
+ * \param attr the attribute
+ * \return MC specific representation of the location represented by the given attribute
+ * of the given die
+ */
+static dw_location_t MC_dwarf_get_location(Dwarf_Die* die, Dwarf_Attribute* attr) {
+ int form = dwarf_whatform(attr);
+ switch (form) {
+
+ // The attribute is an DWARF location expression:
+ case DW_FORM_exprloc:
+ case DW_FORM_block1: // not in the spec
+ case DW_FORM_block2:
+ case DW_FORM_block4:
+ case DW_FORM_block:
+ {
+ Dwarf_Op* expr;
+ size_t len;
+ if (dwarf_getlocation(attr, &expr, &len))
+ xbt_die("Could not read location expression");
+ return MC_dwarf_get_expression(expr, len);
+ }
+
+ // The attribute is a reference to a location list entry:
+ case DW_FORM_sec_offset:
+ case DW_FORM_data2:
+ case DW_FORM_data4:
+ case DW_FORM_data8:
+ {
+ return MC_dwarf_get_location_list(die, attr);
+ }
+ break;
+
+ default:
+ xbt_die("Unexpected form %i list for location in attribute %s of <%p>%s",
+ form,
+ MC_dwarf_attrname(attr->code),
+ (void*) dwarf_dieoffset(die),
+ MC_dwarf_attr_string(die, DW_AT_name));
+ return NULL;
+ }
+}
+
+/** \brief Get the location expression or location list from an attribute
+ *
+ * Processes direct expressions as well as location lists.
+ *
+ * \param die the DIE
+ * \param attribute the attribute code
+ * \return MC specific representation of the location represented by the given attribute
+ * of the given die
+ */
+static dw_location_t MC_dwarf_at_location(Dwarf_Die* die, int attribute) {
+ if(!dwarf_hasattr_integrate(die, attribute))
+ return xbt_new0(s_dw_location_t, 1);
+
+ Dwarf_Attribute attr;
+ dwarf_attr_integrate(die, attribute, &attr);
+ return MC_dwarf_get_location(die, &attr);
+}
+
+static char* MC_dwarf_at_type(Dwarf_Die* die) {
+ Dwarf_Attribute attr;
+ if (dwarf_hasattr_integrate(die, DW_AT_type)) {
+ dwarf_attr_integrate(die, DW_AT_type, &attr);
+ Dwarf_Die subtype_die;
+ if (dwarf_formref_die(&attr, &subtype_die)==NULL) {
+ xbt_die("Could not find DIE for type");
+ }
+ Dwarf_Off subtype_global_offset = dwarf_dieoffset(&subtype_die);
+ return bprintf("%" PRIx64 , subtype_global_offset);
+ }
+ else return NULL;
+}
+
+static uint64_t MC_dwarf_attr_addr(Dwarf_Die* die, int attribute) {
+ Dwarf_Attribute attr;
+ if(dwarf_attr_integrate(die, attribute, &attr)==NULL)
+ return 0;
+ Dwarf_Addr value;
+ if (dwarf_formaddr(&attr, &value) == 0)
+ return (uint64_t) value;
+ else
+ return 0;
+}
+
+static uint64_t MC_dwarf_attr_uint(Dwarf_Die* die, int attribute, uint64_t default_value) {
+ Dwarf_Attribute attr;
+ if (dwarf_attr_integrate(die, attribute, &attr)==NULL)
+ return default_value;
+ Dwarf_Word value;
+ return dwarf_formudata(dwarf_attr_integrate(die, attribute, &attr), &value) == 0 ? (uint64_t) value : default_value;
+}
+
+static bool MC_dwarf_attr_flag(Dwarf_Die* die, int attribute, int integrate) {
+ Dwarf_Attribute attr;
+ if ((integrate ? dwarf_attr_integrate(die, attribute, &attr)
+ : dwarf_attr(die, attribute, &attr))==0)
+ return false;
+
+ bool result;
+ if (dwarf_formflag(&attr, &result))
+ xbt_die("Unexpected form for attribute %s",
+ MC_dwarf_attrname(attribute));
+ return result;
+}
+
+static uint64_t MC_dwarf_default_lower_bound(int lang) {
+ switch(lang) {
+ case DW_LANG_C:
+ case DW_LANG_C89:
+ case DW_LANG_C99:
+ case DW_LANG_C_plus_plus:
+ case DW_LANG_D:
+ case DW_LANG_Java:
+ case DW_LANG_ObjC:
+ case DW_LANG_ObjC_plus_plus:
+ case DW_LANG_Python:
+ case DW_LANG_UPC:
+ return 0;
+ case DW_LANG_Ada83:
+ case DW_LANG_Ada95:
+ case DW_LANG_Fortran77:
+ case DW_LANG_Fortran90:
+ case DW_LANG_Fortran95:
+ case DW_LANG_Modula2:
+ case DW_LANG_Pascal83:
+ case DW_LANG_PL1:
+ case DW_LANG_Cobol74:
+ case DW_LANG_Cobol85:
+ return 1;
+ default:
+ xbt_die("No default MT_TAG_lower_bound for language %i and none given", lang);
+ return 0;
+ }
+}
+
+static uint64_t MC_dwarf_subrange_element_count(Dwarf_Die* die, Dwarf_Die* unit) {
+ xbt_assert(dwarf_tag(die)==DW_TAG_enumeration_type ||dwarf_tag(die)==DW_TAG_subrange_type,
+ "MC_dwarf_subrange_element_count called with DIE of type %s", MC_dwarf_die_tagname(die));
+
+ // Use DW_TAG_count if present:
+ if (dwarf_hasattr_integrate(die, DW_AT_count)) {
+ return MC_dwarf_attr_uint(die, DW_AT_count, 0);
+ }
+
+ // Otherwise compute DW_TAG_upper_bound-DW_TAG_lower_bound:
+
+ if (!dwarf_hasattr_integrate(die, DW_AT_upper_bound)) {
+ // This is not really 0, but the code expects this (we do not know):
+ return 0;
+ }
+ uint64_t upper_bound = MC_dwarf_attr_uint(die, DW_AT_upper_bound, -1);
+
+ uint64_t lower_bound = 0;
+ if (dwarf_hasattr_integrate(die, DW_AT_lower_bound)) {
+ lower_bound = MC_dwarf_attr_uint(die, DW_AT_lower_bound, -1);
+ } else {
+ lower_bound = MC_dwarf_default_lower_bound(dwarf_srclang(unit));
+ }
+ return upper_bound - lower_bound;
+}
+
+static uint64_t MC_dwarf_array_element_count(Dwarf_Die* die, Dwarf_Die* unit) {
+ xbt_assert(dwarf_tag(die)==DW_TAG_array_type,
+ "MC_dwarf_array_element_count called with DIE of type %s", MC_dwarf_die_tagname(die));
+
+ int result = 1;
+ Dwarf_Die child;
+ int res;
+ for (res=dwarf_child(die, &child); res==0; res=dwarf_siblingof(&child,&child)) {
+ int child_tag = dwarf_tag(&child);
+ if (child_tag==DW_TAG_subrange_type ||child_tag==DW_TAG_enumeration_type) {
+ result *= MC_dwarf_subrange_element_count(&child, unit);
+ }
+ }
+ return result;
+}
+
+// ***** Location
+
+Dwarf_Off MC_dwarf_resolve_location(unw_cursor_t* c, dw_location_t location, void* frame_pointer_address) {
+ unw_word_t res;
+ switch (location->type){
+ case e_dw_compose:
+ if (xbt_dynar_length(location->location.compose) > 1){
+ return 0; /* TODO : location list with optimizations enabled */
+ }
+ dw_location_t location_entry = xbt_dynar_get_as(location->location.compose, 0, dw_location_t);
+ switch (location_entry->type){
+ case e_dw_register:
+ unw_get_reg(c, location_entry->location.reg, &res);
+ return res;
+ case e_dw_bregister_op:
+ unw_get_reg(c, location_entry->location.breg_op.reg, &res);
+ return (Dwarf_Off) ((long)res + location_entry->location.breg_op.offset);
+ break;
+ case e_dw_fbregister_op:
+ if (frame_pointer_address != NULL)
+ return (Dwarf_Off)((char *)frame_pointer_address + location_entry->location.fbreg_op);
+ else
+ return 0;
+ default:
+ return 0; /* FIXME : implement other cases (with optimizations enabled) */
+ }
+ break;
+ default:
+ return 0;
+ }
+}
+
+// ***** dw_type_t
+
+static void MC_dwarf_fill_member_location(dw_type_t type, dw_type_t member, Dwarf_Die* child) {
+ if (dwarf_hasattr(child, DW_AT_data_bit_offset)) {
+ xbt_die("Can't groke DW_AT_data_bit_offset.");
+ }
+
+ if (!dwarf_hasattr_integrate(child, DW_AT_data_member_location)) {
+ if (type->type != DW_TAG_union_type) {
+ xbt_die(
+ "Missing DW_AT_data_member_location field in DW_TAG_member %s of type <%p>%s",
+ member->name, type->id, type->name);
+ } else {
+ return;
+ }
+ }
+
+ Dwarf_Attribute attr;
+ dwarf_attr_integrate(child, DW_AT_data_member_location, &attr);
+ switch (dwarf_whatform(&attr)) {
+
+ case DW_FORM_exprloc:
+ {
+ Dwarf_Op* expr;
+ size_t len;
+ if (dwarf_getlocation(&attr, &expr, &len)) {
+ xbt_die(
+ "Could not read location expression DW_AT_data_member_location in DW_TAG_member %s of type <%p>%s",
+ MC_dwarf_attr_string(child, DW_AT_name),
+ type->id, type->name);
+ }
+ if (len==1 && expr[0].atom == DW_OP_plus_uconst) {
+ member->offset = expr[0].number;
+ } else {
+ xbt_die("Can't groke this location expression yet. %i %i",
+ len==1 , expr[0].atom == DW_OP_plus_uconst);
+ }
+ break;
+ }
+ case DW_FORM_data1:
+ case DW_FORM_data2:
+ case DW_FORM_data4:
+ case DW_FORM_data8:
+ case DW_FORM_sdata:
+ case DW_FORM_udata:
+ {
+ Dwarf_Word offset;
+ if (!dwarf_formudata(&attr, &offset))
+ member->offset = offset;
+ else
+ xbt_die("Cannot get DW_AT_data_member_%s location <%p>%s",
+ MC_dwarf_attr_string(child, DW_AT_name),
+ type->id, type->name);
+ break;
+ }
+ }
+}
+
+static void MC_dwarf_add_members(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_type_t type) {
+ int res;
+ Dwarf_Die child;
+ xbt_assert(!type->members);
+ type->members = xbt_dynar_new(sizeof(dw_type_t), (void(*)(void*))dw_type_free);
+ for (res=dwarf_child(die, &child); res==0; res=dwarf_siblingof(&child,&child)) {
+ if (dwarf_tag(&child)==DW_TAG_member) {
+ // TODO, we should use another type (because is is not a type but a member)
+ dw_type_t member = xbt_new0(s_dw_type_t, 1);
+ member->type = -1;
+ member->id = NULL;
+
+ const char* name = MC_dwarf_attr_string(&child, DW_AT_name);
+ if(name)
+ member->name = xbt_strdup(name);
+ else
+ member->name = NULL;
+
+ member->byte_size = MC_dwarf_attr_uint(&child, DW_AT_byte_size, 0);
+ member->element_count = -1;
+ member->dw_type_id = MC_dwarf_at_type(&child);
+ member->members = NULL;
+ member->is_pointer_type = 0;
+ member->offset = 0;
+
+ if(dwarf_hasattr(&child, DW_AT_data_bit_offset)) {
+ xbt_die("Can't groke DW_AT_data_bit_offset.");
+ }
+
+ MC_dwarf_fill_member_location(type, member, &child);
+
+ if (!member->dw_type_id) {
+ xbt_die("Missing type for member %s of <%p>%s", member->name, type->id, type->name);
+ }
+
+ xbt_dynar_push(type->members, &member);
+ }
+ }
+}
+
+/** \brief Create a MC type object from a DIE
+ *
+ * \param info current object info object
+ * \param DIE (for a given type);
+ * \param unit compilation unit of the current DIE
+ * \return MC representation of the type
+ */
+static dw_type_t MC_dwarf_die_to_type(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit) {
+
+ dw_type_t type = xbt_new0(s_dw_type_t, 1);
+ type->type = -1;
+ type->id = NULL;
+ type->name = NULL;
+ type->byte_size = 0;
+ type->element_count = -1;
+ type->dw_type_id = NULL;
+ type->members = NULL;
+ type->is_pointer_type = 0;
+ type->offset = 0;
+
+ type->type = dwarf_tag(die);
+
+ // Global Offset
+ type->id = (void *) dwarf_dieoffset(die);
+
+ const char* name = MC_dwarf_attr_string(die, DW_AT_name);
+ if (name!=NULL) {
+ type->name = xbt_strdup(name);
+ }
+
+ XBT_DEBUG("Processing type <%p>%s", type->id, type->name);
+
+ type->dw_type_id = MC_dwarf_at_type(die);
+
+ // Computation of the byte_size;
+ if (dwarf_hasattr_integrate(die, DW_AT_byte_size))
+ type->byte_size = MC_dwarf_attr_uint(die, DW_AT_byte_size, 0);
+ else if (type->type == DW_TAG_array_type || type->type==DW_TAG_structure_type || type->type==DW_TAG_class_type) {
+ Dwarf_Word size;
+ if (dwarf_aggregate_size(die, &size)==0) {
+ type->byte_size = size;
+ }
+ }
+
+ switch (type->type) {
+ case DW_TAG_array_type:
+ type->element_count = MC_dwarf_array_element_count(die, unit);
+ // TODO, handle DW_byte_stride and (not) DW_bit_stride
+ break;
+
+ case DW_TAG_pointer_type:
+ case DW_TAG_reference_type:
+ case DW_TAG_rvalue_reference_type:
+ type->is_pointer_type = 1;
+ break;
+
+ case DW_TAG_structure_type:
+ case DW_TAG_union_type:
+ case DW_TAG_class_type:
+ MC_dwarf_add_members(info, die, unit, type);
+ }
+
+ return type;
+}
+
+static void MC_dwarf_handle_type_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit) {
+ dw_type_t type = MC_dwarf_die_to_type(info, die, unit);
+
+ char* key = bprintf("%" PRIx64, (uint64_t) type->id);
+ xbt_dict_set(info->types, key, type, NULL);
+}
+
+/** \brief Convert libdw location expresion elment into native one (or NULL in some cases) */
+static dw_location_t MC_dwarf_get_expression_element(Dwarf_Op* op) {
+ dw_location_t element = xbt_new0(s_dw_location_t, 1);
+ uint8_t atom = op->atom;
+ if (atom >= DW_OP_reg0 && atom<= DW_OP_reg31) {
+ element->type = e_dw_register;
+ element->location.reg = atom - DW_OP_reg0;
+ }
+ else if (atom >= DW_OP_breg0 && atom<= DW_OP_breg31) {
+ element->type = e_dw_bregister_op;
+ element->location.reg = atom - DW_OP_breg0;
+ element->location.breg_op.offset = op->number;
+ }
+ else if (atom >= DW_OP_lit0 && atom<= DW_OP_lit31) {
+ element->type = e_dw_lit;
+ element->location.reg = atom - DW_OP_lit0;
+ }
+ else switch (atom) {
+ case DW_OP_fbreg:
+ element->type = e_dw_fbregister_op;
+ element->location.fbreg_op = op->number;
+ break;
+ case DW_OP_piece:
+ element->type = e_dw_piece;
+ element->location.piece = op->number;
+ break;
+ case DW_OP_plus_uconst:
+ element->type = e_dw_plus_uconst;
+ element->location.plus_uconst = op->number;
+ break;
+ case DW_OP_abs:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("abs");
+ break;
+ case DW_OP_and:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("and");
+ break;
+ case DW_OP_div:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("div");
+ break;
+ case DW_OP_minus:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("minus");
+ break;
+ case DW_OP_mod:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("mod");
+ break;
+ case DW_OP_mul:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("mul");
+ break;
+ case DW_OP_neg:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("neg");
+ break;
+ case DW_OP_not:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("not");
+ break;
+ case DW_OP_or:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("or");
+ break;
+ case DW_OP_plus:
+ element->type = e_dw_arithmetic;
+ element->location.arithmetic = xbt_strdup("plus");
+ break;
+
+ case DW_OP_stack_value:
+ // Why nothing here?
+ xbt_free(element);
+ return NULL;
+
+ case DW_OP_deref_size:
+ element->type = e_dw_deref;
+ element->location.deref_size = (unsigned int short) op->number;
+ break;
+ case DW_OP_deref:
+ element->type = e_dw_deref;
+ element->location.deref_size = sizeof(void *);
+ break;
+ case DW_OP_constu:
+ element->type = e_dw_uconstant;
+ element->location.uconstant.bytes = 1;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_consts:
+ element->type = e_dw_sconstant;
+ element->location.uconstant.bytes = 1;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+
+ case DW_OP_const1u:
+ element->type = e_dw_uconstant;
+ element->location.uconstant.bytes = 1;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_const2u:
+ element->type = e_dw_uconstant;
+ element->location.uconstant.bytes = 2;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_const4u:
+ element->type = e_dw_uconstant;
+ element->location.uconstant.bytes = 4;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_const8u:
+ element->type = e_dw_uconstant;
+ element->location.uconstant.bytes = 8;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+
+ case DW_OP_const1s:
+ element->type = e_dw_sconstant;
+ element->location.uconstant.bytes = 1;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_const2s:
+ element->type = e_dw_sconstant;
+ element->location.uconstant.bytes = 2;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_const4s:
+ element->type = e_dw_sconstant;
+ element->location.uconstant.bytes = 4;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ case DW_OP_const8s:
+ element->type = e_dw_sconstant;
+ element->location.uconstant.bytes = 8;
+ element->location.uconstant.value = (unsigned long int) op->number;
+ break;
+ default:
+ element->type = e_dw_unsupported;
+ break;
+ }
+ return element;
+}
+
+/** \brief Convert libdw location expresion into native one */
+static dw_location_t MC_dwarf_get_expression(Dwarf_Op* expr, size_t len) {
+ dw_location_t loc = xbt_new0(s_dw_location_t, 1);
+ loc->type = e_dw_compose;
+ loc->location.compose = xbt_dynar_new(sizeof(dw_location_t), NULL);
+
+ int i;
+ for (i=0; i!=len; ++i) {
+ dw_location_t element = MC_dwarf_get_expression_element(expr+i);
+ if (element)
+ xbt_dynar_push(loc->location.compose, &element);
+ }
+
+ return loc;
+}
+
+static dw_variable_t MC_die_to_variable(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+ // Drop declaration:
+ if (MC_dwarf_attr_flag(die, DW_AT_declaration, false))
+ return NULL;
+
+ Dwarf_Attribute attr_location;
+ if (dwarf_attr(die, DW_AT_location, &attr_location)==NULL) {
+ // No location: do not add it ?
+ return NULL;
+ }
+
+ dw_variable_t variable = xbt_new0(s_dw_variable_t, 1);
+ variable->dwarf_offset = dwarf_dieoffset(die);
+ variable->global = frame == NULL; // Can be override base on DW_AT_location
+ variable->name = xbt_strdup(MC_dwarf_attr_string(die, DW_AT_name));
+ variable->type_origin = MC_dwarf_at_type(die);
+ variable->address.address = NULL;
+
+ int form;
+ switch (form = dwarf_whatform(&attr_location)) {
+ case DW_FORM_exprloc:
+ case DW_FORM_block1: // Not in the spec but found in the wild.
+ {
+ Dwarf_Op* expr;
+ size_t len;
+ if (dwarf_getlocation(&attr_location, &expr, &len)) {
+ xbt_die(
+ "Could not read location expression in DW_AT_location of variable <%p>%s",
+ (void*) variable->dwarf_offset, variable->name);
+ }
+
+ if (len==1 && expr[0].atom == DW_OP_addr) {
+ variable->global = 1;
+ Dwarf_Off offset = expr[0].number;
+ // TODO, Why is this different base on the object?
+ Dwarf_Off base = strcmp(info->file_name, xbt_binary_name) !=0 ? (Dwarf_Off) info->start_text : 0;
+ variable->address.address = (void*) (base + offset);
+ } else {
+ variable->address.location = MC_dwarf_get_expression(expr, len);
+ }
+
+ break;
+ }
+ case DW_FORM_sec_offset: // type loclistptr
+ case DW_FORM_data2:
+ case DW_FORM_data4:
+ case DW_FORM_data8:
+ variable->address.location = MC_dwarf_get_location_list(die, &attr_location);
+ break;
+ default:
+ xbt_die("Unexpected form %i list for location in <%p>%s",
+ form, (void*) variable->dwarf_offset, variable->name);
+ }
+
+ return variable;
+}
+
+static void MC_dwarf_handle_variable_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+ dw_variable_t variable = MC_die_to_variable(info, die, unit, frame);
+ if(variable==NULL)
+ return;
+ MC_dwarf_register_variable(info, frame, variable);
+}
+
+static void MC_dwarf_handle_subprogram_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t parent_frame) {
+ dw_frame_t frame = xbt_new0(s_dw_frame_t, 1);
+
+ frame->start = dwarf_dieoffset(die);
+
+ const char* name = MC_dwarf_at_linkage_name(die);
+ if (name==NULL)
+ name = MC_dwarf_attr_string(die, DW_AT_name);
+ frame->name = xbt_strdup(name);
+
+ // Variables are filled in the (recursive) call of MC_dwarf_handle_children:
+ frame->variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
+ frame->high_pc = (void*) MC_dwarf_attr_addr(die, DW_AT_high_pc);
+ frame->low_pc = (void*) MC_dwarf_attr_addr(die, DW_AT_low_pc);
+ frame->frame_base = MC_dwarf_at_location(die, DW_AT_frame_base);
+ frame->end = -1; // This one is now useless:
+
+ // Handle children:
+ MC_dwarf_handle_children(info, die, unit, frame);
+
+ // Register it:
+ xbt_dict_set(info->local_variables, frame->name, frame, NULL);
+}
+
+static void MC_dwarf_handle_children(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+ Dwarf_Die child;
+ int res;
+ for (res=dwarf_child(die, &child); res==0; res=dwarf_siblingof(&child,&child)) {
+ MC_dwarf_handle_die(info, &child, unit, frame);
+ }
+}
+
+static void MC_dwarf_handle_die(mc_object_info_t info, Dwarf_Die* die, Dwarf_Die* unit, dw_frame_t frame) {
+ int tag = dwarf_tag(die);
+ switch (tag) {
+ case DW_TAG_array_type:
+ case DW_TAG_class_type:
+ case DW_TAG_enumeration_type:
+ case DW_TAG_typedef:
+ case DW_TAG_pointer_type:
+ case DW_TAG_string_type:
+ case DW_TAG_structure_type:
+ case DW_TAG_subroutine_type:
+ case DW_TAG_union_type:
+ case DW_TAG_ptr_to_member_type:
+ case DW_TAG_set_type:
+ case DW_TAG_subrange_type:
+ case DW_TAG_base_type:
+ case DW_TAG_const_type:
+ case DW_TAG_file_type:
+ case DW_TAG_packed_type:
+ case DW_TAG_volatile_type:
+ case DW_TAG_restrict_type:
+ case DW_TAG_interface_type:
+ case DW_TAG_unspecified_type:
+ case DW_TAG_mutable_type:
+ case DW_TAG_shared_type:
+ MC_dwarf_handle_type_die(info, die, unit);
+ break;
+ case DW_TAG_inlined_subroutine:
+ case DW_TAG_subprogram:
+ MC_dwarf_handle_subprogram_die(info, die, unit, frame);
+ return;
+ // case DW_TAG_formal_parameter:
+ case DW_TAG_variable:
+ case DW_TAG_formal_parameter:
+ MC_dwarf_handle_variable_die(info, die, unit, frame);
+ break;
+ }
+
+ // Recursive processing of children DIE:
+ MC_dwarf_handle_children(info, die, unit, frame);
+}
+
+void MC_dwarf_get_variables(mc_object_info_t info) {
+ int fd = open(info->file_name, O_RDONLY);
+ if (fd<0) {
+ xbt_die("Could not open file %s", info->file_name);
+ }
+ Dwarf *dwarf = dwarf_begin(fd, DWARF_C_READ);
+ if (dwarf==NULL) {
+ xbt_die("Your program must be compiled with -g");
+ }
+
+ Dwarf_Off offset = 0;
+ Dwarf_Off next_offset = 0;
+ size_t length;
+ while (dwarf_nextcu (dwarf, offset, &next_offset, &length, NULL, NULL, NULL) == 0) {
+ Dwarf_Die die;
+ if(dwarf_offdie(dwarf, offset+length, &die)!=NULL) {
+ MC_dwarf_handle_die(info, &die, &die, NULL);
+ }
+ offset = next_offset;
+ }
+
+ dwarf_end(dwarf);
+ close(fd);
+}
--- /dev/null
+case 0x01: return "DW_AT_sibling";
+case 0x02: return "DW_AT_location";
+case 0x03: return "DW_AT_name";
+case 0x09: return "DW_AT_ordering";
+case 0x0a: return "DW_AT_subscr_data";
+case 0x0b: return "DW_AT_byte_size";
+case 0x0c: return "DW_AT_bit_offset";
+case 0x0d: return "DW_AT_bit_size";
+case 0x0f: return "DW_AT_element_list";
+case 0x10: return "DW_AT_stmt_list";
+case 0x11: return "DW_AT_low_pc";
+case 0x12: return "DW_AT_high_pc";
+case 0x13: return "DW_AT_language";
+case 0x14: return "DW_AT_member";
+case 0x15: return "DW_AT_discr";
+case 0x16: return "DW_AT_discr_value";
+case 0x17: return "DW_AT_visibility";
+case 0x18: return "DW_AT_import";
+case 0x19: return "DW_AT_string_length";
+case 0x1a: return "DW_AT_common_reference";
+case 0x1b: return "DW_AT_comp_dir";
+case 0x1c: return "DW_AT_const_value";
+case 0x1d: return "DW_AT_containing_type";
+case 0x1e: return "DW_AT_default_value";
+case 0x20: return "DW_AT_inline";
+case 0x21: return "DW_AT_is_optional";
+case 0x22: return "DW_AT_lower_bound";
+case 0x25: return "DW_AT_producer";
+case 0x27: return "DW_AT_prototyped";
+case 0x2a: return "DW_AT_return_addr";
+case 0x2c: return "DW_AT_start_scope";
+case 0x2e: return "DW_AT_bit_stride";
+case 0x2f: return "DW_AT_upper_bound";
+case 0x31: return "DW_AT_abstract_origin";
+case 0x32: return "DW_AT_accessibility";
+case 0x33: return "DW_AT_address_class";
+case 0x34: return "DW_AT_artificial";
+case 0x35: return "DW_AT_base_types";
+case 0x36: return "DW_AT_calling_convention";
+case 0x37: return "DW_AT_count";
+case 0x38: return "DW_AT_data_member_location";
+case 0x39: return "DW_AT_decl_column";
+case 0x3a: return "DW_AT_decl_file";
+case 0x3b: return "DW_AT_decl_line";
+case 0x3c: return "DW_AT_declaration";
+case 0x3d: return "DW_AT_discr_list";
+case 0x3e: return "DW_AT_encoding";
+case 0x3f: return "DW_AT_external";
+case 0x40: return "DW_AT_frame_base";
+case 0x41: return "DW_AT_friend";
+case 0x42: return "DW_AT_identifier_case";
+case 0x43: return "DW_AT_macro_info";
+case 0x44: return "DW_AT_namelist_item";
+case 0x45: return "DW_AT_priority";
+case 0x46: return "DW_AT_segment";
+case 0x47: return "DW_AT_specification";
+case 0x48: return "DW_AT_static_link";
+case 0x49: return "DW_AT_type";
+case 0x4a: return "DW_AT_use_location";
+case 0x4b: return "DW_AT_variable_parameter";
+case 0x4c: return "DW_AT_virtuality";
+case 0x4d: return "DW_AT_vtable_elem_location";
+case 0x4e: return "DW_AT_allocated";
+case 0x4f: return "DW_AT_associated";
+case 0x50: return "DW_AT_data_location";
+case 0x51: return "DW_AT_byte_stride";
+case 0x52: return "DW_AT_entry_pc";
+case 0x53: return "DW_AT_use_UTF8";
+case 0x54: return "DW_AT_extension";
+case 0x55: return "DW_AT_ranges";
+case 0x56: return "DW_AT_trampoline";
+case 0x57: return "DW_AT_call_column";
+case 0x58: return "DW_AT_call_file";
+case 0x59: return "DW_AT_call_line";
+case 0x5a: return "DW_AT_description";
+case 0x5b: return "DW_AT_binary_scale";
+case 0x5c: return "DW_AT_decimal_scale";
+case 0x5d: return "DW_AT_small";
+case 0x5e: return "DW_AT_decimal_sign";
+case 0x5f: return "DW_AT_digit_count";
+case 0x60: return "DW_AT_picture_string";
+case 0x61: return "DW_AT_mutable";
+case 0x62: return "DW_AT_threads_scaled";
+case 0x63: return "DW_AT_explicit";
+case 0x64: return "DW_AT_object_pointer";
+case 0x65: return "DW_AT_endianity";
+case 0x66: return "DW_AT_elemental";
+case 0x67: return "DW_AT_pure";
+case 0x68: return "DW_AT_recursive";
+case 0x69: return "DW_AT_signature";
+case 0x6a: return "DW_AT_main_subprogram";
+case 0x6b: return "DW_AT_data_bit_offset";
+case 0x6c: return "DW_AT_const_expr";
+case 0x6d: return "DW_AT_enum_class";
+case 0x6e: return "DW_AT_linkage_name";
+case 0x2000: return "DW_AT_lo_user";
+case 0x2001: return "DW_AT_MIPS_fde";
+case 0x2002: return "DW_AT_MIPS_loop_begin";
+case 0x2003: return "DW_AT_MIPS_tail_loop_begin";
+case 0x2004: return "DW_AT_MIPS_epilog_begin";
+case 0x2005: return "DW_AT_MIPS_loop_unroll_factor";
+case 0x2006: return "DW_AT_MIPS_software_pipeline_depth";
+case 0x2007: return "DW_AT_MIPS_linkage_name";
+case 0x2008: return "DW_AT_MIPS_stride";
+case 0x2009: return "DW_AT_MIPS_abstract_name";
+case 0x200a: return "DW_AT_MIPS_clone_origin";
+case 0x200b: return "DW_AT_MIPS_has_inlines";
+case 0x200c: return "DW_AT_MIPS_stride_byte";
+case 0x200d: return "DW_AT_MIPS_stride_elem";
+case 0x200e: return "DW_AT_MIPS_ptr_dopetype";
+case 0x200f: return "DW_AT_MIPS_allocatable_dopetype";
+case 0x2010: return "DW_AT_MIPS_assumed_shape_dopetype";
+case 0x2011: return "DW_AT_MIPS_assumed_size";
+case 0x2101: return "DW_AT_sf_names";
+case 0x2102: return "DW_AT_src_info";
+case 0x2103: return "DW_AT_mac_info";
+case 0x2104: return "DW_AT_src_coords";
+case 0x2105: return "DW_AT_body_begin";
+case 0x2106: return "DW_AT_body_end";
+case 0x2107: return "DW_AT_GNU_vector";
+case 0x2108: return "DW_AT_GNU_guarded_by";
+case 0x2109: return "DW_AT_GNU_pt_guarded_by";
+case 0x210a: return "DW_AT_GNU_guarded";
+case 0x210b: return "DW_AT_GNU_pt_guarded";
+case 0x210c: return "DW_AT_GNU_locks_excluded";
+case 0x210d: return "DW_AT_GNU_exclusive_locks_required";
+case 0x210e: return "DW_AT_GNU_shared_locks_required";
+case 0x210f: return "DW_AT_GNU_odr_signature";
+case 0x2110: return "DW_AT_GNU_template_name";
+case 0x2111: return "DW_AT_GNU_call_site_value";
+case 0x2112: return "DW_AT_GNU_call_site_data_value";
+case 0x2113: return "DW_AT_GNU_call_site_target";
+case 0x2114: return "DW_AT_GNU_call_site_target_clobbered";
+case 0x2115: return "DW_AT_GNU_tail_call";
+case 0x2116: return "DW_AT_GNU_all_tail_call_sites";
+case 0x2117: return "DW_AT_GNU_all_call_sites";
+case 0x2118: return "DW_AT_GNU_all_source_call_sites";
+case 0x2119: return "DW_AT_GNU_macros";
+case 0x3fff: return "DW_AT_hi_user";
--- /dev/null
+case 0x01: return "DW_TAG_array_type";
+case 0x02: return "DW_TAG_class_type";
+case 0x03: return "DW_TAG_entry_point";
+case 0x04: return "DW_TAG_enumeration_type";
+case 0x05: return "DW_TAG_formal_parameter";
+case 0x08: return "DW_TAG_imported_declaration";
+case 0x0a: return "DW_TAG_label";
+case 0x0b: return "DW_TAG_lexical_block";
+case 0x0d: return "DW_TAG_member";
+case 0x0f: return "DW_TAG_pointer_type";
+case 0x10: return "DW_TAG_reference_type";
+case 0x11: return "DW_TAG_compile_unit";
+case 0x12: return "DW_TAG_string_type";
+case 0x13: return "DW_TAG_structure_type";
+case 0x15: return "DW_TAG_subroutine_type";
+case 0x16: return "DW_TAG_typedef";
+case 0x17: return "DW_TAG_union_type";
+case 0x18: return "DW_TAG_unspecified_parameters";
+case 0x19: return "DW_TAG_variant";
+case 0x1a: return "DW_TAG_common_block";
+case 0x1b: return "DW_TAG_common_inclusion";
+case 0x1c: return "DW_TAG_inheritance";
+case 0x1d: return "DW_TAG_inlined_subroutine";
+case 0x1e: return "DW_TAG_module";
+case 0x1f: return "DW_TAG_ptr_to_member_type";
+case 0x20: return "DW_TAG_set_type";
+case 0x21: return "DW_TAG_subrange_type";
+case 0x22: return "DW_TAG_with_stmt";
+case 0x23: return "DW_TAG_access_declaration";
+case 0x24: return "DW_TAG_base_type";
+case 0x25: return "DW_TAG_catch_block";
+case 0x26: return "DW_TAG_const_type";
+case 0x27: return "DW_TAG_constant";
+case 0x28: return "DW_TAG_enumerator";
+case 0x29: return "DW_TAG_file_type";
+case 0x2a: return "DW_TAG_friend";
+case 0x2b: return "DW_TAG_namelist";
+case 0x2c: return "DW_TAG_namelist_item";
+case 0x2d: return "DW_TAG_packed_type";
+case 0x2e: return "DW_TAG_subprogram";
+case 0x2f: return "DW_TAG_template_type_parameter";
+case 0x30: return "DW_TAG_template_value_parameter";
+case 0x31: return "DW_TAG_thrown_type";
+case 0x32: return "DW_TAG_try_block";
+case 0x33: return "DW_TAG_variant_part";
+case 0x34: return "DW_TAG_variable";
+case 0x35: return "DW_TAG_volatile_type";
+case 0x36: return "DW_TAG_dwarf_procedure";
+case 0x37: return "DW_TAG_restrict_type";
+case 0x38: return "DW_TAG_interface_type";
+case 0x39: return "DW_TAG_namespace";
+case 0x3a: return "DW_TAG_imported_module";
+case 0x3b: return "DW_TAG_unspecified_type";
+case 0x3c: return "DW_TAG_partial_unit";
+case 0x3d: return "DW_TAG_imported_unit";
+case 0x3e: return "DW_TAG_mutable_type";
+case 0x3f: return "DW_TAG_condition";
+case 0x40: return "DW_TAG_shared_type";
+case 0x41: return "DW_TAG_type_unit";
+case 0x42: return "DW_TAG_rvalue_reference_type";
+case 0x43: return "DW_TAG_template_alias";
+case 0x4080: return "DW_TAG_lo_user";
+case 0x4081: return "DW_TAG_MIPS_loop";
+case 0x4101: return "DW_TAG_format_label";
+case 0x4102: return "DW_TAG_function_template";
+case 0x4103: return "DW_TAG_class_template";
+case 0x4104: return "DW_TAG_GNU_BINCL";
+case 0x4105: return "DW_TAG_GNU_EINCL";
+case 0x4106: return "DW_TAG_GNU_template_template_param";
+case 0x4107: return "DW_TAG_GNU_template_parameter_pack";
+case 0x4108: return "DW_TAG_GNU_formal_parameter_pack";
+case 0x4109: return "DW_TAG_GNU_call_site";
+case 0x410a: return "DW_TAG_GNU_call_site_parameter";
+case 0xffff: return "DW_TAG_hi_user";
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/time.h>
+#include <libgen.h>
#include "simgrid/sg_config.h"
#include "../surf/surf_private.h"
#include "xbt/automaton.h"
#include "xbt/dict.h"
+static void MC_post_process_types(mc_object_info_t info);
+
XBT_LOG_NEW_CATEGORY(mc, "All MC categories");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_global, mc,
"Logging specific to MC (global)");
xbt_automaton_t _mc_property_automaton = NULL;
/* Variables */
-xbt_dict_t mc_local_variables_libsimgrid = NULL;
-xbt_dict_t mc_local_variables_binary = NULL;
-xbt_dynar_t mc_global_variables_libsimgrid = NULL;
-xbt_dynar_t mc_global_variables_binary = NULL;
-xbt_dict_t mc_variables_type_libsimgrid = NULL;
-xbt_dict_t mc_variables_type_binary = NULL;
+mc_object_info_t mc_libsimgrid_info = NULL;
+mc_object_info_t mc_binary_info = NULL;
/* Ignore mechanism */
xbt_dynar_t mc_stack_comparison_ignore;
xbt_free(e);
}
-static void dw_type_free(dw_type_t t){
+void dw_type_free(dw_type_t t){
xbt_free(t->name);
xbt_free(t->dw_type_id);
xbt_dynar_free(&(t->members));
dw_type_free((dw_type_t) * (void **) t);
}
-static void dw_variable_free(dw_variable_t v){
+void dw_variable_free(dw_variable_t v){
if(v){
xbt_free(v->name);
xbt_free(v->type_origin);
}
}
-static void dw_variable_free_voidp(void *t){
+void dw_variable_free_voidp(void *t){
dw_variable_free((dw_variable_t) * (void **) t);
}
+// object_info
+
+mc_object_info_t MC_new_object_info(void) {
+ mc_object_info_t res = xbt_new(s_mc_object_info_t, 1);
+ res->file_name = NULL;
+ res->start_text = NULL;
+ res->start_data = NULL;
+ res->start_bss = NULL;
+ res->local_variables = xbt_dict_new_homogeneous(NULL);
+ res->global_variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
+ res->types = xbt_dict_new_homogeneous(NULL);
+ return res;
+}
+
+void MC_free_object_info(mc_object_info_t* info) {
+ xbt_free(&(*info)->file_name);
+ xbt_dict_free(&(*info)->local_variables);
+ xbt_dynar_free(&(*info)->global_variables);
+ xbt_dict_free(&(*info)->types);
+ xbt_free(info);
+ *info = NULL;
+}
+
/*************************************************************************/
static dw_location_t MC_dwarf_get_location(xbt_dict_t location_list, char *expr){
}
-static xbt_dict_t MC_dwarf_get_location_list(const char *elf_file){
-
- char *command = bprintf("objdump -Wo %s", elf_file);
-
- FILE *fp = popen(command, "r");
-
- if(fp == NULL){
- perror("popen for objdump failed");
- xbt_abort();
- }
-
- int debug = 0; /*Detect if the program has been compiled with -g */
-
- xbt_dict_t location_list = xbt_dict_new_homogeneous(NULL);
- char *line = NULL, *loc_expr = NULL;
- ssize_t read;
- size_t n = 0;
- int cursor_remove;
- xbt_dynar_t split = NULL;
-
- while ((read = xbt_getline(&line, &n, fp)) != -1) {
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- xbt_str_trim(line, NULL);
-
- if(n == 0)
- continue;
-
- if(strlen(line) == 0)
- continue;
-
- if(debug == 0){
-
- if(strncmp(line, elf_file, strlen(elf_file)) == 0)
- continue;
-
- if(strncmp(line, "Contents", 8) == 0)
- continue;
-
- if(strncmp(line, "Offset", 6) == 0){
- debug = 1;
- continue;
- }
- }
-
- if(debug == 0){
- XBT_INFO("Your program must be compiled with -g");
- xbt_abort();
- }
-
- xbt_dynar_t loclist = xbt_dynar_new(sizeof(dw_location_entry_t), NULL);
-
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- while(read != -1 && strcmp("<End", (char *)xbt_dynar_get_as(split, 1, char *)) != 0){
-
- dw_location_entry_t new_entry = xbt_new0(s_dw_location_entry_t, 1);
- new_entry->lowpc = strtoul((char *)xbt_dynar_get_as(split, 1, char *), NULL, 16);
- new_entry->highpc = strtoul((char *)xbt_dynar_get_as(split, 2, char *), NULL, 16);
-
- cursor_remove =0;
- while(cursor_remove < 3){
- xbt_dynar_remove_at(split, 0, NULL);
- cursor_remove++;
- }
-
- loc_expr = xbt_str_join(split, " ");
- xbt_str_ltrim(loc_expr, "(");
- xbt_str_rtrim(loc_expr, ")");
- new_entry->location = MC_dwarf_get_location(NULL, loc_expr);
-
- xbt_dynar_push(loclist, &new_entry);
-
- xbt_dynar_free(&split);
- free(loc_expr);
-
- read = xbt_getline(&line, &n, fp);
- if(read != -1){
- line[read - 1] = '\0';
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
- }
-
- }
-
-
- char *key = bprintf("%d", (int)strtoul((char *)xbt_dynar_get_as(split, 0, char *), NULL, 16));
- xbt_dict_set(location_list, key, loclist, NULL);
- xbt_free(key);
-
- xbt_dynar_free(&split);
-
- }
-
- xbt_free(line);
- xbt_free(command);
- pclose(fp);
-
- return location_list;
-}
+/** \brief Finds a frame (DW_TAG_subprogram) from an DWARF offset in the rangd of this subprogram
+ *
+ * The offset can be an offset of a child DW_TAG_variable.
+ */
static dw_frame_t MC_dwarf_get_frame_by_offset(xbt_dict_t all_variables, unsigned long int offset){
xbt_dict_cursor_t cursor = NULL;
}
+void MC_dwarf_register_global_variable(mc_object_info_t info, dw_variable_t variable) {
+ int index = MC_dwarf_get_variable_index(info->global_variables, variable->name, variable->address.address);
+ if (index != -1)
+ xbt_dynar_insert_at(info->global_variables, index, &variable);
+ // TODO, else ?
+}
-static void MC_dwarf_get_variables(const char *elf_file, xbt_dict_t location_list, xbt_dict_t *local_variables, xbt_dynar_t *global_variables, xbt_dict_t *types){
-
- char *command = bprintf("objdump -Wi %s", elf_file);
-
- FILE *fp = popen(command, "r");
-
- if(fp == NULL)
- perror("popen for objdump failed");
-
- char *line = NULL, *origin, *abstract_origin, *current_frame = NULL,
- *subprogram_name = NULL, *subprogram_start = NULL, *subprogram_end = NULL,
- *node_type = NULL, *location_type = NULL, *variable_name = NULL,
- *loc_expr = NULL, *name = NULL, *end =NULL, *type_origin = NULL, *global_address = NULL,
- *parent_value = NULL;
-
- ssize_t read =0;
- size_t n = 0;
- int global_variable = 0, parent = 0, new_frame = 0, new_variable = 1, size = 0,
- is_pointer = 0, struct_decl = 0, member_end = 0,
- enumeration_size = 0, subrange = 0, union_decl = 0, offset = 0, index = 0;
-
- xbt_dynar_t split = NULL, split2 = NULL;
-
- xbt_dict_t variables_origin = xbt_dict_new_homogeneous(xbt_free);
- xbt_dict_t subprograms_origin = xbt_dict_new_homogeneous(xbt_free);
-
- dw_frame_t variable_frame, subroutine_frame = NULL;
-
- e_dw_type_type type_type = -1;
-
- read = xbt_getline(&line, &n, fp);
-
- while (read != -1) {
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_str_ltrim(line, NULL);
- xbt_str_strip_spaces(line);
-
- if(line[0] != '<'){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- split = xbt_str_split(line, " ");
-
- /* Get node type */
- node_type = xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *);
-
- if(strcmp(node_type, "(DW_TAG_subprogram)") == 0){ /* New frame */
-
- dw_frame_t frame = NULL;
-
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- subprogram_start = xbt_strdup(strtok(NULL, "<"));
- xbt_str_rtrim(subprogram_start, ">:");
-
- read = xbt_getline(&line, &n, fp);
-
- while(read != -1){
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- xbt_str_rtrim(line, NULL);
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- node_type = xbt_dynar_get_as(split, 1, char *);
-
- if(strncmp(node_type, "DW_AT_", 6) != 0)
- break;
-
- if(strcmp(node_type, "DW_AT_sibling") == 0){
-
- subprogram_end = xbt_strdup(xbt_dynar_get_as(split, 3, char*));
- xbt_str_ltrim(subprogram_end, "<0x");
- xbt_str_rtrim(subprogram_end, ">");
-
- }else if(strcmp(node_type, "DW_AT_abstract_origin:") == 0){ /* Frame already in dict */
-
- new_frame = 0;
- abstract_origin = xbt_strdup(xbt_dynar_get_as(split, 2, char*));
- xbt_str_ltrim(abstract_origin, "<0x");
- xbt_str_rtrim(abstract_origin, ">");
- subprogram_name = (char *)xbt_dict_get_or_null(subprograms_origin, abstract_origin);
- frame = xbt_dict_get_or_null(*local_variables, subprogram_name);
- xbt_free(abstract_origin);
-
- }else if(strcmp(node_type, "DW_AT_name") == 0){
-
- new_frame = 1;
- xbt_free(current_frame);
- frame = xbt_new0(s_dw_frame_t, 1);
- frame->name = strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));
- frame->variables = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
- frame->frame_base = xbt_new0(s_dw_location_t, 1);
- current_frame = strdup(frame->name);
-
- xbt_dict_set(subprograms_origin, subprogram_start, xbt_strdup(frame->name), NULL);
-
- }else if(strcmp(node_type, "DW_AT_frame_base") == 0){
-
- location_type = xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *);
-
- if(strcmp(location_type, "list)") == 0){ /* Search location in location list */
-
- frame->frame_base = MC_dwarf_get_location(location_list, xbt_dynar_get_as(split, 3, char *));
-
- }else{
-
- xbt_str_strip_spaces(line);
- split2 = xbt_str_split(line, "(");
- xbt_dynar_remove_at(split2, 0, NULL);
- loc_expr = xbt_str_join(split2, " ");
- xbt_str_rtrim(loc_expr, ")");
- frame->frame_base = MC_dwarf_get_location(NULL, loc_expr);
- xbt_dynar_free(&split2);
- xbt_free(loc_expr);
-
- }
-
- }else if(strcmp(node_type, "DW_AT_low_pc") == 0){
-
- if(frame != NULL)
- frame->low_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-
- }else if(strcmp(node_type, "DW_AT_high_pc") == 0){
-
- if(frame != NULL)
- frame->high_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-
- }else if(strcmp(node_type, "DW_AT_MIPS_linkage_name:") == 0){
-
- xbt_free(frame->name);
- xbt_free(current_frame);
- frame->name = strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));
- current_frame = strdup(frame->name);
- xbt_dict_set(subprograms_origin, subprogram_start, xbt_strdup(frame->name), NULL);
-
- }
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- if(new_frame == 1){
- frame->start = strtoul(subprogram_start, NULL, 16);
- if(subprogram_end != NULL)
- frame->end = strtoul(subprogram_end, NULL, 16);
- xbt_dict_set(*local_variables, frame->name, frame, NULL);
- }
-
- xbt_free(subprogram_start);
- xbt_free(subprogram_end);
- subprogram_end = NULL;
-
-
- }else if(strcmp(node_type, "(DW_TAG_variable)") == 0){ /* New variable */
-
- dw_variable_t var = NULL;
-
- parent_value = strdup(xbt_dynar_get_as(split, 0, char *));
- parent_value = strtok(parent_value,"<");
- xbt_str_rtrim(parent_value, ">");
- parent = atoi(parent_value);
- xbt_free(parent_value);
-
- if(parent == 1)
- global_variable = 1;
-
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- origin = xbt_strdup(strtok(NULL, "<"));
- xbt_str_rtrim(origin, ">:");
-
- read = xbt_getline(&line, &n, fp);
-
- while(read != -1){
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- xbt_str_rtrim(line, NULL);
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- node_type = xbt_dynar_get_as(split, 1, char *);
-
- if(strncmp(node_type, "DW_AT_", 6) != 0)
- break;
-
- if(strcmp(node_type, "DW_AT_name") == 0){
-
- var = xbt_new0(s_dw_variable_t, 1);
- var->name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));
- xbt_dict_set(variables_origin, origin, xbt_strdup(var->name), NULL);
-
- }else if(strcmp(node_type, "DW_AT_abstract_origin:") == 0){
-
- new_variable = 0;
-
- abstract_origin = xbt_dynar_get_as(split, 2, char *);
- xbt_str_ltrim(abstract_origin, "<0x");
- xbt_str_rtrim(abstract_origin, ">");
-
- variable_name = (char *)xbt_dict_get_or_null(variables_origin, abstract_origin);
- variable_frame = MC_dwarf_get_frame_by_offset(*local_variables, strtoul(abstract_origin, NULL, 16));
- var = MC_dwarf_get_variable_by_name(variable_frame, variable_name);
-
- }else if(strcmp(node_type, "DW_AT_location") == 0){
-
- if(var != NULL){
-
- if(!global_variable){
-
- location_type = xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *);
-
- if(strcmp(location_type, "list)") == 0){ /* Search location in location list */
- var->address.location = MC_dwarf_get_location(location_list, xbt_dynar_get_as(split, 3, char *));
- }else{
- xbt_str_strip_spaces(line);
- split2 = xbt_str_split(line, "(");
- xbt_dynar_remove_at(split2, 0, NULL);
- loc_expr = xbt_str_join(split2, " ");
- xbt_str_rtrim(loc_expr, ")");
- if(strncmp("DW_OP_addr", loc_expr, 10) == 0){
- global_variable = 1;
- xbt_dynar_free(&split2);
- split2 = xbt_str_split(loc_expr, " ");
- if(strcmp(elf_file, xbt_binary_name) != 0)
- var->address.address = (char *)start_text_libsimgrid + (long)((void *)strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16));
- else
- var->address.address = (void *)strtoul(xbt_dynar_get_as(split2, xbt_dynar_length(split2) - 1, char*), NULL, 16);
- }else{
- var->address.location = MC_dwarf_get_location(NULL, loc_expr);
- }
- xbt_dynar_free(&split2);
- xbt_free(loc_expr);
- }
- }else{
- global_address = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *));
- xbt_str_rtrim(global_address, ")");
- if(strcmp(elf_file, xbt_binary_name) != 0)
- var->address.address = (char *)start_text_libsimgrid + (long)((void *)strtoul(global_address, NULL, 16));
- else
- var->address.address = (void *)strtoul(global_address, NULL, 16);
- xbt_free(global_address);
- global_address = NULL;
- }
-
- }
-
- }else if(strcmp(node_type, "DW_AT_type") == 0){
-
- type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
- xbt_str_ltrim(type_origin, "<0x");
- xbt_str_rtrim(type_origin, ">");
-
- }else if(strcmp(node_type, "DW_AT_declaration") == 0){
-
- new_variable = 0;
- if(new_variable){
- dw_variable_free(var);
- var = NULL;
- }
-
- }else if(strcmp(node_type, "DW_AT_artificial") == 0){
-
- new_variable = 0;
- if(new_variable){
- dw_variable_free(var);
- var = NULL;
- }
-
- }
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- if(new_variable == 1){
-
- if(!global_variable){
- variable_frame = xbt_dict_get_or_null(*local_variables, current_frame);
- var->type_origin = strdup(type_origin);
- var->global = 0;
- index = MC_dwarf_get_variable_index(variable_frame->variables, var->name, NULL);
- if(index != -1)
- xbt_dynar_insert_at(variable_frame->variables, index, &var);
- }else{
- var->type_origin = strdup(type_origin);
- var->global = 1;
- index = MC_dwarf_get_variable_index(*global_variables, var->name, var->address.address);
- if(index != -1)
- xbt_dynar_insert_at(*global_variables, index, &var);
- }
-
- xbt_free(type_origin);
- type_origin = NULL;
- }
-
- global_variable = 0;
- new_variable = 1;
-
- }else if(strcmp(node_type, "(DW_TAG_inlined_subroutine)") == 0){
-
- read = xbt_getline(&line, &n, fp);
-
- while(read != -1){
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- xbt_str_rtrim(line, NULL);
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- if(strncmp(xbt_dynar_get_as(split, 1, char *), "DW_AT_", 6) != 0)
- break;
-
- node_type = xbt_dynar_get_as(split, 1, char *);
-
- if(strcmp(node_type, "DW_AT_abstract_origin:") == 0){
-
- origin = xbt_dynar_get_as(split, 2, char *);
- xbt_str_ltrim(origin, "<0x");
- xbt_str_rtrim(origin, ">");
-
- subprogram_name = (char *)xbt_dict_get_or_null(subprograms_origin, origin);
- subroutine_frame = xbt_dict_get_or_null(*local_variables, subprogram_name);
-
- }else if(strcmp(node_type, "DW_AT_low_pc") == 0){
-
- subroutine_frame->low_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
-
- }else if(strcmp(node_type, "DW_AT_high_pc") == 0){
-
- subroutine_frame->high_pc = (void *)strtoul(xbt_dynar_get_as(split, 3, char *), NULL, 16);
- }
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- }else if(strcmp(node_type, "(DW_TAG_base_type)") == 0
- || strcmp(node_type, "(DW_TAG_enumeration_type)") == 0
- || strcmp(node_type, "(DW_TAG_enumerator)") == 0
- || strcmp(node_type, "(DW_TAG_typedef)") == 0
- || strcmp(node_type, "(DW_TAG_const_type)") == 0
- || strcmp(node_type, "(DW_TAG_subroutine_type)") == 0
- || strcmp(node_type, "(DW_TAG_volatile_type)") == 0
- || (is_pointer = !strcmp(node_type, "(DW_TAG_pointer_type)"))){
-
- if(strcmp(node_type, "(DW_TAG_base_type)") == 0)
- type_type = e_dw_base_type;
- else if(strcmp(node_type, "(DW_TAG_enumeration_type)") == 0)
- type_type = e_dw_enumeration_type;
- else if(strcmp(node_type, "(DW_TAG_enumerator)") == 0)
- type_type = e_dw_enumerator;
- else if(strcmp(node_type, "(DW_TAG_typedef)") == 0)
- type_type = e_dw_typedef;
- else if(strcmp(node_type, "(DW_TAG_const_type)") == 0)
- type_type = e_dw_const_type;
- else if(strcmp(node_type, "(DW_TAG_pointer_type)") == 0)
- type_type = e_dw_pointer_type;
- else if(strcmp(node_type, "(DW_TAG_subroutine_type)") == 0)
- type_type = e_dw_subroutine_type;
- else if(strcmp(node_type, "(DW_TAG_volatile_type)") == 0)
- type_type = e_dw_volatile_type;
-
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- origin = strdup(strtok(NULL, "<"));
- xbt_str_rtrim(origin, ">:");
-
- read = xbt_getline(&line, &n, fp);
-
- while(read != -1){
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- xbt_str_rtrim(line, NULL);
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- if(strncmp(xbt_dynar_get_as(split, 1, char *), "DW_AT_", 6) != 0)
- break;
-
- node_type = xbt_dynar_get_as(split, 1, char *);
-
- if(strcmp(node_type, "DW_AT_byte_size") == 0){
- size = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
- if(type_type == e_dw_enumeration_type)
- enumeration_size = size;
- }else if(strcmp(node_type, "DW_AT_name") == 0){
- end = xbt_str_join(split, " ");
- xbt_dynar_free(&split);
- split = xbt_str_split(end, "):");
- xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL);
- name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*));
- }else if(strcmp(node_type, "DW_AT_type") == 0){
- type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
- xbt_str_ltrim(type_origin, "<0x");
- xbt_str_rtrim(type_origin, ">");
- }
-
- read = xbt_getline(&line, &n, fp);
- }
-
- dw_type_t type = xbt_new0(s_dw_type_t, 1);
- type->type = type_type;
- if(name)
- type->name = xbt_strdup(name);
- else
- type->name = xbt_strdup("undefined");
- type->is_pointer_type = is_pointer;
- type->id = (void *)strtoul(origin, NULL, 16);
- if(type_origin)
- type->dw_type_id = xbt_strdup(type_origin);
- if(type_type == e_dw_enumerator)
- type->size = enumeration_size;
- else
- type->size = size;
- type->members = NULL;
-
- xbt_dict_set(*types, origin, type, NULL);
-
- xbt_free(name);
- name = NULL;
- xbt_free(type_origin);
- type_origin = NULL;
- xbt_free(end);
- end = NULL;
-
- is_pointer = 0;
- size = 0;
- xbt_free(origin);
-
- }else if(strcmp(node_type, "(DW_TAG_structure_type)") == 0 || strcmp(node_type, "(DW_TAG_union_type)") == 0){
-
- if(strcmp(node_type, "(DW_TAG_structure_type)") == 0)
- struct_decl = 1;
- else
- union_decl = 1;
-
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- origin = strdup(strtok(NULL, "<"));
- xbt_str_rtrim(origin, ">:");
-
- read = xbt_getline(&line, &n, fp);
-
- dw_type_t type = NULL;
-
- while(read != -1){
-
- while(read != -1){
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- xbt_str_rtrim(line, NULL);
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- node_type = xbt_dynar_get_as(split, 1, char *);
-
- if(strncmp(node_type, "DW_AT_", 6) != 0){
- member_end = 1;
- break;
- }
-
- if(strcmp(node_type, "DW_AT_byte_size") == 0){
- size = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
- }else if(strcmp(node_type, "DW_AT_name") == 0){
- xbt_free(end);
- end = xbt_str_join(split, " ");
- xbt_dynar_free(&split);
- split = xbt_str_split(end, "):");
- xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL);
- name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*));
- }else if(strcmp(node_type, "DW_AT_type") == 0){
- type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
- xbt_str_ltrim(type_origin, "<0x");
- xbt_str_rtrim(type_origin, ">");
- }else if(strcmp(node_type, "DW_AT_data_member_location:") == 0){
- xbt_free(end);
- end = xbt_str_join(split, " ");
- xbt_dynar_free(&split);
- split = xbt_str_split(end, "DW_OP_plus_uconst:");
- xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), NULL);
- xbt_str_rtrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), ")");
- offset = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
- }
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- if(member_end && type){
- member_end = 0;
-
- dw_type_t member_type = xbt_new0(s_dw_type_t, 1);
- member_type->name = xbt_strdup(name);
- member_type->size = size;
- member_type->is_pointer_type = is_pointer;
- member_type->id = (void *)strtoul(origin, NULL, 16);
- member_type->offset = offset;
- if(type_origin)
- member_type->dw_type_id = xbt_strdup(type_origin);
-
- xbt_dynar_push(type->members, &member_type);
-
- xbt_free(name);
- name = NULL;
- xbt_free(end);
- end = NULL;
- xbt_free(type_origin);
- type_origin = NULL;
- size = 0;
- offset = 0;
-
- xbt_free(origin);
- origin = NULL;
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- origin = strdup(strtok(NULL, "<"));
- xbt_str_rtrim(origin, ">:");
-
- }
-
- if(struct_decl || union_decl){
- type = xbt_new0(s_dw_type_t, 1);
- if(struct_decl)
- type->type = e_dw_structure_type;
- else
- type->type = e_dw_union_type;
- type->name = xbt_strdup(name);
- type->size = size;
- type->is_pointer_type = is_pointer;
- type->id = (void *)strtoul(origin, NULL, 16);
- if(type_origin)
- type->dw_type_id = xbt_strdup(type_origin);
- type->members = xbt_dynar_new(sizeof(dw_type_t), dw_type_free_voidp);
-
- xbt_dict_set(*types, origin, type, NULL);
-
- xbt_free(name);
- name = NULL;
- xbt_free(end);
- end = NULL;
- xbt_free(type_origin);
- type_origin = NULL;
- size = 0;
- struct_decl = 0;
- union_decl = 0;
-
- }
-
- if(strcmp(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), "(DW_TAG_member)") != 0)
- break;
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- xbt_free(origin);
- origin = NULL;
-
- }else if(strcmp(node_type, "(DW_TAG_array_type)") == 0){
-
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- origin = strdup(strtok(NULL, "<"));
- xbt_str_rtrim(origin, ">:");
-
- read = xbt_getline(&line, &n, fp);
-
- dw_type_t type = NULL;
-
- while(read != -1){
-
- while(read != -1){
-
- /* Wipeout the new line character */
- line[read - 1] = '\0';
-
- if(n == 0 || strlen(line) == 0){
- read = xbt_getline(&line, &n, fp);
- continue;
- }
-
- xbt_dynar_free(&split);
- xbt_str_rtrim(line, NULL);
- xbt_str_strip_spaces(line);
- split = xbt_str_split(line, " ");
-
- node_type = xbt_dynar_get_as(split, 1, char *);
-
- if(strncmp(node_type, "DW_AT_", 6) != 0)
- break;
-
- if(strcmp(node_type, "DW_AT_upper_bound") == 0){
- size = strtol(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL, 10);
- }else if(strcmp(node_type, "DW_AT_name") == 0){
- end = xbt_str_join(split, " ");
- xbt_dynar_free(&split);
- split = xbt_str_split(end, "):");
- xbt_str_ltrim(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*), NULL);
- name = xbt_strdup(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char*));
- }else if(strcmp(node_type, "DW_AT_type") == 0){
- type_origin = xbt_strdup(xbt_dynar_get_as(split, 3, char *));
- xbt_str_ltrim(type_origin, "<0x");
- xbt_str_rtrim(type_origin, ">");
- }
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- if(strcmp(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), "(DW_TAG_subrange_type)") == 0){
- subrange = 1;
- }
-
- if(subrange && type){
- type->size = size;
-
- xbt_free(name);
- name = NULL;
- xbt_free(end);
- end = NULL;
- xbt_free(type_origin);
- type_origin = NULL;
- size = 0;
-
- xbt_free(origin);
- origin = NULL;
- strtok(xbt_dynar_get_as(split, 0, char *), "<");
- origin = strdup(strtok(NULL, "<"));
- xbt_str_rtrim(origin, ">:");
-
- }else {
-
- type = xbt_new0(s_dw_type_t, 1);
- type->type = e_dw_array_type;
- type->name = xbt_strdup(name);
- type->is_pointer_type = is_pointer;
- type->id = (void *)strtoul(origin, NULL, 16);
- if(type_origin)
- type->dw_type_id = xbt_strdup(type_origin);
- type->members = NULL;
-
- xbt_dict_set(*types, origin, type, NULL);
-
- xbt_free(name);
- name = NULL;
- xbt_free(end);
- end = NULL;
- xbt_free(type_origin);
- type_origin = NULL;
- size = 0;
- }
-
- if(strcmp(xbt_dynar_get_as(split, xbt_dynar_length(split) - 1, char *), "(DW_TAG_subrange_type)") != 0)
- break;
-
- read = xbt_getline(&line, &n, fp);
-
- }
-
- xbt_free(origin);
- origin = NULL;
-
- }else{
-
- read = xbt_getline(&line, &n, fp);
+void MC_dwarf_register_non_global_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable) {
+ xbt_assert(frame, "Frame is NULL");
+ int index = MC_dwarf_get_variable_index(frame->variables, variable->name, NULL);
+ if (index != -1)
+ xbt_dynar_insert_at(frame->variables, index, &variable);
+ // TODO, else ?
+}
- }
+void MC_dwarf_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable) {
+ if(variable->global)
+ MC_dwarf_register_global_variable(info, variable);
+ else if(frame==NULL)
+ xbt_die("No frame for this local variable");
+ else
+ MC_dwarf_register_non_global_variable(info, frame, variable);
+}
+static void MC_post_process_array_size(mc_object_info_t info, dw_type_t type) {
+ xbt_assert(type->dw_type_id, "No base type for array <%p>%s", type->id, type->name);
+ dw_type_t subtype = xbt_dict_get_or_null(info->types, type->dw_type_id);
+ xbt_assert(subtype, "Unkown base type <%s> for array <%p>%s", type->dw_type_id, type->id, type->name);
+ if(subtype->type==DW_TAG_array_type && type->byte_size==0) {
+ MC_post_process_array_size(info, subtype);
}
-
- xbt_dynar_free(&split);
- xbt_dict_free(&variables_origin);
- xbt_dict_free(&subprograms_origin);
- xbt_free(line);
- xbt_free(command);
- pclose(fp);
-
+ type->byte_size = type->element_count*subtype->byte_size;
}
+static void MC_post_process_types(mc_object_info_t info) {
+ xbt_dict_cursor_t cursor;
+ char *origin;
+ dw_type_t type;
+ xbt_dict_foreach(info->types, cursor, origin, type){
+ if(type->type==DW_TAG_array_type && type->byte_size==0)
+ MC_post_process_array_size(info, type);
+ }
+}
/******************************* Ignore mechanism *******************************/
/*********************************************************************************/
MC_SET_RAW_MEM;
- if(mc_global_variables_libsimgrid){
+ if(mc_libsimgrid_info){
unsigned int cursor = 0;
dw_variable_t current_var;
int start = 0;
- int end = xbt_dynar_length(mc_global_variables_libsimgrid) - 1;
+ int end = xbt_dynar_length(mc_libsimgrid_info->global_variables) - 1;
while(start <= end){
cursor = (start + end) /2;
- current_var = (dw_variable_t)xbt_dynar_get_as(mc_global_variables_libsimgrid, cursor, dw_variable_t);
+ current_var = (dw_variable_t)xbt_dynar_get_as(mc_libsimgrid_info->global_variables, cursor, dw_variable_t);
if(strcmp(current_var->name, name) == 0){
- xbt_dynar_remove_at(mc_global_variables_libsimgrid, cursor, NULL);
+ xbt_dynar_remove_at(mc_libsimgrid_info->global_variables, cursor, NULL);
start = 0;
- end = xbt_dynar_length(mc_global_variables_libsimgrid) - 1;
+ end = xbt_dynar_length(mc_libsimgrid_info->global_variables) - 1;
}else if(strcmp(current_var->name, name) < 0){
start = cursor + 1;
}else{
MC_SET_RAW_MEM;
- if(mc_local_variables_libsimgrid){
+ if(mc_libsimgrid_info){
unsigned int cursor = 0;
dw_variable_t current_var;
int start, end;
xbt_dict_cursor_t dict_cursor;
char *current_frame_name;
dw_frame_t frame;
- xbt_dict_foreach(mc_local_variables_libsimgrid, dict_cursor, current_frame_name, frame){
+ xbt_dict_foreach(mc_libsimgrid_info->local_variables, dict_cursor, current_frame_name, frame){
start = 0;
end = xbt_dynar_length(frame->variables) - 1;
while(start <= end){
}
}
}
- xbt_dict_foreach(mc_local_variables_binary, dict_cursor, current_frame_name, frame){
+ xbt_dict_foreach(mc_binary_info->local_variables, dict_cursor, current_frame_name, frame){
start = 0;
end = xbt_dynar_length(frame->variables) - 1;
while(start <= end){
}
}
}else{
- xbt_dynar_t variables_list = ((dw_frame_t)xbt_dict_get_or_null(mc_local_variables_libsimgrid, frame_name))->variables;
+ xbt_dynar_t variables_list = ((dw_frame_t)xbt_dict_get_or_null(
+ mc_libsimgrid_info->local_variables, frame_name))->variables;
start = 0;
end = xbt_dynar_length(variables_list) - 1;
while(start <= end){
}
+static void MC_init_debug_info();
+static void MC_init_debug_info() {
+ XBT_INFO("Get debug information ...");
+
+ memory_map_t maps = MC_get_memory_map();
+
+ /* Get local variables for state equality detection */
+ mc_binary_info = MC_find_object_info(maps, xbt_binary_name);
+ mc_libsimgrid_info = MC_find_object_info(maps, libsimgrid_path);
+
+ MC_free_memory_map(maps);
+ XBT_INFO("Get debug information done !");
+}
+
void MC_init(){
int raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
-
+
compare = 0;
/* Initialize the data structures that must be persistent across every
MC_SET_RAW_MEM;
MC_init_memory_map_info();
-
- mc_local_variables_libsimgrid = xbt_dict_new_homogeneous(NULL);
- mc_local_variables_binary = xbt_dict_new_homogeneous(NULL);
- mc_global_variables_libsimgrid = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
- mc_global_variables_binary = xbt_dynar_new(sizeof(dw_variable_t), dw_variable_free_voidp);
- mc_variables_type_libsimgrid = xbt_dict_new_homogeneous(NULL);
- mc_variables_type_binary = xbt_dict_new_homogeneous(NULL);
-
- XBT_INFO("Get debug information ...");
-
- /* Get local variables in binary for state equality detection */
- xbt_dict_t binary_location_list = MC_dwarf_get_location_list(xbt_binary_name);
- MC_dwarf_get_variables(xbt_binary_name, binary_location_list, &mc_local_variables_binary, &mc_global_variables_binary, &mc_variables_type_binary);
-
- /* Get local variables in libsimgrid for state equality detection */
- xbt_dict_t libsimgrid_location_list = MC_dwarf_get_location_list(libsimgrid_path);
- MC_dwarf_get_variables(libsimgrid_path, libsimgrid_location_list, &mc_local_variables_libsimgrid, &mc_global_variables_libsimgrid, &mc_variables_type_libsimgrid);
-
- xbt_dict_free(&libsimgrid_location_list);
- xbt_dict_free(&binary_location_list);
-
- XBT_INFO("Get debug information done !");
+ MC_init_debug_info();
/* Remove variables ignored before getting list of variables */
MC_dump_ignored_local_variables();
MC_dump_ignored_global_variables();
-
- /* Get .plt section (start and end addresses) for data libsimgrid and data program comparison */
- MC_get_libsimgrid_plt_section();
- MC_get_binary_plt_section();
/* Init parmap */
parmap = xbt_parmap_mc_new(xbt_os_get_numcores(), XBT_PARMAP_DEFAULT);
}else{
MC_SET_RAW_MEM;
MC_init_memory_map_info();
- MC_get_libsimgrid_plt_section();
- MC_get_binary_plt_section();
+ MC_init_debug_info();
MC_UNSET_RAW_MEM;
}
void MC_exit(void)
{
xbt_free(mc_time);
+
MC_memory_exit();
//xbt_abort();
}
#include "xbt_modinter.h"
void MC_memory_exit(void)
{
+ MC_free_object_info(&mc_binary_info);
+ MC_free_object_info(&mc_libsimgrid_info);
+
if (raw_heap)
xbt_mheap_destroy(raw_heap);
}
#ifndef WIN32
#include <sys/mman.h>
#endif
+#include <elfutils/libdw.h>
+
#include "mc/mc.h"
#include "mc/datatypes.h"
#include "xbt/fifo.h"
void MC_init_memory_map_info(void);
memory_map_t MC_get_memory_map(void);
void MC_free_memory_map(memory_map_t map);
-void MC_get_libsimgrid_plt_section(void);
-void MC_get_binary_plt_section(void);
-extern void *start_data_libsimgrid;
-extern void *start_data_binary;
-extern void *start_bss_binary;
extern char *libsimgrid_path;
-extern void *start_text_libsimgrid;
-extern void *start_text_binary;
-extern void *start_bss_libsimgrid;
-extern void *start_plt_libsimgrid;
-extern void *end_plt_libsimgrid;
-extern void *start_plt_binary;
-extern void *end_plt_binary;
-extern void *start_got_plt_libsimgrid;
-extern void *end_got_plt_libsimgrid;
-extern void *start_got_plt_binary;
-extern void *end_got_plt_binary;
-
/********************************** Snapshot comparison **********************************/
/********************************** Variables with DWARF **********************************/
-extern xbt_dict_t mc_local_variables_libsimgrid;
-extern xbt_dict_t mc_local_variables_binary;
-extern xbt_dynar_t mc_global_variables_libsimgrid;
-extern xbt_dynar_t mc_global_variables_binary;
-extern xbt_dict_t mc_variables_type_libsimgrid;
-extern xbt_dict_t mc_variables_type_binary;
+typedef struct s_mc_object_info {
+ char* file_name;
+ char* start_text;
+ char* start_data;
+ char* start_bss;
+ xbt_dict_t local_variables; // xbt_dict_t<frame_name, dw_frame_t>
+ xbt_dynar_t global_variables; // xbt_dynar_t<dw_variable_t>
+ xbt_dict_t types; // xbt_dict_t<origin as hexadecimal string, dw_type_t>
+} s_mc_object_info_t, *mc_object_info_t;
+
+mc_object_info_t MC_new_object_info(void);
+mc_object_info_t MC_find_object_info(memory_map_t maps, char* name);
+void MC_free_object_info(mc_object_info_t* p);
+
+void MC_dwarf_get_variables(mc_object_info_t info);
+void MC_dwarf_get_variables_libdw(mc_object_info_t info);
+const char* MC_dwarf_attrname(int attr);
+const char* MC_dwarf_tagname(int tag);
+
+extern mc_object_info_t mc_libsimgrid_info;
+extern mc_object_info_t mc_binary_info;
typedef enum {
e_dw_loclist,
}s_dw_location_entry_t, *dw_location_entry_t;
typedef struct s_dw_variable{
+ Dwarf_Off dwarf_offset; /* Global offset of the field. */
int global;
char *name;
char *type_origin;
union{
- dw_location_t location;
- void *address;
+ dw_location_t location; // For global==0
+ void *address; // For global!=0
}address;
}s_dw_variable_t, *dw_variable_t;
void *low_pc;
void *high_pc;
dw_location_t frame_base;
- xbt_dynar_t variables; /* Cannot use dict, there may be several variables with the same name (in different lexical blocks)*/
- unsigned long int start;
- unsigned long int end;
+ xbt_dynar_t /* <dw_variable_t> */ variables; /* Cannot use dict, there may be several variables with the same name (in different lexical blocks)*/
+ unsigned long int start; /* DWARF offset of the subprogram */
+ unsigned long int end; /* Dwarf offset of the next sibling */
}s_dw_frame_t, *dw_frame_t;
+void dw_type_free(dw_type_t t);
+void dw_variable_free(dw_variable_t v);
+void dw_variable_free_voidp(void *t);
+
+void MC_dwarf_register_global_variable(mc_object_info_t info, dw_variable_t variable);
+void MC_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable);
+void MC_dwarf_register_non_global_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable);
+void MC_dwarf_register_variable(mc_object_info_t info, dw_frame_t frame, dw_variable_t variable);
+
+/********************************** DWARF **********************************/
+
+Dwarf_Off MC_dwarf_resolve_location(unw_cursor_t* c, dw_location_t location, void* frame_pointer_address);
+
/********************************** Miscellaneous **********************************/
typedef struct s_local_variable{
return simcall_file_ls(mount, path);
}
+/*
+ * Move a file to another location. Depending on the values of dest, dest, mount,
+ * and fullname, this move can be local or remote and, within a host, on the same
+ * mounted disk or between mounted disks.
+ *
+ */
+msg_error_t MSG_file_move (msg_file_t fd, msg_host_t dest, char* mount, char* fullname)
+{
+ THROW_UNIMPLEMENTED;
+ return MSG_OK;
+}
+
+/*
+ * Set the file position indicator in the msg_file_t by adding offset bytes
+ * to the position specified by whence (either SEEK_SET, SEEK_CUR, or SEEK_END).
+ */
+msg_error_t MSG_file_seek (msg_file_t fd, sg_storage_size_t offset, int whence)
+{
+ THROW_UNIMPLEMENTED;
+ return MSG_OK;
+}
+
+/*
+ * Rename the file in the contents of its associated storage.
+ */
+msg_error_t MSG_file_rename (msg_file_t fd, char* new_name)
+{
+ THROW_UNIMPLEMENTED;
+ return MSG_OK;
+}
+
/********************************* Storage **************************************/
/** @addtogroup msg_storage_management
*
*/
-
-/* TODO: PV: to comment */
msg_storage_t __MSG_storage_create(smx_storage_t storage)
{
const char *name = SIMIX_storage_get_name(storage);
{
return SIMIX_storage_get_size(storage);
}
+
xbt_dynar_push(result, &root_task);
end_task = SD_task_create_comp_seq("end", NULL, 0);
- _XBT_GNUC_UNUSED int res;
- res = dax_lex();
- xbt_assert(!res, "Parse error in %s: %s", filename,
- dax__parse_err_msg());
+ int res = dax_lex();
+ if (res != 0)
+ xbt_die("Parse error in %s: %s", filename, dax__parse_err_msg());
dax__delete_buffer(input_buffer);
fclose(in_file);
dax_lex_destroy();
xbt_cfg_set_parse(_sg_cfg_set, opt);
XBT_DEBUG("Did apply '%s' as config setting", opt);
+ } else if (!strcmp(argv[i], "--version")) {
+ printf("%s\n", SIMGRID_VERSION_STRING);
+ shall_exit = 1;
} else if (!strcmp(argv[i], "--cfg-help") || !strcmp(argv[i], "--help")) {
printf
("Description of the configuration accepted by this simulator:\n");
#endif
"\n"
"You can also use --help-logs and --help-log-categories to see the details of logging output.\n"
+"\n"
+"You can also use --version to get SimGrid version information.\n"
"\n"
);
shall_exit = 1;
"Context factory to use in SIMIX. Possible values: thread");
const char *dflt_ctx_fact = "thread";
#ifdef CONTEXT_UCONTEXT
- strcat(description, ", ucontext");
dflt_ctx_fact = "ucontext";
+ strcat(strcat(description, ", "), dflt_ctx_fact);
#endif
#ifdef HAVE_RAWCTX
- strcat(description, ", raw");
dflt_ctx_fact = "raw";
+ strcat(strcat(description, ", "), dflt_ctx_fact);
#endif
strcat(description, ".");
xbt_cfg_register(&_sg_cfg_set, "contexts/factory", description,
"Stack size of contexts in Kib",
xbt_cfgelm_int, 1, 1, _sg_cfg_cb_context_stack_size, NULL);
xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/stack_size", 128);
+ /* No, it was not set yet (the above setdefault() changed this to 1). */
+ smx_context_stack_size_was_set = 0;
/* number of parallel threads for user processes */
xbt_cfg_register(&_sg_cfg_set, "contexts/nthreads",
xbt_cfg_setdefault_boolean(_sg_cfg_set, "smpi/use_shared_malloc", "yes");
xbt_cfg_register(&_sg_cfg_set, "smpi/cpu_threshold",
- "Minimal computation time (in seconds) not discarded.",
+ "Minimal computation time (in seconds) not discarded, or -1 for infinity.",
xbt_cfgelm_double, 1, 1, NULL, NULL);
xbt_cfg_setdefault_double(_sg_cfg_set, "smpi/cpu_threshold", 1e-6);
*
* \param nb_threads the number of threads to use
*/
-XBT_INLINE void SIMIX_context_set_nthreads(int nb_threads) {
+void SIMIX_context_set_nthreads(int nb_threads) {
if (nb_threads<=0) {
nb_threads = xbt_os_get_numcores();
XBT_INFO("Auto-setting contexts/nthreads to %d",nb_threads);
int (*match_fun)(void *, void *,smx_action_t),
void *user_data, smx_action_t my_action);
static void SIMIX_rdv_free(void *data);
+static void SIMIX_comm_start(smx_action_t action);
void SIMIX_network_init(void)
{
* \brief Starts the simulation of a communication action.
* \param action the communication action
*/
-XBT_INLINE void SIMIX_comm_start(smx_action_t action)
+static XBT_INLINE void SIMIX_comm_start(smx_action_t action)
{
/* If both the sender and the receiver are already there, start the communication */
if (action->state == SIMIX_READY) {
smx_action_t SIMIX_rdv_get_head(smx_rdv_t rdv);
void SIMIX_rdv_set_receiver(smx_rdv_t rdv, smx_process_t proc);
smx_process_t SIMIX_rdv_get_receiver(smx_rdv_t rdv);
-void SIMIX_comm_start(smx_action_t action);
smx_action_t SIMIX_comm_isend(smx_process_t src_proc, smx_rdv_t rdv,
double task_size, double rate,
void *src_buff, size_t src_buff_size,
rextent = smpi_datatype_get_extent(rtype);
sextent = smpi_datatype_get_extent(stype);
int tag = COLL_TAG_ALLGATHER;
- MPI_Request request;
- MPI_Request rrequest_array[128];
- MPI_Status status;
int i, send_offset, recv_offset;
int intra_rank, inter_rank;
intra_rank = rank % NUM_CORE;
recv_offset = rank * rextent * rcount;
smpi_mpi_sendrecv(sbuf, scount, stype, rank, tag,
((char *) rbuf + recv_offset), rcount, rtype, rank, tag, comm,
- &status);
+ MPI_STATUS_IGNORE);
//gather to root of each SMP
smpi_mpi_sendrecv(sbuf, scount, stype, dst, tag,
((char *) rbuf + recv_offset), rcount, rtype, src, tag, comm,
- &status);
+ MPI_STATUS_IGNORE);
}
// root of each SMP
if (intra_rank == 0) {
+ MPI_Request *rrequest_array = xbt_new(MPI_Request, inter_comm_size - 1);
+ MPI_Request *srequest_array = xbt_new(MPI_Request, inter_comm_size - 1);
+
src = ((inter_rank - 1 + inter_comm_size) % inter_comm_size) * NUM_CORE;
dst = ((inter_rank + 1) % inter_comm_size) * NUM_CORE;
recv_offset =
((inter_rank - i - 1 +
inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
- rrequest_array[i] = smpi_mpi_irecv((char *)rbuf+recv_offset, rcount * NUM_CORE, rtype, src, tag+i, comm);
+ rrequest_array[i] = smpi_mpi_irecv((char *)rbuf + recv_offset, rcount * NUM_CORE,
+ rtype, src, tag + i, comm);
}
// send first message
send_offset =
((inter_rank +
inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
- smpi_mpi_isend((char *) rbuf + send_offset, scount * NUM_CORE, stype,
- dst, tag, comm);
+ srequest_array[0] = smpi_mpi_isend((char *)rbuf + send_offset, scount * NUM_CORE,
+ stype, dst, tag, comm);
// loop : recv-inter , send-inter, send-intra (linear-bcast)
for (i = 0; i < inter_comm_size - 2; i++) {
recv_offset =
((inter_rank - i - 1 +
inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
- smpi_mpi_wait(&rrequest_array[i], &status);
- smpi_mpi_isend((char *) rbuf + recv_offset, scount * NUM_CORE, stype,
- dst, tag + i + 1, comm);
+ smpi_mpi_wait(&rrequest_array[i], MPI_STATUS_IGNORE);
+ srequest_array[i + 1] = smpi_mpi_isend((char *)rbuf + recv_offset, scount * NUM_CORE,
+ stype, dst, tag + i + 1, comm);
if (num_core_in_current_smp > 1) {
- request = smpi_mpi_isend((char *) rbuf + recv_offset, scount * NUM_CORE, stype,
- (rank + 1), tag + i + 1, comm);
+ smpi_mpi_send((char *)rbuf + recv_offset, scount * NUM_CORE,
+ stype, (rank + 1), tag + i + 1, comm);
}
}
inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
//recv_offset = ((inter_rank + 1) % inter_comm_size) * NUM_CORE * sextent * scount;
//i=inter_comm_size-2;
- smpi_mpi_wait(&rrequest_array[i], &status);
+ smpi_mpi_wait(&rrequest_array[i], MPI_STATUS_IGNORE);
if (num_core_in_current_smp > 1) {
- request = smpi_mpi_isend((char *) rbuf + recv_offset, scount * NUM_CORE, stype,
- (rank + 1), tag + i + 1, comm);
+ smpi_mpi_send((char *)rbuf + recv_offset, scount * NUM_CORE,
+ stype, (rank + 1), tag + i + 1, comm);
}
+
+ smpi_mpi_waitall(inter_comm_size - 1, srequest_array, MPI_STATUSES_IGNORE);
+ xbt_free(rrequest_array);
+ xbt_free(srequest_array);
}
// last rank of each SMP
else if (intra_rank == (num_core_in_current_smp - 1)) {
recv_offset =
((inter_rank - i - 1 +
inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
- request = smpi_mpi_irecv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
- rank - 1, tag + i + 1, comm);
- smpi_mpi_wait(&request, &status);
+ smpi_mpi_recv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
+ rank - 1, tag + i + 1, comm, MPI_STATUS_IGNORE);
}
}
// intermediate rank of each SMP
recv_offset =
((inter_rank - i - 1 +
inter_comm_size) % inter_comm_size) * NUM_CORE * sextent * scount;
- request = smpi_mpi_irecv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
- rank - 1, tag + i + 1, comm);
- smpi_mpi_wait(&request, &status);
- request = smpi_mpi_isend((char *) rbuf + recv_offset, (scount * NUM_CORE), stype,
- (rank + 1), tag + i + 1, comm);
+ smpi_mpi_recv((char *) rbuf + recv_offset, (rcount * NUM_CORE), rtype,
+ rank - 1, tag + i + 1, comm, MPI_STATUS_IGNORE);
+ smpi_mpi_send((char *) rbuf + recv_offset, (scount * NUM_CORE), stype,
+ (rank + 1), tag + i + 1, comm);
}
}
/* Short or medium size message and power-of-two no. of processes. Use
- * recursive doubling algorithm */
+ * recursive doubling algorithm */
#include "colls_private.h"
-int smpi_coll_tuned_allgatherv_mpich_rdb (
- void *sendbuf,
- int sendcount,
- MPI_Datatype sendtype,
- void *recvbuf,
- int *recvcounts,
- int *displs,
- MPI_Datatype recvtype,
- MPI_Comm comm)
+int smpi_coll_tuned_allgatherv_mpich_rdb (
+ void *sendbuf,
+ int sendcount,
+ MPI_Datatype sendtype,
+ void *recvbuf,
+ int *recvcounts,
+ int *displs,
+ MPI_Datatype recvtype,
+ MPI_Comm comm)
{
- int comm_size, rank, j, i;
- MPI_Status status;
- MPI_Aint recvtype_extent, recvtype_true_extent, recvtype_true_lb;
- int curr_cnt, dst, total_count;
- void *tmp_buf;
- int mask, dst_tree_root, my_tree_root, is_homogeneous, position,
- send_offset, recv_offset, last_recv_cnt=0, nprocs_completed, k,
- offset, tmp_mask, tree_root;
-
- comm_size = smpi_comm_size(comm);
- rank = smpi_comm_rank(comm);
-
- total_count = 0;
- for (i=0; i<comm_size; i++)
- total_count += recvcounts[i];
-
- if (total_count == 0) return MPI_ERR_COUNT;
-
- recvtype_extent=smpi_datatype_get_extent( recvtype);
-
- is_homogeneous = 1;
-
- if (is_homogeneous) {
- /* need to receive contiguously into tmp_buf because
- displs could make the recvbuf noncontiguous */
-
- smpi_datatype_extent(recvtype, &recvtype_true_lb, &recvtype_true_extent);
-
- tmp_buf= (void*)xbt_malloc(total_count*(max(recvtype_true_extent,recvtype_extent)));
-
- /* adjust for potential negative lower bound in datatype */
- tmp_buf = (void *)((char*)tmp_buf - recvtype_true_lb);
-
- /* copy local data into right location in tmp_buf */
- position = 0;
- for (i=0; i<rank; i++) position += recvcounts[i];
- if (sendbuf != MPI_IN_PLACE)
- {
- smpi_datatype_copy(sendbuf, sendcount, sendtype,
- ((char *)tmp_buf + position*
- recvtype_extent),
- recvcounts[rank], recvtype);
- }
- else
- {
- /* if in_place specified, local data is found in recvbuf */
- smpi_datatype_copy(((char *)recvbuf +
- displs[rank]*recvtype_extent),
- recvcounts[rank], recvtype,
- ((char *)tmp_buf + position*
- recvtype_extent),
- recvcounts[rank], recvtype);
+ int comm_size, rank, j, i;
+ MPI_Status status;
+ MPI_Aint recvtype_extent, recvtype_true_extent, recvtype_true_lb;
+ int curr_cnt, dst, total_count;
+ void *tmp_buf;
+ int mask, dst_tree_root, my_tree_root, position,
+ send_offset, recv_offset, last_recv_cnt=0, nprocs_completed, k,
+ offset, tmp_mask, tree_root;
+
+ comm_size = smpi_comm_size(comm);
+ rank = smpi_comm_rank(comm);
+
+ total_count = 0;
+ for (i=0; i<comm_size; i++)
+ total_count += recvcounts[i];
+
+ if (total_count == 0) return MPI_ERR_COUNT;
+
+ recvtype_extent=smpi_datatype_get_extent( recvtype);
+
+ /* need to receive contiguously into tmp_buf because
+ displs could make the recvbuf noncontiguous */
+
+ smpi_datatype_extent(recvtype, &recvtype_true_lb, &recvtype_true_extent);
+
+ tmp_buf= (void*)xbt_malloc(total_count*(max(recvtype_true_extent,recvtype_extent)));
+
+ /* adjust for potential negative lower bound in datatype */
+ tmp_buf = (void *)((char*)tmp_buf - recvtype_true_lb);
+
+ /* copy local data into right location in tmp_buf */
+ position = 0;
+ for (i=0; i<rank; i++) position += recvcounts[i];
+ if (sendbuf != MPI_IN_PLACE)
+ {
+ smpi_datatype_copy(sendbuf, sendcount, sendtype,
+ ((char *)tmp_buf + position*
+ recvtype_extent),
+ recvcounts[rank], recvtype);
+ }
+ else
+ {
+ /* if in_place specified, local data is found in recvbuf */
+ smpi_datatype_copy(((char *)recvbuf +
+ displs[rank]*recvtype_extent),
+ recvcounts[rank], recvtype,
+ ((char *)tmp_buf + position*
+ recvtype_extent),
+ recvcounts[rank], recvtype);
+ }
+ curr_cnt = recvcounts[rank];
+
+ mask = 0x1;
+ i = 0;
+ while (mask < comm_size) {
+ dst = rank ^ mask;
+
+ /* find offset into send and recv buffers. zero out
+ the least significant "i" bits of rank and dst to
+ find root of src and dst subtrees. Use ranks of
+ roots as index to send from and recv into buffer */
+
+ dst_tree_root = dst >> i;
+ dst_tree_root <<= i;
+
+ my_tree_root = rank >> i;
+ my_tree_root <<= i;
+
+ if (dst < comm_size) {
+ send_offset = 0;
+ for (j=0; j<my_tree_root; j++)
+ send_offset += recvcounts[j];
+
+ recv_offset = 0;
+ for (j=0; j<dst_tree_root; j++)
+ recv_offset += recvcounts[j];
+
+ smpi_mpi_sendrecv(((char *)tmp_buf + send_offset * recvtype_extent),
+ curr_cnt, recvtype, dst,
+ COLL_TAG_ALLGATHERV,
+ ((char *)tmp_buf + recv_offset * recvtype_extent),
+ total_count - recv_offset, recvtype, dst,
+ COLL_TAG_ALLGATHERV,
+ comm, &status);
+ /* for convenience, recv is posted for a bigger amount
+ than will be sent */
+ last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
+ curr_cnt += last_recv_cnt;
}
- curr_cnt = recvcounts[rank];
-
- mask = 0x1;
- i = 0;
- while (mask < comm_size) {
- dst = rank ^ mask;
-
- /* find offset into send and recv buffers. zero out
- the least significant "i" bits of rank and dst to
- find root of src and dst subtrees. Use ranks of
- roots as index to send from and recv into buffer */
-
- dst_tree_root = dst >> i;
- dst_tree_root <<= i;
-
- my_tree_root = rank >> i;
- my_tree_root <<= i;
-
- if (dst < comm_size) {
- send_offset = 0;
- for (j=0; j<my_tree_root; j++)
- send_offset += recvcounts[j];
-
- recv_offset = 0;
- for (j=0; j<dst_tree_root; j++)
- recv_offset += recvcounts[j];
-
- smpi_mpi_sendrecv(((char *)tmp_buf + send_offset * recvtype_extent),
- curr_cnt, recvtype, dst,
- COLL_TAG_ALLGATHERV,
- ((char *)tmp_buf + recv_offset * recvtype_extent),
- total_count - recv_offset, recvtype, dst,
- COLL_TAG_ALLGATHERV,
- comm, &status);
- /* for convenience, recv is posted for a bigger amount
- than will be sent */
- last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
- curr_cnt += last_recv_cnt;
- }
-
- /* if some processes in this process's subtree in this step
- did not have any destination process to communicate with
- because of non-power-of-two, we need to send them the
- data that they would normally have received from those
- processes. That is, the haves in this subtree must send to
- the havenots. We use a logarithmic
- recursive-halfing algorithm for this. */
-
- /* This part of the code will not currently be
- executed because we are not using recursive
- doubling for non power of two. Mark it as experimental
- so that it doesn't show up as red in the coverage
- tests. */
-
- /* --BEGIN EXPERIMENTAL-- */
- if (dst_tree_root + mask > comm_size) {
- nprocs_completed = comm_size - my_tree_root - mask;
- /* nprocs_completed is the number of processes in this
- subtree that have all the data. Send data to others
- in a tree fashion. First find root of current tree
- that is being divided into two. k is the number of
- least-significant bits in this process's rank that
- must be zeroed out to find the rank of the root */
- j = mask;
- k = 0;
- while (j) {
- j >>= 1;
- k++;
- }
- k--;
-
- tmp_mask = mask >> 1;
-
- while (tmp_mask) {
- dst = rank ^ tmp_mask;
-
- tree_root = rank >> k;
- tree_root <<= k;
-
- /* send only if this proc has data and destination
- doesn't have data. at any step, multiple processes
- can send if they have the data */
- if ((dst > rank) &&
- (rank < tree_root + nprocs_completed)
- && (dst >= tree_root + nprocs_completed)) {
-
- offset = 0;
- for (j=0; j<(my_tree_root+mask); j++)
- offset += recvcounts[j];
- offset *= recvtype_extent;
-
- smpi_mpi_send(((char *)tmp_buf + offset),
- last_recv_cnt,
- recvtype, dst,
- COLL_TAG_ALLGATHERV, comm);
- /* last_recv_cnt was set in the previous
- receive. that's the amount of data to be
- sent now. */
- }
- /* recv only if this proc. doesn't have data and sender
- has data */
- else if ((dst < rank) &&
- (dst < tree_root + nprocs_completed) &&
- (rank >= tree_root + nprocs_completed)) {
-
- offset = 0;
- for (j=0; j<(my_tree_root+mask); j++)
- offset += recvcounts[j];
-
- smpi_mpi_recv(((char *)tmp_buf + offset * recvtype_extent),
- total_count - offset, recvtype,
- dst, COLL_TAG_ALLGATHERV,
- comm, &status);
- /* for convenience, recv is posted for a
- bigger amount than will be sent */
- last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
- curr_cnt += last_recv_cnt;
- }
- tmp_mask >>= 1;
- k--;
- }
- }
- /* --END EXPERIMENTAL-- */
-
- mask <<= 1;
- i++;
- }
-
- /* copy data from tmp_buf to recvbuf */
- position = 0;
- for (j=0; j<comm_size; j++) {
- if ((sendbuf != MPI_IN_PLACE) || (j != rank)) {
- /* not necessary to copy if in_place and
- j==rank. otherwise copy. */
- smpi_datatype_copy(((char *)tmp_buf + position*recvtype_extent),
- recvcounts[j], recvtype,
- ((char *)recvbuf + displs[j]*recvtype_extent),
- recvcounts[j], recvtype);
- }
- position += recvcounts[j];
- }
+
+ /* if some processes in this process's subtree in this step
+ did not have any destination process to communicate with
+ because of non-power-of-two, we need to send them the
+ data that they would normally have received from those
+ processes. That is, the haves in this subtree must send to
+ the havenots. We use a logarithmic
+ recursive-halfing algorithm for this. */
+
+ /* This part of the code will not currently be
+ executed because we are not using recursive
+ doubling for non power of two. Mark it as experimental
+ so that it doesn't show up as red in the coverage
+ tests. */
+
+ /* --BEGIN EXPERIMENTAL-- */
+ if (dst_tree_root + mask > comm_size) {
+ nprocs_completed = comm_size - my_tree_root - mask;
+ /* nprocs_completed is the number of processes in this
+ subtree that have all the data. Send data to others
+ in a tree fashion. First find root of current tree
+ that is being divided into two. k is the number of
+ least-significant bits in this process's rank that
+ must be zeroed out to find the rank of the root */
+ j = mask;
+ k = 0;
+ while (j) {
+ j >>= 1;
+ k++;
+ }
+ k--;
+
+ tmp_mask = mask >> 1;
+
+ while (tmp_mask) {
+ dst = rank ^ tmp_mask;
+
+ tree_root = rank >> k;
+ tree_root <<= k;
+
+ /* send only if this proc has data and destination
+ doesn't have data. at any step, multiple processes
+ can send if they have the data */
+ if ((dst > rank) &&
+ (rank < tree_root + nprocs_completed)
+ && (dst >= tree_root + nprocs_completed)) {
+
+ offset = 0;
+ for (j=0; j<(my_tree_root+mask); j++)
+ offset += recvcounts[j];
+ offset *= recvtype_extent;
+
+ smpi_mpi_send(((char *)tmp_buf + offset),
+ last_recv_cnt,
+ recvtype, dst,
+ COLL_TAG_ALLGATHERV, comm);
+ /* last_recv_cnt was set in the previous
+ receive. that's the amount of data to be
+ sent now. */
}
+ /* recv only if this proc. doesn't have data and sender
+ has data */
+ else if ((dst < rank) &&
+ (dst < tree_root + nprocs_completed) &&
+ (rank >= tree_root + nprocs_completed)) {
+
+ offset = 0;
+ for (j=0; j<(my_tree_root+mask); j++)
+ offset += recvcounts[j];
+
+ smpi_mpi_recv(((char *)tmp_buf + offset * recvtype_extent),
+ total_count - offset, recvtype,
+ dst, COLL_TAG_ALLGATHERV,
+ comm, &status);
+ /* for convenience, recv is posted for a
+ bigger amount than will be sent */
+ last_recv_cnt=smpi_mpi_get_count(&status, recvtype);
+ curr_cnt += last_recv_cnt;
+ }
+ tmp_mask >>= 1;
+ k--;
+ }
+ }
+ /* --END EXPERIMENTAL-- */
+
+ mask <<= 1;
+ i++;
+ }
+
+ /* copy data from tmp_buf to recvbuf */
+ position = 0;
+ for (j=0; j<comm_size; j++) {
+ if ((sendbuf != MPI_IN_PLACE) || (j != rank)) {
+ /* not necessary to copy if in_place and
+ j==rank. otherwise copy. */
+ smpi_datatype_copy(((char *)tmp_buf + position*recvtype_extent),
+ recvcounts[j], recvtype,
+ ((char *)recvbuf + displs[j]*recvtype_extent),
+ recvcounts[j], recvtype);
+ }
+ position += recvcounts[j];
+ }
+
free(tmp_buf);
return MPI_SUCCESS;
}
}
- else if (count >= comm_size) {
+ else /* (count >= comm_size) */ {
tmp_buf = (void *) xbt_malloc(count * extent);
//if ((rank != root))
total_send += mycount;
}
- if (NULL != tempbuf)
- free(tempbuf);
+
} else {
/* recv from parent on leaf nodes */
smpi_mpi_recv(ptmp, rcount, rdtype, bmtree->tree_prev,
COLL_TAG_SCATTER, comm, &status);
}
+
+ if (NULL != tempbuf)
+ free(tempbuf);
//!FIXME : store the tree, as done in ompi, instead of calculating it each time ?
xbt_free(bmtree);
#include "colls_private.h"
-#include <limits.h>
#include "mc/mc_private.h"
+#include <float.h>
//attempt to do a quick autotuning version of the collective,
if (!type){\
type=PJ_type_event_new(#cat, PJ_type_get_root());\
}\
- char* cont_name=malloc(25*sizeof(char*));\
+ char cont_name[25];\
sprintf(cont_name, "rank-%d", smpi_process_index());\
val_t value = PJ_value_get_or_new(mpi_coll_##cat##_description[i].name,"1.0 1.0 1.0", type);\
new_pajeNewEvent (SIMIX_get_clock(), PJ_container_get(cont_name), type, value);\
#define AUTOMATIC_COLL_BENCH(cat, ret, args, args2)\
ret smpi_coll_tuned_ ## cat ## _ ## automatic(COLL_UNPAREN args)\
{\
- double time1, time2, time_min=INT_MAX;\
+ double time1, time2, time_min=DBL_MAX;\
int min_coll=-1, global_coll=-1;\
int i;\
- double buf_in, buf_out, max_min=INT_MAX;\
+ double buf_in, buf_out, max_min=DBL_MAX;\
for (i = 0; mpi_coll_##cat##_description[i].name; i++){\
if(!strcmp(mpi_coll_##cat##_description[i].name, "automatic"))continue;\
if(!strcmp(mpi_coll_##cat##_description[i].name, "default"))continue;\
#include "private.h"
#include <ctype.h>
#include <wchar.h>
+#include <stdarg.h>
+#include <simgrid/sg_config.h>
#ifdef HAVE_TRACING
"scatterv", "0.52 0 0.52",
"scatter", "1 0.74 0.54",
"computing", "0 1 1",
+ "init", "0 1 0",
+ "finalize", "0 1 0",
NULL, NULL,
};
static xbt_dict_t process_category;
+static void cleanup_extra_data (instr_extra_data extra){
+ if(extra!=NULL){
+ if(extra->sendcounts!=NULL)
+ xbt_free(extra->sendcounts);
+ if(extra->recvcounts!=NULL)
+ xbt_free(extra->recvcounts);
+ xbt_free(extra);
+ }
+}
+
void TRACE_internal_smpi_set_category (const char *category)
{
if (!TRACE_smpi_is_enabled()) return;
PJ_container_free (container);
}
-void TRACE_smpi_collective_in(int rank, int root, const char *operation, int size)
+void TRACE_smpi_collective_in(int rank, int root, const char *operation, instr_extra_data extra)
{
- if (!TRACE_smpi_is_enabled()) return;
+ if (!TRACE_smpi_is_enabled()) {
+ cleanup_extra_data(extra);
+ return;
+ }
char str[INSTR_DEFAULT_STR_SIZE];
smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
type_t type = PJ_type_get ("MPI_STATE", container->type);
const char *color = instr_find_color (operation);
val_t value = PJ_value_get_or_new (operation, color, type);
- new_pajePushStateWithSize (SIMIX_get_clock(), container, type, value, size);
+ new_pajePushStateWithExtra (SIMIX_get_clock(), container, type, value, (void*)extra);
}
+
void TRACE_smpi_collective_out(int rank, int root, const char *operation)
{
if (!TRACE_smpi_is_enabled()) return;
new_pajePushState (SIMIX_get_clock(), container, type, value);
}
-void TRACE_smpi_computing_in(int rank)
+void TRACE_smpi_computing_in(int rank, instr_extra_data extra)
{
//do not forget to set the color first, otherwise this will explode
- if (!TRACE_smpi_is_enabled()|| !TRACE_smpi_is_computing()) return;
+ if (!TRACE_smpi_is_enabled()|| !TRACE_smpi_is_computing()) {
+ cleanup_extra_data(extra);
+ return;
+ }
char str[INSTR_DEFAULT_STR_SIZE];
smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
container_t container = PJ_container_get (str);
type_t type = PJ_type_get ("MPI_STATE", container->type);
val_t value = PJ_value_get_or_new ("computing", NULL, type);
- new_pajePushState (SIMIX_get_clock(), container, type, value);
+ new_pajePushStateWithExtra (SIMIX_get_clock(), container, type, value, (void*)extra);
}
void TRACE_smpi_computing_out(int rank)
new_pajePopState (SIMIX_get_clock(), container, type);
}
-void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, int size)
+void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, instr_extra_data extra)
{
- if (!TRACE_smpi_is_enabled()) return;
-
+ if (!TRACE_smpi_is_enabled()) {
+ cleanup_extra_data(extra);
+ return;
+ }
char str[INSTR_DEFAULT_STR_SIZE];
smpi_container(rank, str, INSTR_DEFAULT_STR_SIZE);
type_t type = PJ_type_get ("MPI_STATE", container->type);
const char *color = instr_find_color (operation);
val_t value = PJ_value_get_or_new (operation, color, type);
- new_pajePushStateWithSize (SIMIX_get_clock(), container, type, value, size);
+ new_pajePushStateWithExtra (SIMIX_get_clock(), container, type, value, (void*)extra);
}
void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation)
#ifndef SMPI_PRIVATE_H
#define SMPI_PRIVATE_H
+#include "internal_config.h"
#include "xbt.h"
#include "xbt/xbt_os_time.h"
#include "simgrid/simix.h"
xbt_os_timer_t smpi_process_timer(void);
void smpi_process_simulated_start(void);
double smpi_process_simulated_elapsed(void);
+void smpi_process_set_sampling(int s);
+int smpi_process_get_sampling(void);
void print_request(const char *message, MPI_Request request);
int dst, int tag, MPI_Comm comm);
MPI_Request smpi_mpi_isend(void *buf, int count, MPI_Datatype datatype,
int dst, int tag, MPI_Comm comm);
+MPI_Request smpi_issend_init(void *buf, int count, MPI_Datatype datatype,
+ int dst, int tag, MPI_Comm comm);
MPI_Request smpi_mpi_issend(void *buf, int count, MPI_Datatype datatype,
int dst, int tag, MPI_Comm comm);
MPI_Request smpi_irecv_init(void *buf, int count, MPI_Datatype datatype,
MPI_Comm comm);
// utilities
+extern double smpi_cpu_threshold;
+extern double smpi_running_power;
void smpi_bench_destroy(void);
void smpi_bench_begin(void);
void smpi_bench_end(void);
-void smpi_execute_flops(double flops);
// f77 wrappers
void mpi_init_(int*);
/* from smpi_instr.c */
void TRACE_internal_smpi_set_category (const char *category);
const char *TRACE_internal_smpi_get_category (void);
-void TRACE_smpi_collective_in(int rank, int root, const char *operation, int size);
+void TRACE_smpi_collective_in(int rank, int root, const char *operation, instr_extra_data extra);
void TRACE_smpi_collective_out(int rank, int root, const char *operation);
void TRACE_smpi_computing_init(int rank);
void TRACE_smpi_computing_out(int rank);
-void TRACE_smpi_computing_in(int rank);
+void TRACE_smpi_computing_in(int rank, instr_extra_data extra);
+void TRACE_smpi_alloc(void);
+void TRACE_smpi_release(void);
+void TRACE_smpi_ptp_in(int rank, int src, int dst, const char *operation, instr_extra_data extra);
+void TRACE_smpi_ptp_out(int rank, int src, int dst, const char *operation);
+void TRACE_smpi_send(int rank, int src, int dst, int size);
+void TRACE_smpi_recv(int rank, int src, int dst);
+void TRACE_smpi_init(int rank);
+void TRACE_smpi_finalize(int rank);
+
+
+const char* encode_datatype(MPI_Datatype datatype);
+
#endif
char *value = NULL;
unsigned int iter = 0;
s_smpi_factor_t fact;
+ fact.nb_values=0;
int i=0;
xbt_dynar_t smpi_factor, radical_elements, radical_elements2 = NULL;
smpi_factor = xbt_dynar_new(sizeof(s_smpi_factor_t), NULL);
radical_elements = xbt_str_split(smpi_coef_string, ";");
xbt_dynar_foreach(radical_elements, iter, value) {
- fact.nb_values=0;
radical_elements2 = xbt_str_split(value, ":");
if (xbt_dynar_length(radical_elements2) <2 || xbt_dynar_length(radical_elements2) > 5)
xbt_die("Malformed radical for smpi factor!");
void smpi_mpi_startall(int count, MPI_Request * requests)
{
int i;
+ if(requests==NULL) return;
for(i = 0; i < count; i++) {
smpi_mpi_start(requests[i]);
xbt_dict_t calls = NULL; /* Allocated on first use */
__thread int smpi_current_rank = 0; /* Updated after each MPI call */
+double smpi_cpu_threshold;
+double smpi_running_power;
+
typedef struct {
int fd;
int count;
xbt_dict_free(&calls);
}
+XBT_PUBLIC(void) smpi_execute_flops_(double *flops);
+void smpi_execute_flops_(double *flops)
+{
+ smpi_execute_flops(*flops);
+}
+
+XBT_PUBLIC(void) smpi_execute_(double *duration);
+void smpi_execute_(double *duration)
+{
+ smpi_execute(*duration);
+}
+
void smpi_execute_flops(double flops) {
smx_action_t action;
smx_host_t host;
host = SIMIX_host_self();
-
- XBT_DEBUG("Handle real computation time: %f flops", flops);
+ XBT_DEBUG("Handle real computation time: %g flops", flops);
action = simcall_host_execute("computation", host, flops, 1);
#ifdef HAVE_TRACING
simcall_set_category (action, TRACE_internal_smpi_get_category());
simcall_host_execution_wait(action);
}
-static void smpi_execute(double duration)
+void smpi_execute(double duration)
{
- /* FIXME: a global variable would be less expensive to consult than a call to xbt_cfg_get_double() right on the critical path */
- if (duration >= sg_cfg_get_double("smpi/cpu_threshold")) {
- XBT_DEBUG("Sleep for %f to handle real computation time", duration);
- smpi_execute_flops(duration *
- sg_cfg_get_double("smpi/running_power"));
+ if (duration >= smpi_cpu_threshold) {
+ XBT_DEBUG("Sleep for %g to handle real computation time", duration);
+ double flops = duration * smpi_running_power;
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type=TRACING_COMPUTING;
+ extra->comp_size=flops;
+ TRACE_smpi_computing_in(rank, extra);
+#endif
+ smpi_execute_flops(flops);
+
+#ifdef HAVE_TRACING
+ TRACE_smpi_computing_out(rank);
+#endif
+
} else {
- XBT_DEBUG("Real computation took %f while option smpi/cpu_threshold is set to %f => ignore it",
- duration, sg_cfg_get_double("smpi/cpu_threshold"));
+ XBT_DEBUG("Real computation took %g while option smpi/cpu_threshold is set to %g => ignore it",
+ duration, smpi_cpu_threshold);
}
}
void smpi_bench_end(void)
{
xbt_os_timer_t timer = smpi_process_timer();
-
xbt_os_threadtimer_stop(timer);
+ if (smpi_process_get_sampling()) {
+ XBT_CRITICAL("Cannot do recursive benchmarks.");
+ XBT_CRITICAL("Are you trying to make a call to MPI within a SMPI_SAMPLE_ block?");
+ xbt_backtrace_display_current();
+ xbt_die("Aborting.");
+ }
smpi_execute(xbt_os_timer_elapsed(timer));
}
unsigned int smpi_sleep(unsigned int secs)
{
+ smx_action_t action;
+
smpi_bench_end();
- smpi_execute_flops((double) secs*simcall_host_get_speed(SIMIX_host_self()));
+
+ double flops = (double) secs*simcall_host_get_speed(SIMIX_host_self());
+ XBT_DEBUG("Sleep for: %f flops", flops);
+ action = simcall_host_execute("computation", SIMIX_host_self(), flops, 1);
+ #ifdef HAVE_TRACING
+ simcall_set_category (action, TRACE_internal_smpi_get_category());
+ #endif
+ simcall_host_execution_wait(action);
+
smpi_bench_begin();
return secs;
}
/* ****************************** Functions related to the SMPI_SAMPLE_ macros ************************************/
typedef struct {
- int iters; /* amount of requested iterations */
- int count; /* amount of iterations done so far */
double threshold; /* maximal stderr requested (if positive) */
double relstderr; /* observed stderr so far */
double mean; /* mean of benched times, to be used if the block is disabled */
double sum; /* sum of benched times (to compute the mean and stderr) */
double sum_pow2; /* sum of the square of the benched times (to compute the stderr) */
+ int iters; /* amount of requested iterations */
+ int count; /* amount of iterations done so far */
int benching; /* 1: we are benchmarking; 0: we have enough data, no bench anymore */
} local_data_t;
local_data_t *data;
smpi_bench_end(); /* Take time from previous, unrelated computation into account */
+ smpi_process_set_sampling(1);
+
if (!samples)
samples = xbt_dict_new_homogeneous(free);
{
char *loc = sample_location(global, file, line);
local_data_t *data;
+ int res;
xbt_assert(samples, "Y U NO use SMPI_SAMPLE_* macros? Stop messing directly with smpi_sample_* functions!");
data = xbt_dict_get(samples, loc);
// we need to run a new bench
XBT_DEBUG("benchmarking: count:%d iter:%d stderr:%f thres:%f; mean:%f",
data->count, data->iters, data->relstderr, data->threshold, data->mean);
- smpi_bench_begin();
- return 1;
+ res = 1;
} else {
// Enough data, no more bench (either we got enough data from previous visits to this benched nest, or we just ran one bench and need to bail out now that our job is done).
// Just sleep instead
XBT_DEBUG("No benchmark (either no need, or just ran one): count >= iter (%d >= %d) or stderr<thres (%f<=%f). apply the %fs delay instead",
data->count, data->iters, data->relstderr, data->threshold, data->mean);
smpi_execute(data->mean);
-
- smpi_bench_begin(); // prepare to capture future, unrelated computations
- return 0;
+ smpi_process_set_sampling(0);
+ res = 0; // prepare to capture future, unrelated computations
}
+ smpi_bench_begin();
+ return res;
}
case EEXIST:
xbt_die("Please cleanup /dev/shm/%s", loc);
default:
- xbt_die("An unhandled error occured while opening %s: %s", loc, strerror(errno));
+ xbt_die("An unhandled error occured while opening %s. shm_open: %s", loc, strerror(errno));
}
}
data = xbt_new(shared_data_t, 1);
data->loc = loc;
mem = shm_map(fd, size, data);
if (shm_unlink(loc) < 0) {
- XBT_WARN("Could not early unlink %s: %s", loc, strerror(errno));
+ XBT_WARN("Could not early unlink %s. shm_unlink: %s", loc, strerror(errno));
}
xbt_dict_set(allocs, loc, data, NULL);
XBT_DEBUG("Mapping %s at %p through %d", loc, mem, fd);
}
#endif
-int smpi_shared_known_call(const char* func, const char* input) {
- char* loc = bprintf("%s:%s", func, input);
- xbt_ex_t ex;
- int known;
+int smpi_shared_known_call(const char* func, const char* input)
+{
+ char* loc = bprintf("%s:%s", func, input);
+ xbt_ex_t ex;
+ int known = 0;
- if(!calls) {
- calls = xbt_dict_new_homogeneous(NULL);
- }
- TRY {
- xbt_dict_get(calls, loc); /* Succeed or throw */
- known = 1;
- }
- CATCH(ex) {
- if(ex.category == not_found_error) {
- known = 0;
- xbt_ex_free(ex);
- } else {
- RETHROW;
- }
- }
- free(loc);
- return known;
+ if (!calls) {
+ calls = xbt_dict_new_homogeneous(NULL);
+ }
+ TRY {
+ xbt_dict_get(calls, loc); /* Succeed or throw */
+ known = 1;
+ }
+ TRY_CLEANUP {
+ xbt_free(loc);
+ }
+ CATCH(ex) {
+ if (ex.category != not_found_error)
+ RETHROW;
+ xbt_ex_free(ex);
+ }
+ return known;
}
void* smpi_shared_get_call(const char* func, const char* input) {
return i;
}
}
- name_list = strdup(table[0].name);
+ if (!table[0].name)
+ xbt_die("No collective is valid! This is a bug.");
+ name_list = xbt_strdup(table[0].name);
for (i = 1; table[i].name; i++) {
name_list =
xbt_realloc(name_list,
strcat(name_list, ", ");
strcat(name_list, table[i].name);
}
- xbt_die("Model '%s' is invalid! Valid models are: %s.", name, name_list);
+ xbt_die("Collective '%s' is invalid! Valid collectives are: %s.", name, name_list);
return -1;
}
--- /dev/null
+/* Copyright (c) 2013. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
+#include "xbt/log.h"
+#include "simgrid/simix.h"
+#include "smpi/smpi.h"
+
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_dvfs, smpi,
+ "Logging specific to SMPI (experimental DVFS support)");
+
+/**
+ * \brief Return the speed of the processor (in flop/s) at a given pstate
+ *
+ * \param pstate_index pstate to test
+ * \return Returns the processor speed associated with pstate_index
+ */
+double smpi_get_host_power_peak_at(int pstate_index)
+{
+ return simcall_host_get_power_peak_at(SIMIX_host_self(), pstate_index);
+}
+
+/**
+ * \brief Return the current speed of the processor (in flop/s)
+ *
+ * \return Returns the current processor speed
+ */
+double smpi_get_host_current_power_peak(void)
+{
+ return simcall_host_get_current_power_peak(SIMIX_host_self());
+}
+
+/**
+ * \brief Return the number of pstates defined for host
+ */
+int smpi_get_host_nb_pstates(void)
+{
+ return simcall_host_get_nb_pstates(SIMIX_host_self());
+}
+
+/**
+ * \brief Sets the speed of the processor (in flop/s) at a given pstate
+ *
+ * \param pstate_index pstate to switch to
+ */
+void smpi_set_host_power_peak_at(int pstate_index)
+{
+ simcall_host_set_power_peak_at(SIMIX_host_self(), pstate_index);
+}
+
+/**
+ * \brief Return the total energy consumed by a host (in Joules)
+ *
+ * \return Returns the consumed energy
+ */
+double smpi_get_host_consumed_energy(void)
+{
+ return simcall_host_get_consumed_energy(SIMIX_host_self());
+}
+
+#include "smpi/smpif.h"
+
+#ifdef SMPI_F2C
+
+XBT_PUBLIC(doublereal) smpi_get_host_power_peak_at_(integer *pstate_index);
+doublereal smpi_get_host_power_peak_at_(integer *pstate_index)
+{
+ return (doublereal)smpi_get_host_power_peak_at((int)*pstate_index);
+}
+
+XBT_PUBLIC(doublereal) smpi_get_host_current_power_peak_(void);
+doublereal smpi_get_host_current_power_peak_(void)
+{
+ return smpi_get_host_current_power_peak();
+}
+
+XBT_PUBLIC(integer) smpi_get_host_nb_pstates_(void);
+integer smpi_get_host_nb_pstates_(void)
+{
+ return (integer)smpi_get_host_nb_pstates();
+}
+
+XBT_PUBLIC(void) smpi_set_host_power_peak_at_(integer *pstate_index);
+void smpi_set_host_power_peak_at_(integer *pstate_index)
+{
+ smpi_set_host_power_peak_at((int)*pstate_index);
+}
+
+XBT_PUBLIC(doublereal) smpi_get_host_consumed_energy_(void);
+doublereal smpi_get_host_consumed_energy_(void)
+{
+ return (doublereal)smpi_get_host_consumed_energy();
+}
+
+#endif
running_processes--;
if(running_processes==0){
xbt_dict_free(&op_lookup);
- op_lookup = NULL;
xbt_dict_free(&datatype_lookup);
- datatype_lookup = NULL;
xbt_dict_free(&request_lookup);
- request_lookup = NULL;
+ xbt_dict_free(&group_lookup);
xbt_dict_free(&comm_lookup);
- comm_lookup = NULL;
}
}
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-
#include "private.h"
#include "smpi_mpi_dt_private.h"
#include "mc/mc.h"
#include "simix/smx_private.h"
#include "simgrid/sg_config.h"
+#include <float.h> /* DBL_MAX */
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_kernel, smpi,
"Logging specific to SMPI (kernel)");
typedef struct s_smpi_process_data {
- int index;
- int* argc;
- char*** argv;
+ double simulated;
+ int *argc;
+ char ***argv;
smx_rdv_t mailbox;
smx_rdv_t mailbox_small;
xbt_os_timer_t timer;
- double simulated;
MPI_Comm comm_self;
- void *data; /* user data */
+ void *data; /* user data */
+ int index;
int initialized;
+ int sampling; /* inside an SMPI_SAMPLE_ block? */
} s_smpi_process_data_t;
static smpi_process_data_t *process_data = NULL;
MPI_Comm MPI_COMM_WORLD = MPI_COMM_NULL;
int MPI_UNIVERSE_SIZE;
-MPI_Errhandler* MPI_ERRORS_RETURN = NULL;
-MPI_Errhandler* MPI_ERRORS_ARE_FATAL = NULL;
-MPI_Errhandler* MPI_ERRHANDLER_NULL = NULL;
+MPI_Errhandler *MPI_ERRORS_RETURN = NULL;
+MPI_Errhandler *MPI_ERRORS_ARE_FATAL = NULL;
+MPI_Errhandler *MPI_ERRHANDLER_NULL = NULL;
#define MAILBOX_NAME_MAXLEN (5 + sizeof(int) * 2 + 1)
-static char* get_mailbox_name(char* str, int index) {
- snprintf(str, MAILBOX_NAME_MAXLEN, "SMPI-%0*x", (int)(sizeof(int) * 2), index);
+static char *get_mailbox_name(char *str, int index)
+{
+ snprintf(str, MAILBOX_NAME_MAXLEN, "SMPI-%0*x", (int) (sizeof(int) * 2),
+ index);
return str;
}
-static char* get_mailbox_name_small(char* str, int index) {
- snprintf(str, MAILBOX_NAME_MAXLEN, "small%0*x", (int)(sizeof(int) * 2), index);
+static char *get_mailbox_name_small(char *str, int index)
+{
+ snprintf(str, MAILBOX_NAME_MAXLEN, "small%0*x", (int) (sizeof(int) * 2),
+ index);
return str;
}
smpi_process_data_t data;
smx_process_t proc;
- if(argc && argv) {
+ if (argc && argv) {
proc = SIMIX_process_self();
index = atoi((*argv)[1]);
data = smpi_process_remote_data(index);
(*argc)--;
data->argc = argc;
data->argv = argv;
- simcall_rdv_set_receiver(data->mailbox_small, proc);// set the process attached to the mailbox
+ // set the process attached to the mailbox
+ simcall_rdv_set_receiver(data->mailbox_small, proc);
XBT_DEBUG("<%d> New process in the game: %p", index, proc);
}
}
void smpi_process_destroy(void)
{
int index = smpi_process_index();
- process_data[index]->index=-100;
+ process_data[index]->index = -100;
XBT_DEBUG("<%d> Process left the game", index);
}
*/
int smpi_process_finalized()
{
- return (smpi_process_index()==-100);
+ return (smpi_process_index() == -100);
// If finalized, this value has been set to -100;
}
int smpi_process_initialized(void)
{
int index = smpi_process_index();
- return((index != -100) && (index!=MPI_UNDEFINED) && (process_data[index]->initialized));
+ return ((index != -100) && (index != MPI_UNDEFINED)
+ && (process_data[index]->initialized));
}
/**
void smpi_process_mark_as_initialized(void)
{
int index = smpi_process_index();
- if((index != -100)&& (index!=MPI_UNDEFINED))process_data[index]->initialized=1;
+ if ((index != -100) && (index != MPI_UNDEFINED))
+ process_data[index]->initialized = 1;
}
#ifdef SMPI_F2C
-int smpi_process_argc(void) {
+int smpi_process_argc(void)
+{
smpi_process_data_t data = smpi_process_data();
-
return data->argc ? *(data->argc) - 1 : 0;
}
-int smpi_process_getarg(integer* index, char* dst, ftnlen len) {
+int smpi_process_getarg(integer * index, char *dst, ftnlen len)
+{
smpi_process_data_t data = smpi_process_data();
- char* arg;
+ char *arg;
ftnlen i;
- if(!data->argc || !data->argv
- || *index < 1 || *index >= *(data->argc)) {
+ if (!data->argc || !data->argv || *index < 1 || *index >= *(data->argc)) {
return -1;
}
arg = (*data->argv)[*index];
- for(i = 0; i < len && arg[i] != '\0'; i++) {
+ for (i = 0; i < len && arg[i] != '\0'; i++) {
dst[i] = arg[i];
}
- for(; i < len; i++) {
+ for (; i < len; i++) {
dst[i] = ' ';
}
return 0;
}
-int smpi_global_size(void) {
- char* value = getenv("SMPI_GLOBAL_SIZE");
+int smpi_global_size(void)
+{
+ char *value = getenv("SMPI_GLOBAL_SIZE");
- if(!value) {
- fprintf(stderr, "Please set env var SMPI_GLOBAL_SIZE to expected number of processes.\n");
- xbt_abort();
- }
- return atoi(value);
+ if (!value) {
+ fprintf(stderr,
+ "Please set env var SMPI_GLOBAL_SIZE to expected number of processes.\n");
+ xbt_abort();
+ }
+ return atoi(value);
}
#endif
process_data->data = data;
}
-void* smpi_process_get_user_data(){
+void *smpi_process_get_user_data()
+{
smpi_process_data_t process_data = smpi_process_data();
return process_data->data;
}
{
smpi_process_data_t data = smpi_process_data();
//return -1 if not initialized
- return data? data->index : MPI_UNDEFINED;
+ return data ? data->index : MPI_UNDEFINED;
}
-smx_rdv_t smpi_process_mailbox(void) {
+smx_rdv_t smpi_process_mailbox(void)
+{
smpi_process_data_t data = smpi_process_data();
-
return data->mailbox;
}
-smx_rdv_t smpi_process_mailbox_small(void) {
+smx_rdv_t smpi_process_mailbox_small(void)
+{
smpi_process_data_t data = smpi_process_data();
-
return data->mailbox_small;
}
-smx_rdv_t smpi_process_remote_mailbox(int index) {
+smx_rdv_t smpi_process_remote_mailbox(int index)
+{
smpi_process_data_t data = smpi_process_remote_data(index);
-
return data->mailbox;
}
-smx_rdv_t smpi_process_remote_mailbox_small(int index) {
+smx_rdv_t smpi_process_remote_mailbox_small(int index)
+{
smpi_process_data_t data = smpi_process_remote_data(index);
-
return data->mailbox_small;
}
xbt_os_timer_t smpi_process_timer(void)
{
smpi_process_data_t data = smpi_process_data();
-
return data->timer;
}
-void smpi_process_simulated_start(void) {
+void smpi_process_simulated_start(void)
+{
smpi_process_data_t data = smpi_process_data();
-
data->simulated = SIMIX_get_clock();
}
-double smpi_process_simulated_elapsed(void) {
+double smpi_process_simulated_elapsed(void)
+{
smpi_process_data_t data = smpi_process_data();
-
return SIMIX_get_clock() - data->simulated;
}
-MPI_Comm smpi_process_comm_self(void) {
+MPI_Comm smpi_process_comm_self(void)
+{
smpi_process_data_t data = smpi_process_data();
-
return data->comm_self;
}
-void print_request(const char *message, MPI_Request request) {
- XBT_DEBUG("%s request %p [buf = %p, size = %zu, src = %d, dst = %d, tag = %d, flags = %x]",
- message, request, request->buf, request->size,
- request->src, request->dst, request->tag, request->flags);
+void smpi_process_set_sampling(int s)
+{
+ smpi_process_data_t data = smpi_process_data();
+ data->sampling = s;
+}
+
+int smpi_process_get_sampling(void)
+{
+ smpi_process_data_t data = smpi_process_data();
+ return data->sampling;
+}
+
+void print_request(const char *message, MPI_Request request)
+{
+ XBT_DEBUG
+ ("%s request %p [buf = %p, size = %zu, src = %d, dst = %d, tag = %d, flags = %x]",
+ message, request, request->buf, request->size, request->src,
+ request->dst, request->tag, request->flags);
}
-static void SMPI_comm_copy_buffer_callback(smx_action_t comm, void* buff, size_t buff_size)
+static void smpi_comm_copy_buffer_callback(smx_action_t comm,
+ void *buff, size_t buff_size)
{
XBT_DEBUG("Copy the data over");
memcpy(comm->comm.dst_buff, buff, buff_size);
- if (comm->comm.detached) { // if this is a detached send, the source buffer was duplicated by SMPI sender to make the original buffer available to the application ASAP
+ if (comm->comm.detached) {
+ // if this is a detached send, the source buffer was duplicated by SMPI
+ // sender to make the original buffer available to the application ASAP
xbt_free(buff);
//It seems that the request is used after the call there this should
//be free somewhereelse but where???
MPI_Group group;
char name[MAILBOX_NAME_MAXLEN];
- SIMIX_comm_set_copy_data_callback(&SMPI_comm_copy_buffer_callback);
+ SIMIX_comm_set_copy_data_callback(&smpi_comm_copy_buffer_callback);
process_count = SIMIX_process_count();
process_data = xbt_new(smpi_process_data_t, process_count);
for (i = 0; i < process_count; i++) {
process_data[i]->argc = NULL;
process_data[i]->argv = NULL;
process_data[i]->mailbox = simcall_rdv_create(get_mailbox_name(name, i));
- process_data[i]->mailbox_small = simcall_rdv_create(get_mailbox_name_small(name, i));
+ process_data[i]->mailbox_small =
+ simcall_rdv_create(get_mailbox_name_small(name, i));
process_data[i]->timer = xbt_os_timer_new();
- if(MC_is_active())
+ if (MC_is_active())
MC_ignore_heap(process_data[i]->timer, xbt_os_timer_size());
group = smpi_group_new(1);
process_data[i]->comm_self = smpi_comm_new(group);
- process_data[i]->initialized =0;
+ process_data[i]->initialized = 0;
+ process_data[i]->sampling = 0;
smpi_group_set_mapping(group, i, 0);
}
//check correctness of MPI parameters
- xbt_assert(sg_cfg_get_int("smpi/async_small_thres")<=sg_cfg_get_int("smpi/send_is_detached_thres"));
+ xbt_assert(sg_cfg_get_int("smpi/async_small_thres") <=
+ sg_cfg_get_int("smpi/send_is_detached_thres"));
}
void smpi_global_destroy(void)
int i;
smpi_bench_destroy();
- while(smpi_group_unuse(smpi_comm_group(MPI_COMM_WORLD))>0);
+ while (smpi_group_unuse(smpi_comm_group(MPI_COMM_WORLD)) > 0);
xbt_free(MPI_COMM_WORLD);
MPI_COMM_WORLD = MPI_COMM_NULL;
for (i = 0; i < count; i++) {
/* Fortran specific stuff */
/* With smpicc, the following weak symbols are used */
/* With smpiff, the following weak symbols are replaced by those in libf2c */
-int __attribute__((weak)) xargc;
-char** __attribute__((weak)) xargv;
+int __attribute__ ((weak)) xargc;
+char ** __attribute__ ((weak)) xargv;
#ifndef WIN32
-void __attribute__((weak)) user_main_(){
+void __attribute__ ((weak)) user_main_()
+{
xbt_die("Should not be in this smpi_simulated_main");
return;
}
-int __attribute__((weak)) smpi_simulated_main_(int argc, char** argv) {
+
+int __attribute__ ((weak)) smpi_simulated_main_(int argc, char **argv)
+{
smpi_process_init(&argc, &argv);
user_main_();
//xbt_die("Should not be in this smpi_simulated_main");
return 0;
}
-int __attribute__((weak)) main(int argc, char** argv) {
- return smpi_main(smpi_simulated_main_,argc,argv);
+int __attribute__ ((weak)) main(int argc, char **argv)
+{
+ return smpi_main(smpi_simulated_main_, argc, argv);
}
-int __attribute__((weak)) MAIN__(){
- return smpi_main(smpi_simulated_main_,xargc, xargv);
+int __attribute__ ((weak)) MAIN__()
+{
+ return smpi_main(smpi_simulated_main_, xargc, xargv);
};
#endif
-int smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[])
+int smpi_main(int (*realmain) (int argc, char *argv[]), int argc, char *argv[])
{
srand(SMPI_RAND_SEED);
-
- if(getenv("SMPI_PRETEND_CC") != NULL) {
- /* Hack to ensure that smpicc can pretend to be a simple compiler. Particularly handy to pass it to the configuration tools */
+
+ if (getenv("SMPI_PRETEND_CC") != NULL) {
+ /* Hack to ensure that smpicc can pretend to be a simple
+ * compiler. Particularly handy to pass it to the configuration tools */
return 0;
}
/* Connect log categories. See xbt/log.c */
- XBT_LOG_CONNECT(smpi); /* Keep this line as soon as possible in this
- function: xbt_log_appender_file.c depends on it
- DO NOT connect this in XBT or so, or it will be
- useless to xbt_log_appender_file.c */
+ XBT_LOG_CONNECT(smpi); /* Keep this line as soon as possible in this
+ function: xbt_log_appender_file.c depends on it
+ DO NOT connect this in XBT or so, or it will be
+ useless to xbt_log_appender_file.c */
#ifdef HAVE_TRACING
XBT_LOG_CONNECT(instr_smpi);
#endif
XBT_LOG_CONNECT(smpi_base);
XBT_LOG_CONNECT(smpi_bench);
XBT_LOG_CONNECT(smpi_coll);
+ XBT_LOG_CONNECT(smpi_colls);
XBT_LOG_CONNECT(smpi_comm);
+ XBT_LOG_CONNECT(smpi_dvfs);
XBT_LOG_CONNECT(smpi_group);
XBT_LOG_CONNECT(smpi_kernel);
XBT_LOG_CONNECT(smpi_mpi);
XBT_LOG_CONNECT(smpi_mpi_dt);
XBT_LOG_CONNECT(smpi_pmpi);
XBT_LOG_CONNECT(smpi_replay);
- XBT_LOG_CONNECT(smpi_colls);
#ifdef HAVE_TRACING
TRACE_global_init(&argc, argv);
SIMIX_launch_application(argv[2]);
int gather_id = find_coll_description(mpi_coll_gather_description,
- sg_cfg_get_string("smpi/gather"));
+ sg_cfg_get_string("smpi/gather"));
mpi_coll_gather_fun = (int (*)(void *, int, MPI_Datatype,
- void*, int, MPI_Datatype, int, MPI_Comm))
- mpi_coll_gather_description[gather_id].coll;
+ void *, int, MPI_Datatype, int, MPI_Comm))
+ mpi_coll_gather_description[gather_id].coll;
int allgather_id = find_coll_description(mpi_coll_allgather_description,
sg_cfg_get_string("smpi/allgather"));
mpi_coll_allgather_fun = (int (*)(void *, int, MPI_Datatype,
- void*, int, MPI_Datatype, MPI_Comm))
- mpi_coll_allgather_description[allgather_id].coll;
+ void *, int, MPI_Datatype, MPI_Comm))
+ mpi_coll_allgather_description[allgather_id].coll;
int allgatherv_id = find_coll_description(mpi_coll_allgatherv_description,
- sg_cfg_get_string("smpi/allgatherv"));
- mpi_coll_allgatherv_fun = (int (*)(void *, int, MPI_Datatype,
- void*, int*, int*, MPI_Datatype, MPI_Comm))
- mpi_coll_allgatherv_description[allgatherv_id].coll;
+ sg_cfg_get_string("smpi/allgatherv"));
+ mpi_coll_allgatherv_fun = (int (*)(void *, int, MPI_Datatype, void *, int *,
+ int *, MPI_Datatype, MPI_Comm))
+ mpi_coll_allgatherv_description[allgatherv_id].coll;
int allreduce_id = find_coll_description(mpi_coll_allreduce_description,
sg_cfg_get_string("smpi/allreduce"));
- mpi_coll_allreduce_fun = (int (*)(void *sbuf, void *rbuf, int rcount, \
- MPI_Datatype dtype, MPI_Op op, MPI_Comm comm))
- mpi_coll_allreduce_description[allreduce_id].coll;
+ mpi_coll_allreduce_fun = (int (*)(void *sbuf, void *rbuf, int rcount,
+ MPI_Datatype dtype, MPI_Op op,
+ MPI_Comm comm))
+ mpi_coll_allreduce_description[allreduce_id].coll;
int alltoall_id = find_coll_description(mpi_coll_alltoall_description,
sg_cfg_get_string("smpi/alltoall"));
mpi_coll_alltoall_fun = (int (*)(void *, int, MPI_Datatype,
- void*, int, MPI_Datatype, MPI_Comm))
- mpi_coll_alltoall_description[alltoall_id].coll;
+ void *, int, MPI_Datatype, MPI_Comm))
+ mpi_coll_alltoall_description[alltoall_id].coll;
int alltoallv_id = find_coll_description(mpi_coll_alltoallv_description,
- sg_cfg_get_string("smpi/alltoallv"));
- mpi_coll_alltoallv_fun = (int (*)(void *, int*, int*, MPI_Datatype,
- void*, int*, int*, MPI_Datatype, MPI_Comm))
- mpi_coll_alltoallv_description[alltoallv_id].coll;
+ sg_cfg_get_string("smpi/alltoallv"));
+ mpi_coll_alltoallv_fun = (int (*)(void *, int *, int *, MPI_Datatype,
+ void *, int *, int *, MPI_Datatype,
+ MPI_Comm))
+ mpi_coll_alltoallv_description[alltoallv_id].coll;
int bcast_id = find_coll_description(mpi_coll_bcast_description,
- sg_cfg_get_string("smpi/bcast"));
- mpi_coll_bcast_fun = (int (*)(void *buf, int count, MPI_Datatype datatype, \
- int root, MPI_Comm com))
- mpi_coll_bcast_description[bcast_id].coll;
+ sg_cfg_get_string("smpi/bcast"));
+ mpi_coll_bcast_fun = (int (*)(void *buf, int count, MPI_Datatype datatype,
+ int root, MPI_Comm com))
+ mpi_coll_bcast_description[bcast_id].coll;
int reduce_id = find_coll_description(mpi_coll_reduce_description,
- sg_cfg_get_string("smpi/reduce"));
- mpi_coll_reduce_fun = (int (*)(void *buf, void *rbuf, int count, MPI_Datatype datatype, \
- MPI_Op op, int root, MPI_Comm comm))
- mpi_coll_reduce_description[reduce_id].coll;
-
- int reduce_scatter_id = find_coll_description(mpi_coll_reduce_scatter_description,
- sg_cfg_get_string("smpi/reduce_scatter"));
- mpi_coll_reduce_scatter_fun = (int (*)(void *sbuf, void *rbuf, int *rcounts,\
- MPI_Datatype dtype,MPI_Op op,MPI_Comm comm))
- mpi_coll_reduce_scatter_description[reduce_scatter_id].coll;
+ sg_cfg_get_string("smpi/reduce"));
+ mpi_coll_reduce_fun = (int (*)(void *buf, void *rbuf, int count,
+ MPI_Datatype datatype, MPI_Op op,
+ int root, MPI_Comm comm))
+ mpi_coll_reduce_description[reduce_id].coll;
+
+ int reduce_scatter_id =
+ find_coll_description(mpi_coll_reduce_scatter_description,
+ sg_cfg_get_string("smpi/reduce_scatter"));
+ mpi_coll_reduce_scatter_fun = (int (*)(void *sbuf, void *rbuf, int *rcounts,
+ MPI_Datatype dtype, MPI_Op op,
+ MPI_Comm comm))
+ mpi_coll_reduce_scatter_description[reduce_scatter_id].coll;
int scatter_id = find_coll_description(mpi_coll_scatter_description,
- sg_cfg_get_string("smpi/scatter"));
- mpi_coll_scatter_fun = (int (*)(void *sendbuf, int sendcount, MPI_Datatype sendtype,\
- void *recvbuf, int recvcount, MPI_Datatype recvtype,\
- int root, MPI_Comm comm))
- mpi_coll_scatter_description[scatter_id].coll;
+ sg_cfg_get_string("smpi/scatter"));
+ mpi_coll_scatter_fun = (int (*)(void *sendbuf, int sendcount,
+ MPI_Datatype sendtype, void *recvbuf,
+ int recvcount, MPI_Datatype recvtype,
+ int root, MPI_Comm comm))
+ mpi_coll_scatter_description[scatter_id].coll;
int barrier_id = find_coll_description(mpi_coll_barrier_description,
- sg_cfg_get_string("smpi/barrier"));
+ sg_cfg_get_string("smpi/barrier"));
mpi_coll_barrier_fun = (int (*)(MPI_Comm comm))
- mpi_coll_barrier_description[barrier_id].coll;
+ mpi_coll_barrier_description[barrier_id].coll;
+
+ smpi_cpu_threshold = sg_cfg_get_double("smpi/cpu_threshold");
+ smpi_running_power = sg_cfg_get_double("smpi/running_power");
+ if (smpi_cpu_threshold < 0)
+ smpi_cpu_threshold = DBL_MAX;
smpi_global_init();
#ifdef HAVE_TRACING
int rank = smpi_process_index();
TRACE_smpi_init(rank);
-
TRACE_smpi_computing_init(rank);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_INIT;
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
#endif
smpi_bench_begin();
return MPI_SUCCESS;
int PMPI_Finalize(void)
{
- smpi_process_finalize();
smpi_bench_end();
#ifdef HAVE_TRACING
int rank = smpi_process_index();
- TRACE_smpi_computing_out(rank);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_FINALIZE;
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+#endif
+ smpi_process_finalize();
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
TRACE_smpi_finalize(smpi_process_index());
#endif
smpi_process_destroy();
{
smpi_bench_end();
smpi_process_destroy();
-#ifdef HAVE_TRACING
- int rank = smpi_process_index();
- TRACE_smpi_computing_out(rank);
-#endif
// FIXME: should kill all processes in comm instead
simcall_process_kill(SIMIX_process_self());
return MPI_SUCCESS;
double PMPI_Wtime(void)
{
double time;
- time = SIMIX_get_clock();
+ if (smpi_process_initialized() && !smpi_process_finalized() && !smpi_process_get_sampling()) {
+ smpi_bench_end();
+ time = SIMIX_get_clock();
+ smpi_bench_begin();
+ } else {
+ time = SIMIX_get_clock();
+ }
return time;
}
newsize = oldsize - n;
*newgroup = smpi_group_new(newsize);
- int* to_exclude=xbt_new(int, smpi_group_size(group));
+ int* to_exclude=xbt_new0(int, smpi_group_size(group));
for(i=0; i<oldsize; i++)
to_exclude[i]=0;
for(i=0; i<n; i++)
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, count*smpi_datatype_size(datatype));
+
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_IRECV;
+ extra->send_size = count;
+ extra->src = src_traced;
+ extra->dst = rank;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
#endif
*request = smpi_mpi_irecv(buf, count, datatype, src, tag, comm);
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ISEND;
+ extra->send_size = count;
+ extra->src = rank;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
#endif
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
(*request)->send = 1;
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ISSEND;
+ extra->send_size = count;
+ extra->src = rank;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, count*smpi_datatype_size(datatype));
#endif
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
(*request)->send = 1;
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_RECV;
+ extra->send_size = count;
+ extra->src = src_traced;
+ extra->dst = rank;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
#endif
smpi_mpi_recv(buf, count, datatype, src, tag, comm, status);
if(status!=MPI_STATUS_IGNORE)src_traced = smpi_group_index(smpi_comm_group(comm), status->MPI_SOURCE);
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
TRACE_smpi_recv(rank, src_traced, rank);
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SEND;
+ extra->send_size = count;
+ extra->src = rank;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
#endif
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
- TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SSEND;
+ extra->send_size = count;
+ extra->src = rank;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra); TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype));
#endif
smpi_mpi_ssend(buf, count, datatype, dst, tag, comm);
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int dst_traced = smpi_group_index(smpi_comm_group(comm), dst);
int src_traced = smpi_group_index(smpi_comm_group(comm), src);
- TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, sendcount*smpi_datatype_size(sendtype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SENDRECV;
+ extra->send_size = sendcount;
+ extra->recv_size = recvcount;
+ extra->src = src_traced;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced,sendcount*smpi_datatype_size(sendtype));
#endif
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, dst_traced, __FUNCTION__);
TRACE_smpi_recv(rank, src_traced, rank);
- TRACE_smpi_computing_in(rank);
#endif
}
retval = MPI_ERR_COUNT;
} else {
int size = smpi_datatype_get_extent(datatype) * count;
- recvbuf = xbt_new(char, size);
+ recvbuf = xbt_new0(char, size);
retval =
MPI_Sendrecv(buf, count, datatype, dst, sendtag, recvbuf, count,
datatype, src, recvtag, comm, status);
int rank = request && (*request)->comm != MPI_COMM_NULL
? smpi_process_index()
: -1;
- TRACE_smpi_computing_out(rank);
int src_traced = (*request)->src;
int dst_traced = (*request)->dst;
MPI_Comm comm = (*request)->comm;
int is_wait_for_receive = (*request)->recv;
- TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__,-1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_WAIT;
+ TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
#endif
smpi_mpi_wait(request, status);
src_traced;
TRACE_smpi_recv(rank, src_traced, dst_traced);
}
- TRACE_smpi_computing_in(rank);
#endif
}
int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * status)
{
- int retval = 0;
+ if (index == NULL)
+ return MPI_ERR_ARG;
smpi_bench_end();
#ifdef HAVE_TRACING
//save requests information for tracing
int i;
- int *srcs = xbt_new(int, count);
- int *dsts = xbt_new(int, count);
- int *recvs = xbt_new(int, count);
- MPI_Comm *comms = xbt_new(MPI_Comm, count);
+ int *srcs = xbt_new0(int, count);
+ int *dsts = xbt_new0(int, count);
+ int *recvs = xbt_new0(int, count);
+ MPI_Comm *comms = xbt_new0(MPI_Comm, count);
for (i = 0; i < count; i++) {
MPI_Request req = requests[i]; //already received requests are no longer valid
}
}
int rank_traced = smpi_process_index();
- TRACE_smpi_computing_out(rank_traced);
-
- TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,count);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_WAITANY;
+ extra->send_size=count;
+ TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
#endif
- if (index == NULL) {
- retval = MPI_ERR_ARG;
- } else {
- *index = smpi_mpi_waitany(count, requests, status);
- retval = MPI_SUCCESS;
- }
+ *index = smpi_mpi_waitany(count, requests, status);
#ifdef HAVE_TRACING
if(*index!=MPI_UNDEFINED){
int src_traced = srcs[*index];
xbt_free(comms);
}
- TRACE_smpi_computing_in(rank_traced);
#endif
smpi_bench_begin();
- return retval;
+ return MPI_SUCCESS;
}
int PMPI_Waitall(int count, MPI_Request requests[], MPI_Status status[])
#ifdef HAVE_TRACING
//save information from requests
int i;
- int *srcs = xbt_new(int, count);
- int *dsts = xbt_new(int, count);
- int *recvs = xbt_new(int, count);
- int *valid = xbt_new(int, count);
- MPI_Comm *comms = xbt_new(MPI_Comm, count);
+ int *srcs = xbt_new0(int, count);
+ int *dsts = xbt_new0(int, count);
+ int *recvs = xbt_new0(int, count);
+ int *valid = xbt_new0(int, count);
+ MPI_Comm *comms = xbt_new0(MPI_Comm, count);
//int valid_count = 0;
for (i = 0; i < count; i++) {
}
}
int rank_traced = smpi_process_index();
- TRACE_smpi_computing_out(rank_traced);
-
- TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,count);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_WAITALL;
+ extra->send_size=count;
+ TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
#endif
int retval = smpi_mpi_waitall(count, requests, status);
#ifdef HAVE_TRACING
xbt_free(valid);
xbt_free(comms);
- TRACE_smpi_computing_in(rank_traced);
#endif
smpi_bench_begin();
return retval;
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_BCAST;
+ extra->send_size = count;
+ extra->root = root_traced;
+ extra->datatype1 = encode_datatype(datatype);
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
+
#endif
mpi_coll_bcast_fun(buf, count, datatype, root, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, smpi_comm_size(comm));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_BARRIER;
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
#endif
mpi_coll_barrier_fun(comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtmptype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_GATHER;
+ extra->send_size = sendtmpcount;
+ extra->recv_size = recvcount;
+ extra->root = root_traced;
+ extra->datatype1 = encode_datatype(sendtmptype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
#endif
mpi_coll_gather_fun(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount,
recvtype, root, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(sendtmptype));
+ int i=0;
+ int size = smpi_comm_size(comm);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_GATHERV;
+ extra->send_size = sendtmpcount;
+ extra->recvcounts= xbt_malloc(size*sizeof(int));
+ for(i=0; i< size; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i];
+ extra->num_processes = size;
+ extra->root = root_traced;
+ extra->datatype1 = encode_datatype(sendtmptype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
#endif
smpi_mpi_gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts,
displs, recvtype, root, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLGATHER;
+ extra->send_size = sendcount;
+ extra->recv_size = recvcount;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
#endif
mpi_coll_allgather_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
recvtype, comm);
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(sendtype));
+ int i=0;
+ int size = smpi_comm_size(comm);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLGATHERV;
+ extra->send_size = sendcount;
+ extra->recvcounts= xbt_malloc(size*sizeof(int));
+ for(i=0; i< size; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i];
+ extra->num_processes = size;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_allgatherv_fun(sendbuf, sendcount, sendtype, recvbuf, recvcounts,
displs, recvtype, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
-
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,sendcount*smpi_datatype_size(recvtype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SCATTER;
+ extra->send_size = sendcount;
+ extra->recv_size= recvcount;
+ extra->root = root_traced;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
#endif
mpi_coll_scatter_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount,
recvtype, root, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- int count=0, i;
- for(i=0; i<smpi_comm_size(comm);i++)count+=sendcounts[i];
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(sendtype));
+ int i=0;
+ int size = smpi_comm_size(comm);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SCATTERV;
+ extra->recv_size = recvcount;
+ extra->sendcounts= xbt_malloc(size*sizeof(int));
+ for(i=0; i< size; i++)//copy data to avoid bad free
+ extra->sendcounts[i] = sendcounts[i];
+ extra->num_processes = size;
+ extra->root = root_traced;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
+
#endif
smpi_mpi_scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf,
recvcount, recvtype, root, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
int root_traced = smpi_group_index(smpi_comm_group(comm), root);
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_REDUCE;
+ extra->send_size = count;
+ extra->datatype1 = encode_datatype(datatype);
+ extra->root = root_traced;
+
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
#endif
mpi_coll_reduce_fun(sendbuf, recvbuf, count, datatype, op, root, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
}
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLREDUCE;
+ extra->send_size = count;
+ extra->datatype1 = encode_datatype(datatype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_allreduce_fun(sendtmpbuf, recvbuf, count, datatype, op, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SCAN;
+ extra->send_size = count;
+ extra->datatype1 = encode_datatype(datatype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
smpi_mpi_scan(sendbuf, recvbuf, count, datatype, op, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_EXSCAN;
+ extra->send_size = count;
+ extra->datatype1 = encode_datatype(datatype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
smpi_mpi_exscan(sendbuf, recvbuf, count, datatype, op, comm);
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- int count=0, i;
- for(i=0; i<smpi_comm_size(comm);i++)count+=recvcounts[i];
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, count*smpi_datatype_size(datatype));
+ int i=0;
+ int size = smpi_comm_size(comm);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_REDUCE_SCATTER;
+ extra->send_size = 0;
+ extra->recvcounts= xbt_malloc(size*sizeof(int));
+ for(i=0; i< size; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i];
+ extra->num_processes = size;
+ extra->datatype1 = encode_datatype(datatype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
void* sendtmpbuf=sendbuf;
if(sendbuf==MPI_IN_PLACE){
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else if (recvcount < 0) {
retval = MPI_ERR_ARG;
} else {
+ int count=smpi_comm_size(comm);
+
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, recvcount*smpi_comm_size(comm)*smpi_datatype_size(datatype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_REDUCE_SCATTER;
+ extra->send_size = 0;
+ extra->recvcounts= xbt_malloc(count*sizeof(int));
+ for(i=0; i< count; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcount;
+ extra->num_processes = count;
+ extra->datatype1 = encode_datatype(datatype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
- int count=smpi_comm_size(comm);
int* recvcounts=(int*)xbt_malloc(count);
for (i=0; i<count;i++)recvcounts[i]=recvcount;
mpi_coll_reduce_scatter_fun(sendbuf, recvbuf, recvcounts,
retval = MPI_SUCCESS;
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, sendcount*smpi_datatype_size(sendtype));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLTOALL;
+ extra->send_size = sendcount;
+ extra->recv_size = recvcount;
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
retval = mpi_coll_alltoall_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
} else {
#ifdef HAVE_TRACING
int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- int i, size=0;
- for(i=0; i< smpi_comm_size(comm);i++)size+=sendcounts[i];
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, size*smpi_datatype_size(sendtype));
+ int i=0;
+ int size = smpi_comm_size(comm);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLTOALLV;
+ extra->send_size = 0;
+ extra->recv_size = 0;
+ extra->recvcounts= xbt_malloc(size*sizeof(int));
+ extra->sendcounts= xbt_malloc(size*sizeof(int));
+
+ for(i=0; i< size; i++){//copy data to avoid bad free
+ extra->send_size += sendcounts[i];
+ extra->recv_size += recvcounts[i];
+
+ extra->sendcounts[i] = sendcounts[i];
+ extra->recvcounts[i] = recvcounts[i];
+ }
+ extra->num_processes = size;
+
+ extra->datatype1 = encode_datatype(sendtype);
+ extra->datatype2 = encode_datatype(recvtype);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
retval =
mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps, sendtype,
comm);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
}
}
-typedef struct {
- xbt_dynar_t irecvs; /* of MPI_Request */
-} s_smpi_replay_globals_t, *smpi_replay_globals_t;
-
-
/* Helper function */
static double parse_double(const char *string)
{
return MPI_CURRENT_TYPE;
}
+
+const char* encode_datatype(MPI_Datatype datatype)
+{
+
+ //default type for output is set to MPI_BYTE
+ // MPI_DEFAULT_TYPE is not set for output, use directly MPI_BYTE
+ if (datatype==MPI_BYTE){
+ return "";
+ }
+ if(datatype==MPI_DOUBLE)
+ return "0";
+ if(datatype==MPI_INT)
+ return "1";
+ if(datatype==MPI_CHAR)
+ return "2";
+ if(datatype==MPI_SHORT)
+ return "3";
+ if(datatype==MPI_LONG)
+ return "4";
+ if(datatype==MPI_FLOAT)
+ return "5";
+
+ // default - not implemented.
+ // do not warn here as we pass in this function even for other trace formats
+ return "-1";
+}
+
static void action_init(const char *const *action)
{
int i;
XBT_DEBUG("Initialize the counters");
- smpi_replay_globals_t globals = xbt_new(s_smpi_replay_globals_t, 1);
- globals->irecvs = xbt_dynar_new(sizeof(MPI_Request),NULL);
if(action[2]) MPI_DEFAULT_TYPE= MPI_DOUBLE; // default MPE dataype
else MPI_DEFAULT_TYPE= MPI_BYTE; // default TAU datatype
- smpi_process_set_user_data((void*) globals);
-
/* start a simulated timer */
smpi_process_simulated_start();
/*initialize the number of active processes */
reqq=xbt_new0(xbt_dynar_t,active_processes);
for(i=0;i<active_processes;i++){
- reqq[i]=xbt_dynar_new(sizeof(MPI_Request),NULL);
+ reqq[i]=xbt_dynar_new(sizeof(MPI_Request),&xbt_free_ref);
}
}
}
static void action_finalize(const char *const *action)
{
- smpi_replay_globals_t globals =
- (smpi_replay_globals_t) smpi_process_get_user_data();
- if (globals){
- XBT_DEBUG("There are %lu irecvs in the dynar",
- xbt_dynar_length(globals->irecvs));
- xbt_dynar_free_container(&(globals->irecvs));
- }
- free(globals);
}
static void action_comm_size(const char *const *action)
static void action_compute(const char *const *action)
{
double clock = smpi_process_simulated_elapsed();
- smpi_execute_flops(parse_double(action[2]));
+ double flops= parse_double(action[2]);
+#ifdef HAVE_TRACING
+ int rank = smpi_comm_rank(MPI_COMM_WORLD);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type=TRACING_COMPUTING;
+ extra->comp_size=flops;
+ TRACE_smpi_computing_in(rank, extra);
+#endif
+ smpi_execute_flops(flops);
+#ifdef HAVE_TRACING
+ TRACE_smpi_computing_out(rank);
+#endif
log_timed_action (action, clock);
}
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
- TRACE_smpi_computing_out(rank);
+
int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_SEND;
+ extra->send_size = size;
+ extra->src = rank;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
#endif
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
}
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
- TRACE_smpi_computing_out(rank);
int dst_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), to);
- TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ISEND;
+ extra->send_size = size;
+ extra->src = rank;
+ extra->dst = dst_traced;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra);
TRACE_smpi_send(rank, rank, dst_traced, size*smpi_datatype_size(MPI_CURRENT_TYPE));
#endif
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__);
request->send = 1;
- TRACE_smpi_computing_in(rank);
#endif
xbt_dynar_push(reqq[smpi_comm_rank(MPI_COMM_WORLD)],&request);
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_RECV;
+ extra->send_size = size;
+ extra->src = src_traced;
+ extra->dst = rank;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
#endif
smpi_mpi_recv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD, &status);
#ifdef HAVE_TRACING
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
TRACE_smpi_recv(rank, src_traced, rank);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
double clock = smpi_process_simulated_elapsed();
MPI_Request request;
- smpi_replay_globals_t globals =
- (smpi_replay_globals_t) smpi_process_get_user_data();
-
if(action[4]) MPI_CURRENT_TYPE=decode_datatype(action[4]);
else MPI_CURRENT_TYPE= MPI_DEFAULT_TYPE;
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
int src_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), from);
- TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_IRECV;
+ extra->send_size = size;
+ extra->src = src_traced;
+ extra->dst = rank;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ TRACE_smpi_ptp_in(rank, src_traced, rank, __FUNCTION__, extra);
#endif
request = smpi_mpi_irecv(NULL, size, MPI_CURRENT_TYPE, from, 0, MPI_COMM_WORLD);
TRACE_smpi_ptp_out(rank, src_traced, rank, __FUNCTION__);
request->recv = 1;
#endif
- xbt_dynar_push(globals->irecvs,&request);
xbt_dynar_push(reqq[smpi_comm_rank(MPI_COMM_WORLD)],&request);
log_timed_action (action, clock);
double clock = smpi_process_simulated_elapsed();
MPI_Request request;
MPI_Status status;
- smpi_replay_globals_t globals =
- (smpi_replay_globals_t) smpi_process_get_user_data();
- xbt_assert(xbt_dynar_length(globals->irecvs),
- "action wait not preceded by any irecv: %s",
+ xbt_assert(xbt_dynar_length(reqq[smpi_comm_rank(MPI_COMM_WORLD)]),
+ "action wait not preceded by any irecv or isend: %s",
xbt_str_join_array(action," "));
- request = xbt_dynar_pop_as(globals->irecvs,MPI_Request);
+ request = xbt_dynar_pop_as(reqq[smpi_comm_rank(MPI_COMM_WORLD)],MPI_Request);
+ xbt_assert(request != NULL, "found null request in reqq");
#ifdef HAVE_TRACING
- int rank = request && request->comm != MPI_COMM_NULL
+ int rank = request->comm != MPI_COMM_NULL
? smpi_comm_rank(request->comm)
: -1;
- TRACE_smpi_computing_out(rank);
MPI_Group group = smpi_comm_group(request->comm);
int src_traced = smpi_group_rank(group, request->src);
int dst_traced = smpi_group_rank(group, request->dst);
int is_wait_for_receive = request->recv;
- TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, -1);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_WAIT;
+ TRACE_smpi_ptp_in(rank, src_traced, dst_traced, __FUNCTION__, extra);
#endif
smpi_mpi_wait(&request, &status);
#ifdef HAVE_TRACING
if (is_wait_for_receive) {
TRACE_smpi_recv(rank, src_traced, dst_traced);
}
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
}
}
int rank_traced = smpi_process_index();
- TRACE_smpi_computing_out(rank_traced);
-
- TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__, count_requests);
- #endif
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_WAITALL;
+ extra->send_size=count_requests;
+ TRACE_smpi_ptp_in(rank_traced, -1, -1, __FUNCTION__,extra);
+ #endif
smpi_mpi_waitall(count_requests, requests, status);
xbt_dynar_free(&srcs);
xbt_dynar_free(&dsts);
xbt_dynar_free(&recvs);
- TRACE_smpi_computing_in(rank_traced);
#endif
- xbt_dynar_reset(reqq[smpi_comm_rank(MPI_COMM_WORLD)]);
+ xbt_dynar_free_container(&(reqq[smpi_comm_rank(MPI_COMM_WORLD)]));
}
log_timed_action (action, clock);
}
double clock = smpi_process_simulated_elapsed();
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, smpi_comm_size(MPI_COMM_WORLD));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_BARRIER;
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
#endif
smpi_mpi_barrier(MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
- TRACE_smpi_computing_out(rank);
- int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), 0);
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ int root_traced = smpi_group_index(smpi_comm_group(MPI_COMM_WORLD), root);
+
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_BCAST;
+ extra->send_size = size;
+ extra->root = root_traced;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra);
+
#endif
- smpi_mpi_bcast(NULL, size, MPI_CURRENT_TYPE, root, MPI_COMM_WORLD);
+ mpi_coll_bcast_fun(NULL, size, MPI_CURRENT_TYPE, root, MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
- TRACE_smpi_computing_out(rank);
- int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), 0);
- TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,comm_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ int root_traced = smpi_group_rank(smpi_comm_group(MPI_COMM_WORLD), root);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_REDUCE;
+ extra->send_size = comm_size;
+ extra->comp_size = comp_size;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->root = root_traced;
+
+ TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__,extra);
#endif
mpi_coll_reduce_fun(NULL, NULL, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, root, MPI_COMM_WORLD);
smpi_execute_flops(comp_size);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
double clock = smpi_process_simulated_elapsed();
#ifdef HAVE_TRACING
int rank = smpi_comm_rank(MPI_COMM_WORLD);
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,comp_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLREDUCE;
+ extra->send_size = comm_size;
+ extra->comp_size = comp_size;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_reduce_fun(NULL, NULL, comm_size, MPI_CURRENT_TYPE, MPI_OP_NULL, 0, MPI_COMM_WORLD);
smpi_execute_flops(comp_size);
mpi_coll_bcast_fun(NULL, comm_size, MPI_CURRENT_TYPE, 0, MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
#ifdef HAVE_TRACING
int rank = smpi_process_index();
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,send_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLTOALL;
+ extra->send_size = send_size;
+ extra->recv_size = recv_size;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_alltoall_fun(send, send_size, MPI_CURRENT_TYPE, recv, recv_size, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
MPI_CURRENT_TYPE2=MPI_DEFAULT_TYPE;
}
void *send = calloc(send_size, smpi_datatype_size(MPI_CURRENT_TYPE));
- void *recv = calloc(recv_size, smpi_datatype_size(MPI_CURRENT_TYPE2));
+ void *recv = NULL;
int root=atoi(action[4]);
int rank = smpi_process_index();
recv = calloc(recv_size*comm_size, smpi_datatype_size(MPI_CURRENT_TYPE2));
#ifdef HAVE_TRACING
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,send_size*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_GATHER;
+ extra->send_size = send_size;
+ extra->recv_size = recv_size;
+ extra->root = root;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+ TRACE_smpi_collective_in(rank, root, __FUNCTION__, extra);
#endif
smpi_mpi_gather(send, send_size, MPI_CURRENT_TYPE,
recv, recv_size, MPI_CURRENT_TYPE2,
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
}
+
+static void action_gatherv(const char *const *action) {
+ /*
+ The structure of the gatherv action for the rank 0 (total 4 processes)
+ is the following:
+ 0 gather 68 68 10 10 10 0 0 0
+
+ where:
+ 1) 68 is the sendcount
+ 2) 68 10 10 10 is the recvcounts
+ 3) 0 is the root node
+ 4) 0 is the send datatype id, see decode_datatype()
+ 5) 0 is the recv datatype id, see decode_datatype()
+ */
+ double clock = smpi_process_simulated_elapsed();
+ int comm_size = smpi_comm_size(MPI_COMM_WORLD);
+ int send_size = parse_double(action[2]);
+ int *disps = xbt_new0(int, comm_size);
+ int *recvcounts = xbt_new0(int, comm_size);
+ int i=0,recv_sum=0;
+
+ MPI_Datatype MPI_CURRENT_TYPE2;
+ if(action[4+comm_size]) {
+ MPI_CURRENT_TYPE=decode_datatype(action[4+comm_size]);
+ MPI_CURRENT_TYPE2=decode_datatype(action[5+comm_size]);
+ } else {
+ MPI_CURRENT_TYPE=MPI_DEFAULT_TYPE;
+ MPI_CURRENT_TYPE2=MPI_DEFAULT_TYPE;
+ }
+ void *send = calloc(send_size, smpi_datatype_size(MPI_CURRENT_TYPE));
+ void *recv = NULL;
+ for(i=0;i<comm_size;i++) {
+ recvcounts[i] = atoi(action[i+3]);
+ recv_sum=recv_sum+recvcounts[i];
+ disps[i] = 0;
+ }
+
+ int root=atoi(action[3+comm_size]);
+ int rank = smpi_process_index();
+
+ if(rank==root)
+ recv = calloc(recv_sum, smpi_datatype_size(MPI_CURRENT_TYPE2));
+
+#ifdef HAVE_TRACING
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_GATHERV;
+ extra->send_size = send_size;
+ extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+ for(i=0; i< comm_size; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i];
+ extra->root = root;
+ extra->num_processes = comm_size;
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+ TRACE_smpi_collective_in(rank, root, __FUNCTION__, extra);
+#endif
+smpi_mpi_gatherv(send, send_size, MPI_CURRENT_TYPE,
+ recv, recvcounts, disps, MPI_CURRENT_TYPE2,
+ root, MPI_COMM_WORLD);
+
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+
+ log_timed_action (action, clock);
+ xbt_free(recvcounts);
+ xbt_free(send);
+ xbt_free(recv);
+ xbt_free(disps);
+
+}
+
static void action_reducescatter(const char *const *action) {
/*
}
#ifdef HAVE_TRACING
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__, recv_sum*smpi_datatype_size(MPI_CURRENT_TYPE));
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_REDUCE_SCATTER;
+ extra->send_size = 0;
+ extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+ for(i=0; i< comm_size; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i];
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->comp_size = comp_size;
+ extra->num_processes = comm_size;
+
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_reduce_fun(NULL, NULL, recv_sum, MPI_CURRENT_TYPE, MPI_OP_NULL,
root, MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
-
+ xbt_free(recvcounts);
+ xbt_free(disps);
log_timed_action (action, clock);
}
void *recvbuf = calloc(recv_sum, smpi_datatype_size(MPI_CURRENT_TYPE2));
#ifdef HAVE_TRACING
- int rank = MPI_COMM_WORLD != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,sendcount*smpi_datatype_size(MPI_CURRENT_TYPE));
+ int rank = smpi_process_index();
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLGATHERV;
+ extra->send_size = sendcount;
+ extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+ for(i=0; i< comm_size; i++)//copy data to avoid bad free
+ extra->recvcounts[i] = recvcounts[i];
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+ extra->num_processes = comm_size;
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_allgatherv_fun(sendbuf, sendcount, MPI_CURRENT_TYPE, recvbuf, recvcounts, disps, MPI_CURRENT_TYPE2, MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
#ifdef HAVE_TRACING
- int rank = MPI_COMM_WORLD != MPI_COMM_NULL ? smpi_process_index() : -1;
- TRACE_smpi_computing_out(rank);
- int count=0;
- for(i=0;i<comm_size;i++) count+=sendcounts[i];
- TRACE_smpi_collective_in(rank, -1, __FUNCTION__,count*smpi_datatype_size(MPI_CURRENT_TYPE));
+ int rank = smpi_process_index();
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_ALLTOALLV;
+ extra->recvcounts= xbt_malloc(comm_size*sizeof(int));
+ extra->sendcounts= xbt_malloc(comm_size*sizeof(int));
+ extra->num_processes = comm_size;
+
+ for(i=0; i< comm_size; i++){//copy data to avoid bad free
+ extra->send_size += sendcounts[i];
+ extra->sendcounts[i] = sendcounts[i];
+ extra->recv_size += recvcounts[i];
+ extra->recvcounts[i] = recvcounts[i];
+ }
+ extra->datatype1 = encode_datatype(MPI_CURRENT_TYPE);
+ extra->datatype2 = encode_datatype(MPI_CURRENT_TYPE2);
+
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__,extra);
#endif
mpi_coll_alltoallv_fun(sendbuf, sendcounts, senddisps, MPI_CURRENT_TYPE,
recvbuf, recvcounts, recvdisps, MPI_CURRENT_TYPE,
MPI_COMM_WORLD);
#ifdef HAVE_TRACING
TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
- TRACE_smpi_computing_in(rank);
#endif
log_timed_action (action, clock);
}
void smpi_replay_init(int *argc, char***argv){
- PMPI_Init(argc, argv);
+ smpi_process_init(argc, argv);
+ smpi_process_mark_as_initialized();
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ TRACE_smpi_init(rank);
+ TRACE_smpi_computing_init(rank);
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_INIT;
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+#endif
+
if (!smpi_process_index()){
_xbt_replay_action_init();
xbt_replay_action_register("init", action_init);
xbt_replay_action_register("allToAll", action_allToAll);
xbt_replay_action_register("allToAllV", action_allToAllv);
xbt_replay_action_register("gather", action_gather);
+ xbt_replay_action_register("gatherV", action_gatherv);
xbt_replay_action_register("allGatherV", action_allgatherv);
xbt_replay_action_register("reduceScatter", action_reducescatter);
xbt_replay_action_register("compute", action_compute);
int smpi_replay_finalize(){
double sim_time= 1.;
/* One active process will stop. Decrease the counter*/
- active_processes--;
XBT_DEBUG("There are %lu elements in reqq[*]",
xbt_dynar_length(reqq[smpi_comm_rank(MPI_COMM_WORLD)]));
- xbt_dynar_free(&reqq[smpi_comm_rank(MPI_COMM_WORLD)]);
+ if (!xbt_dynar_is_empty(reqq[smpi_comm_rank(MPI_COMM_WORLD)])){
+ int count_requests=xbt_dynar_length(reqq[smpi_comm_rank(MPI_COMM_WORLD)]);
+ MPI_Request requests[count_requests];
+ MPI_Status status[count_requests];
+ unsigned int i;
+
+ xbt_dynar_foreach(reqq[smpi_comm_rank(MPI_COMM_WORLD)],i,requests[i]);
+ smpi_mpi_waitall(count_requests, requests, status);
+ active_processes--;
+ } else {
+ active_processes--;
+ }
+
+ xbt_dynar_free_container(&(reqq[smpi_comm_rank(MPI_COMM_WORLD)]));
+
if(!active_processes){
/* Last process alive speaking */
/* end the simulated timer */
reqq = NULL;
}
smpi_mpi_barrier(MPI_COMM_WORLD);
- return PMPI_Finalize();
+#ifdef HAVE_TRACING
+ int rank = smpi_process_index();
+ instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+ extra->type = TRACING_FINALIZE;
+ TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+#endif
+ smpi_process_finalize();
+#ifdef HAVE_TRACING
+ TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+ TRACE_smpi_finalize(smpi_process_index());
+#endif
+ smpi_process_destroy();
+ return MPI_SUCCESS;
}
-#! /bin/bash
+#! /usr/bin/env bash
CC=@CMAKE_C_COMPILER@
-#! /bin/bash
+#! /usr/bin/env bash
-CC=gfortran
+F90=@GFORTRAN_EXE@
INCLUDEARGS="@includeflag@"
CMAKE_LINKARGS="-L@libdir@"
declare -a TMPFILES
trap 'rm -f "${TMPFILES[@]}"' EXIT
+# $1: prefix, $2: suffix
+mymktemp () {
+ tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
+ if [ -z "$tmp" ]; then
+ # mktemp failed (unsupported --suffix ?), try unsafe mode
+ tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
+ if [ -z "$tmp" ]; then
+ # mktemp failed again (doesn't exist ?), try very unsafe mode
+ tmp="$1_$$x$RANDOM"
+ fi
+ tmp="${tmp}$2"
+ # create temp file, and exit if it existed before
+ sh -C -c "true > \"${tmp}\"" || exit 1
+ fi
+ echo "${tmp}"
+}
+
CMDLINE=""
while [ -n "$1" ]; do
ARG="$1"
CMDLINE="${CMDLINE} -c "
;;
*.f90|*.F90)
- TMPFILE=$(mktemp "${ARG}_XXXXXX.f90")
- TMPFILES+=( "${TMPFILE}" )
+ TMPFILE=$(mymktemp "${ARG}" ".f90")
+ TMPFILES+="${TMPFILE}"
#replace "program main_name by subroutine user\_main (and the end clause as well)"
sed 's/[[:space:]]*program[[:space:]]*\([a-zA-Z0-9\-\_]*\)/subroutine user\_main /gI;s/[[:space:]]*use[[:space:]]*mpi/\include \"mpif\.h\" /gI' ${ARG} > ${TMPFILE}
SRCFILE="${TMPFILE}"
esac
done
-CMDLINE="${CC} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
+CMDLINE="${F90} ${FFLAGS} ${CMDLINE} ${INCLUDEARGS} ${CMAKE_LINKARGS} ${LINKARGS}"
#echo "${CMDLINE}"
${CMDLINE}
-#! /bin/bash
+#! /usr/bin/env bash
prefix="@exec_prefix@"
ARGS="-DMAIN__=user_main -Diargc_=smpi_process_argc -Dgetarg_=smpi_process_getarg"
-LINKARGS="-lf2c"
-SRCFILES=""
+LINKARGS="-L@F2C_LIBRARY_PATH@ -lf2c -lm"
+declare -a SRCFILES
+
+# $1: prefix, $2: suffix
+mymktemp () {
+ tmp=$(mktemp --suffix="$2" "$1_XXXXXXXXXX" 2> /dev/null)
+ if [ -z "$tmp" ]; then
+ # mktemp failed (unsupported --suffix ?), try unsafe mode
+ tmp=$(mktemp -u "$1_XXXXXXXXXX" 2> /dev/null)
+ if [ -z "$tmp" ]; then
+ # mktemp failed again (doesn't exist ?), try very unsafe mode
+ tmp="$1_$$x$RANDOM"
+ fi
+ tmp="${tmp}$2"
+ # create temp file, and exit if it existed before
+ sh -C -c "true > \"${tmp}\"" || exit 1
+ fi
+ echo "${tmp}"
+}
while [ -n "$1" ]; do
ARG="$1"
case "${ARG}" in
*.f)
SRCFILE="$(readlink -f ${ARG} 2>/dev/null)"
- if [ -z $SRCFILE ] ; then
+ if [ -z "$SRCFILE" ] ; then
SRCFILE="$ARG"
fi
- SRCFILES="${SRCFILES} ${SRCFILE}"
+ SRCFILES+="${SRCFILE}"
;;
*)
if [ "${ARG}" = "-c" ]; then
if [ -n "${SRCFILES}" ]
then
- for SRCFILE in "${SRCFILES}"
+ for SRCFILE in "${SRCFILES[@]}"
do
- TMPFILE=${SRCFILE}\_$RANDOM.f
+ TMPFILE=$(mymktemp "${SRCFILE}" ".f")
cp ${SRCFILE} ${TMPFILE}
CFILE="${TMPFILE%.f}.c"
#echo "$prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE}"
- $prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE}
+ $prefix/bin/smpif2c ${TMPFILE} && $prefix/bin/smpicc ${ARGS} ${CFILE} && rm ${CFILE} && rm ${TMPFILE} || exit $?
+ # When the file is compiled with "-c" and no output file is specified with
+ # "-o", rename the output. FIXME: do it properly.
+ if [ -f ${CFILE%.c}.o ]; then
+ mv ${CFILE%.c}.o ${SRCFILE%.f}.o
+ fi
done
else
#echo "$prefix/bin/smpicc ${ARGS}"
-#!/bin/bash
+#! /usr/bin/env bash
@CMAKE_SMPI_COMMAND@
-map # display the machine on which each process rank is mapped
-np <numprocs> # use that amount of processes from the hostfile.
# By default, all processes of the hostfile are used.
- -trace # activate tracing
+ -trace-ti # activate time independant tracing (for replay, default in smpi_simgrid.txt)
+ -trace # activate tracing (Paje, default in smpi_simgrid.trace)
-trace-comment <comment> # put a comment on the top of the trace file
-trace-comment-file <file> # put file contents on the top of the trace file as comment
-trace-grouped # group MPI processes by location
shift 1
;;
+ "-trace-ti")
+ TRACE_ACTIVE="true"
+ TRACE_TI_ACTIVE="true"
+ shift 1
+ ;;
+
"-trace-comment")
TRACE_COMMENT="$2"
shift 2
##---------------------- SMPI TRACING OPTIONS ---------------------------------
if [ -n "${TRACE_ACTIVE}" ]; then
#define trace filename
- if [ -z "${TRACE_FILENAME}" ]; then
- TRACE_FILENAME="smpi_simgrid.trace"
+ if [ -n "${TRACE_TI_ACTIVE}" ]; then
+ if [ -z "${TRACE_FILENAME}" ]; then
+ TRACE_FILENAME="smpi_simgrid.txt"
+ fi
+ TRACEOPTIONS="--cfg=tracing:yes --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:yes --cfg=tracing/smpi/format:TI --cfg=tracing/smpi/computing:yes"
+ else
+ if [ -z "${TRACE_FILENAME}" ]; then
+ TRACE_FILENAME="smpi_simgrid.trace"
+ fi
+ TRACEOPTIONS="--cfg=tracing:yes --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:yes"
fi
- TRACEOPTIONS="--cfg=tracing:1 --cfg=tracing/filename:${TRACE_FILENAME} --cfg=tracing/smpi:1"
if [ -n "${TRACE_COMMENT}" ]; then
TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/comment:${TRACE_COMMENT}"
fi
if [ -n "${TRACE_GROUPED}" ]; then
- TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/smpi/group:1"
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/smpi/group:yes"
fi
if [ -n "${TRACE_RESOURCE}" ]; then
- TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/categorized:1 --cfg=tracing/uncategorized:1"
+ TRACEOPTIONS="${TRACEOPTIONS} --cfg=tracing/categorized:yes --cfg=tracing/uncategorized:yes"
fi
if [ -n "${TRACE_VIVA}" ]; then
free(sys);
}
-XBT_INLINE void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var)
+static XBT_INLINE void lmm_variable_disable(lmm_system_t sys, lmm_variable_t var)
{
int i;
int n;
if (!strcmp(name, table[i].name)) {
return i;
}
- name_list = strdup(table[0].name);
+ if (!table[0].name)
+ xbt_die("No model is valid! This is a bug.");
+ name_list = xbt_strdup(table[0].name);
for (i = 1; table[i].name; i++) {
name_list =
xbt_realloc(name_list,
xbt_dictelm_t current, previous = NULL;
xbt_assert(dict);
- XBT_DEBUG("ADD %.*s hash = %u, size = %d, & = %u", key_len, key, hash_code,
- dict->table_size, hash_code & dict->table_size);
+ XBT_CDEBUG(xbt_dict,
+ "ADD %.*s hash = %u, size = %d, & = %u", key_len, key, hash_code,
+ dict->table_size, hash_code & dict->table_size);
current = dict->table[hash_code & dict->table_size];
while (current != NULL &&
(hash_code != current->hash_code || key_len != current->key_len
previous->next = current;
}
} else {
- XBT_DEBUG("Replace %.*s by %.*s under key %.*s",
- key_len, (char *) current->content,
- key_len, (char *) data, key_len, (char *) key);
+ XBT_CDEBUG(xbt_dict, "Replace %.*s by %.*s under key %.*s",
+ key_len, (char *) current->content,
+ key_len, (char *) data, key_len, (char *) key);
/* there is already an element with the same key: overwrite it */
xbt_dictelm_set_data(dict, current, data, free_ctn);
}
XBT_INLINE void xbt_dict_cursor_first(const xbt_dict_t dict,
xbt_dict_cursor_t * cursor)
{
- XBT_DEBUG("xbt_dict_cursor_first");
+ XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_cursor_first");
if (!*cursor) {
- XBT_DEBUG("Create the cursor on first use");
+ XBT_CDEBUG(xbt_dict_cursor, "Create the cursor on first use");
*cursor = xbt_dict_cursor_new(dict);
} else {
xbt_dict_cursor_rewind(*cursor);
xbt_dictelm_t current;
int line;
- XBT_DEBUG("xbt_dict_cursor_step");
+ XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_cursor_step");
xbt_assert(cursor);
current = cursor->current;
if (cursor->dict != NULL) {
if (current != NULL) {
- XBT_DEBUG("current is not null, take the next element");
+ XBT_CDEBUG(xbt_dict_cursor, "current is not null, take the next element");
current = current->next;
- XBT_DEBUG("next element: %p", current);
+ XBT_CDEBUG(xbt_dict_cursor, "next element: %p", current);
}
while (current == NULL && ++line <= cursor->dict->table_size) {
- XBT_DEBUG("current is NULL, take the next line");
+ XBT_CDEBUG(xbt_dict_cursor, "current is NULL, take the next line");
current = cursor->dict->table[line];
- XBT_DEBUG("element in the next line: %p", current);
+ XBT_CDEBUG(xbt_dict_cursor, "element in the next line: %p", current);
}
- XBT_DEBUG("search finished, current = %p, line = %d", current, line);
+ XBT_CDEBUG(xbt_dict_cursor, "search finished, current = %p, line = %d", current, line);
cursor->current = current;
cursor->line = line;
xbt_dictelm_t current;
- XBT_DEBUG("xbt_dict_get_or_free");
+ XBT_CDEBUG(xbt_dict_cursor, "xbt_dict_get_or_free");
if (!cursor || !(*cursor))
{
_sanity_check_dynar(dynar);
- XBT_DEBUG("Reset the dynar %p", (void *) dynar);
+ XBT_CDEBUG(xbt_dyn, "Reset the dynar %p", (void *) dynar);
if (dynar->free_f) {
xbt_dynar_map(dynar, dynar->free_f);
}
XBT_INLINE void *xbt_dynar_pop_ptr(xbt_dynar_t const dynar)
{
_check_populated_dynar(dynar);
- XBT_DEBUG("Pop %p", (void *) dynar);
+ XBT_CDEBUG(xbt_dyn, "Pop %p", (void *) dynar);
dynar->used--;
return _xbt_dynar_elm(dynar, dynar->used);
}
{
/* sanity checks done by remove_at */
- XBT_DEBUG("Pop %p", (void *) dynar);
+ XBT_CDEBUG(xbt_dyn, "Pop %p", (void *) dynar);
xbt_dynar_remove_at(dynar, dynar->used - 1, dst);
}
/*
* Return 0 if d1 and d2 are equal and 1 if not equal
*/
-XBT_INLINE int xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2,
+int xbt_dynar_compare(xbt_dynar_t d1, xbt_dynar_t d2,
int(*compar)(const void *, const void *))
{
int i ;
*/
XBT_INLINE xbt_fifo_item_t xbt_fifo_newitem(void)
{
- XBT_WARN("This function is deprecated. Use xbt_fifo_new_item.");
+ XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_new_item.");
return xbt_fifo_new_item();
}
*/
XBT_INLINE void xbt_fifo_freeitem(xbt_fifo_item_t b)
{
- XBT_WARN("This function is deprecated. Use xbt_fifo_free_item.");
+ XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_free_item.");
xbt_fifo_free_item(b);
return;
}
*/
XBT_INLINE xbt_fifo_item_t xbt_fifo_getFirstItem(xbt_fifo_t l)
{
- XBT_WARN("This function is deprecated. Use xbt_fifo_get_first_item.");
+ XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_get_first_item.");
return xbt_fifo_get_first_item(l);
}
*/
xbt_fifo_item_t xbt_fifo_getNextItem(xbt_fifo_item_t i)
{
- XBT_WARN("This function is deprecated. Use xbt_fifo_get_next_item.");
+ XBT_CWARN(xbt_fifo, "This function is deprecated. Use xbt_fifo_get_next_item.");
return xbt_fifo_get_next_item(i);
}
XBT_LOG_CONNECT(instr_routing);
XBT_LOG_CONNECT(instr_sd);
XBT_LOG_CONNECT(instr_surf);
+ XBT_LOG_CONNECT(instr_trace);
+ XBT_LOG_CONNECT(instr_TI_trace);
#endif
/* jedule */
}
-
+// area_size is either a byte_size or an elements_count?&
static int compare_heap_area_with_type(void *real_area1, void *real_area2, void *area1, void *area2,
xbt_dynar_t previous, xbt_dict_t all_types, xbt_dict_t other_types, char *type_id,
int area_size, int check_ignore, int pointer_level){
char *type_desc;
switch(type->type){
- case e_dw_base_type:
+ case DW_TAG_base_type:
if(strcmp(type->name, "char") == 0){ /* String, hence random (arbitrary ?) size */
if(real_area1 == real_area2)
return -1;
else
return (memcmp(area1, area2, area_size) != 0);
}else{
- if(area_size != -1 && type->size != area_size)
+ if(area_size != -1 && type->byte_size != area_size)
return -1;
else{
- return (memcmp(area1, area2, type->size) != 0);
+ return (memcmp(area1, area2, type->byte_size) != 0);
}
}
break;
- case e_dw_enumeration_type:
- if(area_size != -1 && type->size != area_size)
+ case DW_TAG_enumeration_type:
+ if(area_size != -1 && type->byte_size != area_size)
return -1;
else
- return (memcmp(area1, area2, type->size) != 0);
+ return (memcmp(area1, area2, type->byte_size) != 0);
break;
- case e_dw_typedef:
+ case DW_TAG_typedef:
return compare_heap_area_with_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->dw_type_id, area_size, check_ignore, pointer_level);
break;
- case e_dw_const_type:
+ case DW_TAG_const_type:
return 0;
break;
- case e_dw_array_type:
+ case DW_TAG_array_type:
subtype = xbt_dict_get_or_null(all_types, type->dw_type_id);
switch(subtype->type){
- case e_dw_base_type:
- case e_dw_enumeration_type:
- case e_dw_pointer_type:
- case e_dw_structure_type:
- case e_dw_union_type:
- if(subtype->size == 0){ /*declaration of the type, need the complete description */
+ case DW_TAG_base_type:
+ case DW_TAG_enumeration_type:
+ case DW_TAG_pointer_type:
+ case DW_TAG_structure_type:
+ case DW_TAG_union_type:
+ if(subtype->byte_size == 0){ /*declaration of the type, need the complete description */
type_desc = get_type_description(all_types, subtype->name);
if(type_desc){
subtype = xbt_dict_get_or_null(all_types, type_desc);
switch_types = 1;
}
}
- elm_size = subtype->size;
+ elm_size = subtype->byte_size;
break;
- case e_dw_typedef:
- case e_dw_volatile_type:
+ // TODO, just remove the type indirection?
+ case DW_TAG_typedef:
+ case DW_TAG_volatile_type:
subsubtype = xbt_dict_get_or_null(all_types, subtype->dw_type_id);
- if(subsubtype->size == 0){ /*declaration of the type, need the complete description */
+ if(subsubtype->byte_size == 0){ /*declaration of the type, need the complete description */
type_desc = get_type_description(all_types, subsubtype->name);
if(type_desc){
subsubtype = xbt_dict_get_or_null(all_types, type_desc);
switch_types = 1;
}
}
- elm_size = subsubtype->size;
+ elm_size = subsubtype->byte_size;
break;
default :
return 0;
break;
}
- for(i=0; i<type->size; i++){
+ for(i=0; i<type->element_count; i++){
+ // TODO, add support for variable stride (DW_AT_byte_stride)
if(switch_types)
- res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, other_types, all_types, type->dw_type_id, type->size, check_ignore, pointer_level);
+ res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, other_types, all_types, type->dw_type_id, subtype->byte_size, check_ignore, pointer_level);
else
- res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, all_types, other_types, type->dw_type_id, type->size, check_ignore, pointer_level);
+ res = compare_heap_area_with_type((char *)real_area1 + (i*elm_size), (char *)real_area2 + (i*elm_size), (char *)area1 + (i*elm_size), (char *)area2 + (i*elm_size), previous, all_types, other_types, type->dw_type_id, subtype->byte_size, check_ignore, pointer_level);
if(res == 1)
return res;
}
break;
- case e_dw_pointer_type:
- if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(all_types, type->dw_type_id))->type == e_dw_subroutine_type){
+ case DW_TAG_pointer_type:
+ if(type->dw_type_id && ((dw_type_t)xbt_dict_get_or_null(all_types, type->dw_type_id))->type == DW_TAG_subroutine_type){
addr_pointed1 = *((void **)(area1));
addr_pointed2 = *((void **)(area2));
return (addr_pointed1 != addr_pointed2);;
}
}
break;
- case e_dw_structure_type:
- if(type->size == 0){ /*declaration of the structure, need the complete description */
+ case DW_TAG_structure_type:
+ if(type->byte_size == 0){ /*declaration of the structure, need the complete description */
type_desc = get_type_description(all_types, type->name);
if(type_desc){
type = xbt_dict_get_or_null(all_types, type_desc);
switch_types = 1;
}
}
- if(area_size != -1 && type->size != area_size){
- if(area_size>type->size && area_size%type->size == 0){
- for(i=0; i<(area_size/type->size); i++){
+ if(area_size != -1 && type->byte_size != area_size){
+ if(area_size>type->byte_size && area_size%type->byte_size == 0){
+ for(i=0; i<(area_size/type->byte_size); i++){
if(switch_types)
- res = compare_heap_area_with_type((char *)real_area1 + (i*type->size), (char *)real_area2 + (i*type->size), (char *)area1 + (i*type->size), (char *)area2 + (i*type->size), previous, other_types, all_types, type_id, -1, check_ignore, 0);
+ res = compare_heap_area_with_type((char *)real_area1 + (i*type->byte_size), (char *)real_area2 + (i*type->byte_size), (char *)area1 + (i*type->byte_size), (char *)area2 + (i*type->byte_size), previous, other_types, all_types, type_id, -1, check_ignore, 0);
else
- res = compare_heap_area_with_type((char *)real_area1 + (i*type->size), (char *)real_area2 + (i*type->size), (char *)area1 + (i*type->size), (char *)area2 + (i*type->size), previous, all_types, other_types, type_id, -1, check_ignore, 0);
+ res = compare_heap_area_with_type((char *)real_area1 + (i*type->byte_size), (char *)real_area2 + (i*type->byte_size), (char *)area1 + (i*type->byte_size), (char *)area2 + (i*type->byte_size), previous, all_types, other_types, type_id, -1, check_ignore, 0);
if(res == 1)
return res;
}
}
}
break;
- case e_dw_union_type:
- return compare_heap_area_without_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->size, check_ignore);
+ case DW_TAG_union_type:
+ return compare_heap_area_without_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->byte_size, check_ignore);
break;
- case e_dw_volatile_type:
+ case DW_TAG_volatile_type:
return compare_heap_area_with_type(real_area1, real_area2, area1, area2, previous, all_types, other_types, type->dw_type_id, area_size, check_ignore, pointer_level);
break;
default:
}
char* type_desc;
switch(type->type){
- case e_dw_structure_type :
- if(type->size == 0){ /*declaration of the structure, need the complete description */
+ case DW_TAG_structure_type :
+ if(type->byte_size == 0){ /*declaration of the structure, need the complete description */
if(*switch_type == 0){
type_desc = get_type_description(all_types, type->name);
if(type_desc){
}
}
- if(area_size != -1 && type->size != area_size){
- if(area_size>type->size && area_size%type->size == 0)
+ if(area_size != -1 && type->byte_size != area_size){
+ if(area_size>type->byte_size && area_size%type->byte_size == 0)
return type_id;
else
return NULL;
if(type_id){
type = xbt_dict_get_or_null(all_types, type_id);
- if(type->size == 0){
+ if(type->byte_size == 0){
if(type->dw_type_id == NULL){
type_desc = get_type_description(all_types, type->name);
if(type_desc)
type = xbt_dict_get_or_null(all_types, type->dw_type_id);
}
}
- if((type->type == e_dw_pointer_type) || ((type->type == e_dw_base_type) && (!strcmp(type->name, "char"))))
+ if((type->byte_size == DW_TAG_pointer_type) || ((type->type == DW_TAG_base_type) && (!strcmp(type->name, "char"))))
type_size = -1;
else
- type_size = type->size;
+ type_size = type->byte_size;
}
if((heapinfo1[block1].type == -1) && (heapinfo2[block2].type == -1)){ /* Free block */
if(new_type_id1 != NULL && new_type_id2 != NULL && !strcmp(new_type_id1, new_type_id2)){
if(switch_type){
type = xbt_dict_get_or_null(other_types, new_type_id1);
- while(type->size == 0 && type->dw_type_id != NULL)
+ while(type->byte_size == 0 && type->dw_type_id != NULL)
type = xbt_dict_get_or_null(other_types, type->dw_type_id);
- new_size1 = type->size;
+ new_size1 = type->byte_size;
type = xbt_dict_get_or_null(other_types, new_type_id2);
- while(type->size == 0 && type->dw_type_id != NULL)
+ while(type->byte_size == 0 && type->dw_type_id != NULL)
type = xbt_dict_get_or_null(other_types, type->dw_type_id);
- new_size2 = type->size;
+ new_size2 = type->byte_size;
}else{
type = xbt_dict_get_or_null(all_types, new_type_id1);
- while(type->size == 0 && type->dw_type_id != NULL)
+ while(type->byte_size == 0 && type->dw_type_id != NULL)
type = xbt_dict_get_or_null(all_types, type->dw_type_id);
- new_size1 = type->size;
+ new_size1 = type->byte_size;
type = xbt_dict_get_or_null(all_types, new_type_id2);
- while(type->size == 0 && type->dw_type_id != NULL)
+ while(type->byte_size == 0 && type->dw_type_id != NULL)
type = xbt_dict_get_or_null(all_types, type->dw_type_id);
- new_size2 = type->size;
+ new_size2 = type->byte_size;
}
}else{
if(match_pairs){
dw_type_t type;
xbt_dict_foreach(types, dict_cursor, type_origin, type){
- if(type->name && (strcmp(type->name, type_name) == 0) && type->size > 0){
+ if(type->name && (strcmp(type->name, type_name) == 0) && type->byte_size > 0){
xbt_dict_cursor_free(&dict_cursor);
return type_origin;
}
-/* Copyright (c) 2010-2012. The SimGrid Team.
+/* Copyright (c) 2010-2013. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* To that extend, we have a little area here living in .BSS that we return if asked for memory before the malloc is resolved.
*/
int allocated_junk=0; /* keep track of whether our little area was already given to someone */
-char junkarea[512];
+char junkarea[4096];
/* This version use mmalloc if there is a current heap, or the legacy implem if not */
void *malloc(size_t n) {
"Panic: real malloc symbol not resolved yet, and I already gave my little private memory chunk away. "
"Damn LD, we must extend our code to have several such areas.\n");
exit(1);
- } else if (n>512) {
+ } else if (n > sizeof junkarea) {
fprintf(stderr,
- "Panic: real malloc symbol not resolved yet, and I need %zu bytes while my little private memory chunk is only 512 bytes wide. "
- "Damn LD, we must fix our code to extend this area.\n",n);
+ "Panic: real malloc symbol not resolved yet, and I need %zu bytes while my little private memory chunk is only %zu bytes wide. "
+ "Damn LD, we must fix our code to extend this area.\n", n, sizeof junkarea);
exit(1);
} else {
allocated_junk = 1;
/* ********************************* PTHREAD IMPLEMENTATION ************************************ */
#ifdef HAVE_PTHREAD_H
+#include <limits.h>
#include <semaphore.h>
#ifdef HAVE_MUTEX_TIMEDLOCK
void xbt_os_thread_setstacksize(int stack_size)
{
- size_t def=0;
- if(stack_size<0)xbt_die("stack size is negative, maybe it exceeds MAX_INT?\n");
- pthread_attr_init(&attr);
- pthread_attr_getstacksize (&attr, &def);
- int res = pthread_attr_setstacksize (&attr, stack_size);
- if ( res!=0 ) {
- if(res==EINVAL)XBT_WARN("Thread stack size is either < PTHREAD_STACK_MIN, > the max limit of the system, or perhaps not a multiple of PTHREAD_STACK_MIN - The parameter was ignored");
- else XBT_WARN("unknown error in pthread stacksize setting");
+ size_t sz;
+ int res;
+
+ if (stack_size < 0)
+ xbt_die("stack size %d is negative, maybe it exceeds MAX_INT?", stack_size);
- pthread_attr_setstacksize (&attr, def);
+ sz = stack_size;
+ pthread_attr_init(&attr);
+ res = pthread_attr_setstacksize(&attr, sz);
+
+#ifdef PTHREAD_STACK_MIN
+ if (res == EINVAL) {
+ /* Invalid size, try again with a multiple of PTHREAD_STACK_MIN. */
+ size_t rem = sz % PTHREAD_STACK_MIN;
+ if (rem != 0 || sz == 0) {
+ size_t sz2 = sz - rem + PTHREAD_STACK_MIN;
+ XBT_DEBUG("pthread_attr_setstacksize failed for %#zx, try again with %#zx",
+ sz, sz2);
+ sz = sz2;
+ res = pthread_attr_setstacksize(&attr, sz);
+ }
}
- thread_attr_inited=1;
+#endif
+
+ if (res == EINVAL)
+ XBT_WARN("invalid stack size (maybe too big): %#zx", sz);
+ else if (res != 0)
+ XBT_WARN("unknown error %d in pthread stacksize setting: %#zx", res, sz);
+ thread_attr_inited = 1;
}
const char *xbt_os_thread_name(xbt_os_thread_t t)
//Freebsd doesn't provide this clock_gettime flag yet, because it was added too recently (after 1993)
#ifdef __FreeBSD__
-#define CLOCK_PROCESS_CPUTTIME_ID CLOCK_PROF
+#define CLOCK_PROCESS_CPUTIME_ID CLOCK_PROF
#endif
double xbt_os_time(void)
#include "xbt/log.h"
#include "xbt/str.h"
#include "xbt/replay.h"
+#include <ctype.h>
+#include <wchar.h>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(replay,xbt,"Replay trace reader");
static char **action_get_action(char *name);
+static char *str_tolower (const char *str)
+{
+ char *ret = xbt_strdup (str);
+ int i, n = strlen (ret);
+ for (i = 0; i < n; i++)
+ ret[i] = tolower (str[i]);
+ return ret;
+}
+
+
xbt_replay_reader_t xbt_replay_reader_new(const char *filename)
{
xbt_replay_reader_t res = xbt_new0(s_xbt_replay_reader_t,1);
*/
void xbt_replay_action_register(const char *action_name, action_fun function)
{
- xbt_dict_set(action_funs, action_name, function, NULL);
+ char* lowername = str_tolower (action_name);
+ xbt_dict_set(action_funs, lowername, function, NULL);
+ xbt_free(lowername);
}
/** \ingroup XBT_replay
*/
void xbt_replay_action_unregister(const char *action_name)
{
- xbt_dict_remove(action_funs, action_name);
+ char* lowername = str_tolower (action_name);
+ xbt_dict_remove(action_funs, lowername);
+ xbt_free(lowername);
}
void _xbt_replay_action_init(void)
if (action_fp) { // A unique trace file
char **evt;
while ((evt = action_get_action(argv[0]))) {
+ char* lowername = str_tolower (evt[1]);
action_fun function =
- (action_fun)xbt_dict_get(action_funs, evt[1]);
+ (action_fun)xbt_dict_get(action_funs, lowername);
+ xbt_free(lowername);
function((const char **)evt);
for (i=0;evt[i]!= NULL;i++)
free(evt[i]);
xbt_replay_reader_t reader = xbt_replay_reader_new(argv[1]);
while ((evt=xbt_replay_reader_get(reader))) {
if (!strcmp(argv[0],evt[0])) {
- action_fun function = (action_fun)xbt_dict_get(action_funs, evt[1]);
+ char* lowername = str_tolower (evt[1]);
+ action_fun function = (action_fun)xbt_dict_get(action_funs, lowername);
+ xbt_free(lowername);
function(evt);
} else {
XBT_WARN("%s: Ignore trace element not for me",
// if it's for me, I'm done
evtname = xbt_dynar_get_as(evt, 0, char *);
- if (!strcmp(name, evtname)) {
+ if (!strcasecmp(name, evtname)) {
return xbt_dynar_to_array(evt);
} else {
// Else, I have to store it for the relevant colleague
${CMAKE_CURRENT_SOURCE_DIR}/reduce_scatter_coll.tesh
${CMAKE_CURRENT_SOURCE_DIR}/struct.tesh
${CMAKE_CURRENT_SOURCE_DIR}/vector.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/TI_output.tesh
PARENT_SCOPE
)
set(xml_files
--- /dev/null
+$ rm -rf ./out_ti.txt_files
+$ rm -rf ./out_in_ti.txt_files
+
+p Test output of time independent tracing
+p generate a trace with pingpong, and replay itself, then check that output trace of the second run is the same as in the first (once sorted)
+! setenv LD_LIBRARY_PATH=../../lib
+! output sort
+$ ../../smpi_script/bin/smpirun -trace-ti --cfg=tracing/filename:out_in_ti.txt --cfg=smpi/cpu_threshold:-1 -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ./pingpong -q
+> *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> == pivot=0 : pingpong [0] <--> [1]
+> == pivot=1 : pingpong [1] <--> [2]
+> == pivot=2 : pingpong [2] <--> [3]
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_in_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0] About to send 1st message '99' to process [1]
+> [0] Received reply message '100' from process [1]
+> [1] About to send 1st message '100' to process [2]
+> [1] About to send back message '100' to process [0]
+> [1] Received 1st message '99' from process [0]
+> [1] Received reply message '101' from process [2]
+> [1] increment message's value to '100'
+> [2] About to send 1st message '101' to process [3]
+> [2] About to send back message '101' to process [1]
+> [2] Received 1st message '100' from process [1]
+> [2] Received reply message '102' from process [3]
+> [2] increment message's value to '101'
+> [3] About to send back message '102' to process [2]
+> [3] Received 1st message '101' from process [2]
+> [3] increment message's value to '102'
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.:critical -trace-ti --cfg=tracing/filename:out_ti.txt --cfg=smpi/cpu_threshold:-1 -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ../../examples/smpi/smpi_replay ./out_in_ti.txt
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'smpi/cpu_threshold' to '-1'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [Jupiter:1:(0) 0.016798] [smpi_replay/INFO] Simulation time 0.0167975
+
+! output sort
+$ find ./out_ti.txt_files -type f -exec cat {} \;
+> 0 init
+> 0 send 1 1 1
+> 0 recv 1 1 1
+> 0 finalize
+> 1 init
+> 1 recv 0 1 1
+> 1 send 0 1 1
+> 1 send 2 1 1
+> 1 recv 2 1 1
+> 1 finalize
+> 2 init
+> 2 recv 1 1 1
+> 2 send 1 1 1
+> 2 send 3 1 1
+> 2 recv 3 1 1
+> 2 finalize
+> 3 init
+> 3 recv 2 1 1
+> 3 send 2 1 1
+> 3 finalize
+
+! output sort
+$ find ./out_in_ti.txt_files -type f -exec cat {} \;
+> 0 init
+> 0 send 1 1 1
+> 0 recv 1 1 1
+> 0 finalize
+> 1 init
+> 1 recv 0 1 1
+> 1 send 0 1 1
+> 1 send 2 1 1
+> 1 recv 2 1 1
+> 1 finalize
+> 2 init
+> 2 recv 1 1 1
+> 2 send 1 1 1
+> 2 send 3 1 1
+> 2 recv 3 1 1
+> 2 finalize
+> 3 init
+> 3 recv 2 1 1
+> 3 send 2 1 1
+> 3 finalize
+
+$ rm -rf ./out_ti.txt_files
+$ rm -rf ./out_in_ti.txt_files
+$ rm out_ti.txt
+$ rm out_in_ti.txt
+
+
+
+p Same test, but only using one output file for all processes
+p generate a trace with pingpong, and replay itself, then check that output trace of the second run is the same as in the first (once sorted)
+! output sort
+$ ../../smpi_script/bin/smpirun -trace-ti --cfg=tracing/filename:out_in_ti.txt --cfg=tracing/smpi/format/ti_one_file:yes -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ./pingpong -q
+> *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> == pivot=0 : pingpong [0] <--> [1]
+> == pivot=1 : pingpong [1] <--> [2]
+> == pivot=2 : pingpong [2] <--> [3]
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_in_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format/ti_one_file' to 'yes'
+> [0] About to send 1st message '99' to process [1]
+> [0] Received reply message '100' from process [1]
+> [1] About to send 1st message '100' to process [2]
+> [1] About to send back message '100' to process [0]
+> [1] Received 1st message '99' from process [0]
+> [1] Received reply message '101' from process [2]
+> [1] increment message's value to '100'
+> [2] About to send 1st message '101' to process [3]
+> [2] About to send back message '101' to process [1]
+> [2] Received 1st message '100' from process [1]
+> [2] Received reply message '102' from process [3]
+> [2] increment message's value to '101'
+> [3] About to send back message '102' to process [2]
+> [3] Received 1st message '101' from process [2]
+> [3] increment message's value to '102'
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+
+$ ../../smpi_script/bin/smpirun -ext smpi_replay --log=replay.:critical -trace-ti --cfg=tracing/filename:out_ti.txt --cfg=tracing/smpi/format/ti_one_file:yes -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ../../examples/smpi/smpi_replay ./out_in_ti.txt
+> [rank 0] -> Tremblay
+> [rank 1] -> Jupiter
+> [rank 2] -> Fafard
+> [rank 3] -> Ginette
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'smpi_simgrid.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format' to 'TI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/computing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'maxmin/precision' to '1e-9'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/model' to 'SMPI'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'network/TCP_gamma' to '4194304'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/filename' to 'out_ti.txt'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/smpi/format/ti_one_file' to 'yes'
+> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
+> [Jupiter:1:(0) 0.016798] [smpi_replay/INFO] Simulation time 0.0167976
+
+
+
+$ rm -rf ./out_ti.txt_files
+$ rm -rf ./out_in_ti.txt_files
+$ rm out_ti.txt
+$ rm out_in_ti.txt
+
+
+
perror("can't allocate send buffer");
fflush(stderr);
MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
+ exit(EXIT_FAILURE);
}
rb = (int *) malloc(size * sizeof(int));
if (!rb) {
fflush(stderr);
free(sb);
MPI_Abort(MPI_COMM_WORLD, EXIT_FAILURE);
+ exit(EXIT_FAILURE);
}
for (i = 0; i < size; ++i) {
sb[i] = rank + 1;
{
fprintf( stderr, "%s, err = %d\n", str, code );
MPI_Abort( MPI_COMM_WORLD, code );
+ exit(code);
}
int test_communicators( void )
{
fprintf( stderr, "%s, err = %d\n", str, code );
MPI_Abort( MPI_COMM_WORLD, code );
+ exit(code);
}
int test_communicators( void )
{
fprintf( stderr, "%s, err = %d\n", str, code );
MPI_Abort( MPI_COMM_WORLD, code );
+ exit(code);
}
int test_attrs( void )
if ((MPI_Aint)attribute_val != (MPI_Aint)world_rank) {
printf( "incorrect attribute value %d\n", *(int*)attribute_val );
MPI_Abort(MPI_COMM_WORLD, 1005 );
+ exit(1005);
}
return MPI_SUCCESS;
}
printf( "dup_comm key_1 not found on %d\n", world_rank );
fflush( stdout );
MPI_Abort(MPI_COMM_WORLD, 3004 );
+ exit(3004);
}
if (value != world_rank) {
printf( "dup_comm key_1 value incorrect: %ld\n", (long)value );
fflush( stdout );
MPI_Abort(MPI_COMM_WORLD, 3005 );
+ exit(3005);
}
MPI_Attr_get(dup_comm, key_3, (void **)&vvalue, &flag );
printf( "dup_comm key_3 found!\n" );
fflush( stdout );
MPI_Abort(MPI_COMM_WORLD, 3008 );
+ exit(3008);
}
MTestPrintfMsg(1, "Keyval_free key=%#x\n", key_1);
MPI_Keyval_free(&key_1 );
if ((MPI_Aint)attribute_val != (MPI_Aint)world_rank) {
printf( "incorrect attribute value %d\n", *(int*)attribute_val );
MPI_Abort(MPI_COMM_WORLD, 1005 );
+ exit(1005);
}
return MPI_SUCCESS;
}
errs++;
printf( "incorrect rank in world comm: %d\n", rank );
MPI_Abort(MPI_COMM_WORLD, 3001 );
+ exit(3001);
}
n = world_size / 2;
errs++;
printf( "incorrect lo group rank: %d\n", rank ); fflush(stdout);
MPI_Abort(MPI_COMM_WORLD, 3002 );
+ exit(3002);
}
else {
/* printf( "lo in\n" );FFLUSH; */
errs++;
printf( "rank : %d incorrect lo comm:\n", rank ); fflush(stdout);
MPI_Abort(MPI_COMM_WORLD, 3003 );
+ exit(3003);
}
}
printf( "dup_comm key_1 not found on %d\n", world_rank );
fflush( stdout );
MPI_Abort(MPI_COMM_WORLD, 3004 );
+ exit(3004);
}
if (value != world_rank) {
(long)value, world_rank );
fflush( stdout );
MPI_Abort(MPI_COMM_WORLD, 3005 );
+ exit(3005);
}
MPI_Attr_get(dup_comm, key_3, (void **)&vvalue, &flag );
printf( "dup_comm key_3 found!\n" );
fflush( stdout );
MPI_Abort(MPI_COMM_WORLD, 3008 );
+ exit(3008);
}
MPI_Keyval_free(&key_1 );
MPI_Keyval_free(&key_3 );
errs++;
printf( "incorrect split rank: %d\n", rank ); fflush(stdout);
MPI_Abort(MPI_COMM_WORLD, 3009 );
+ exit(3009);
}
MPI_Barrier(split_comm );
errs++;
printf( "incorrect ident result: %d\n", result );
MPI_Abort(MPI_COMM_WORLD, 3010 );
+ exit(3010);
}
if (lo_comm != MPI_COMM_NULL) {
errs++;
printf( "incorrect congruent result: %d\n", result );
MPI_Abort(MPI_COMM_WORLD, 3011 );
+ exit(3011);
}
}
errs++;
printf( "incorrect similar result: %d\n", result );
MPI_Abort(MPI_COMM_WORLD, 3012 );
+ exit(3012);
}
if (lo_comm != MPI_COMM_NULL) {
errs++;
printf( "incorrect unequal result: %d\n", result );
MPI_Abort(MPI_COMM_WORLD, 3013 );
+ exit(3013);
}
}
/*
#define LARGE_BUF (256 * 1024)
/* FIXME: MAX_BUF is too large */
-#define MAX_BUF (128 * 1024 * 1024)
+#define MAX_BUF (32 * 1024 * 1024)
#define LOOPS 10
__thread char * sbuf, * rbuf;
if (!displs) fprintf(stderr,"\tdispls of %zd bytes\n", comm_size * sizeof(int) );
fflush(stderr);
MPI_Abort(MPI_COMM_WORLD, -1);
+ exit(-1);
}
if (!comm_rank) {
if (tmp != (int)tmp) {
fprintf( stderr, "Integer overflow in variable tmp\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
recvcounts[i] = (int) tmp;
if (size < 2) {
fprintf( stderr, "At least 2 processes required\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Set errors return so that we can provide better information
if (count <= 0) {
fprintf( stderr, "Invalid count argument %s\n", argv[1] );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
}
buf = (int *)malloc( max_offset * sizeof(int) );
if (!buf) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
bufout = (int *)malloc( max_offset * sizeof(int) );
if (!bufout) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
initMat( comm, buf );
buf = (int *)malloc( count * 9 * sizeof(int) );
if (!buf) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
bufout = (int *)malloc( count * 9 * sizeof(int) );
if (!bufout) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i < count; i++) {
fprintf( stderr, "Unable to allocated space for buffers (%d)\n",
count );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<count; i++) {
bufin[i] = i;
errs++;
fprintf( stderr, "Failed to allocate sendbuf and/or recvbuf\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<count*size; i++)
recvbuf[i] = -1;
if (!sbuf || !rbuf) {
fprintf( stderr, "Could not allocated buffers!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
if (!sendcounts || !recvcounts || !rdispls || !sdispls) {
fprintf( stderr, "Could not allocate arg items!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
for (i=0; i<size; i++) {
sendcounts[i] = i;
if (!rbuf) {
fprintf( stderr, "Could not reallocate rbuf!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
if (!sendcounts || !recvcounts || !rdispls || !sdispls) {
fprintf( stderr, "Could not allocate arg items!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Get the neighbors */
if (!sbuf || !rbuf) {
fprintf( stderr, "Could not allocate buffers!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
if (!sbuf || !rbuf) {
fprintf( stderr, "Could not allocated buffers!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
if (!sendcounts || !recvcounts || !rdispls || !sdispls || !sendtypes || !recvtypes) {
fprintf( stderr, "Could not allocate arg items!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Note that process 0 sends no data (sendcounts[0] = 0) */
for (i=0; i<size; i++) {
if (!rbuf) {
fprintf( stderr, "Could not reallocate rbuf!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
{
int i, type_size;
MPI_Datatype type = MPI_DATATYPE_NULL;
- char *buf = NULL;
+ int *buf = NULL;
int wrank, wsize;
MPI_Init(&argc, &argv);
fprintf(stderr,"Unrecognized argument %s\n",
argv[i]);
MPI_Abort(MPI_COMM_WORLD,EXIT_FAILURE);
+ exit(EXIT_FAILURE);
}
}
if ( !sb ) {
perror( "can't allocate send buffer" );
MPI_Abort(MPI_COMM_WORLD,EXIT_FAILURE);
+ exit(EXIT_FAILURE);
}
rb = (int *)malloc(size*chunk*sizeof(int));
if ( !rb ) {
perror( "can't allocate recv buffer");
free(sb);
MPI_Abort(MPI_COMM_WORLD,EXIT_FAILURE);
+ exit(EXIT_FAILURE);
}
for ( i=0 ; i < size*chunk ; ++i ) {
sb[i] = rank + 1;
fprintf( stderr, "Number of processors must divide %d\n",
MAX_PROCESSES );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
if ( (rank < participants) ) {
fprintf( stderr, "Number of processors must divide %d\n",
MAX_PROCESSES );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
if ( (rank < participants) ) {
fprintf( stderr, "Number of processors must divide %d\n",
MAX_PROCESSES );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Comm_split(MPI_COMM_WORLD, rank<participants, rank, &test_comm);
fprintf( stderr, "Number of processors must divide %d\n",
MAX_PROCESSES );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* while (MAX_PROCESSES % participants) participants--; */
if ( (rank < participants) ) {
if (!sbuf || !rbuf) {
fprintf( stderr, "Could not allocated buffers!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
if (!sendcounts || !recvcounts || !rdispls || !sdispls) {
fprintf( stderr, "Could not allocate arg items!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
for (i=0; i<size; i++) {
sendcounts[i] = i;
if (!sbuf || !rbuf) {
fprintf( stderr, "Could not allocated buffers!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Load up the buffers */
if (!sendcounts || !recvcounts || !rdispls || !sdispls || !sendtypes || !recvtypes) {
fprintf( stderr, "Could not allocate arg items!\n" );
MPI_Abort( comm, 1 );
+ exit(1);
}
/* Note that process 0 sends no data (sendcounts[0] = 0) */
for (i=0; i<size; i++) {
if (!(cond_)) { \
fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \
MPI_Abort(MPI_COMM_WORLD, 1); \
+ exit(1); \
} \
} while (0)
if (!(cond_)) { \
fprintf(stderr, "assertion (%s) failed, aborting\n", #cond_); \
MPI_Abort(MPI_COMM_WORLD, 1); \
+ exit(1); \
} \
} while (0)
default:
fprintf(stderr, "unexpected value for l->case_num=%d)\n", (l->case_num));
MPI_Abort(comm, 1);
+ exit(1);
break;
}
}
MPI_Type_commit( &mattype );
buf = (int *)malloc( count * size * size * sizeof(int) );
- if (!buf) MPI_Abort( MPI_COMM_WORLD, 1 );
+ if (!buf) {
+ MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
+ }
bufout = (int *)malloc( count * size * size * sizeof(int) );
- if (!bufout) MPI_Abort( MPI_COMM_WORLD, 1 );
+ if (!bufout) {
+ MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
+ }
for (root = 0; root < size; root ++) {
initMat( comm, buf );
MPI_Type_commit( &mattype );
buf = (int *)malloc( count * size * size * sizeof(int) );
- if (!buf) MPI_Abort( MPI_COMM_WORLD, 1 );
+ if (!buf) {
+ MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
+ }
bufout = (int *)malloc( count * size * size * sizeof(int) );
- if (!bufout) MPI_Abort( MPI_COMM_WORLD, 1 );
+ if (!bufout) {
+ MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
+ }
for (root = 0; root < size; root ++) {
initMat( comm, buf );
err++;
fprintf(stderr, "unable to allocate send/recv buffers, aborting");
MPI_Abort(MPI_COMM_WORLD, 1);
+ exit(1);
}
for (i=0; i<size; i++)
sendbuf[i] = rank + i;
fprintf( stderr, "Could not allocate %d ints for recvcounts\n",
size );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
mycount = (1024 * 1024) / size;
for (i=0; i<size; i++)
fprintf( stderr, "Could not allocate %d ints for sendbuf\n",
mycount * size );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
idx = 0;
for (i=0; i<size; i++) {
fprintf( stderr, "Could not allocate %d ints for recvbuf\n",
mycount );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<mycount; i++) {
recvbuf[i] = -1;
fprintf( stderr, "Could not allocate %d ints for sendbuf\n",
sendcount );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<sendcount; i++) {
fprintf( stderr, "Could not allocate %d ints for recvbuf\n",
recvcount );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<recvcount; i++) {
recvbuf[i] = (long long)(-i);
fprintf( stderr, "Could not allocate %d ints for sendbuf\n",
mycount * size );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
idx = 0;
for (i=0; i<size; i++) {
fprintf( stderr, "Could not allocate %d ints for recvbuf\n",
mycount );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Reduce_scatter_block( sendbuf, recvbuf, mycount, MPI_INT, MPI_SUM,
fprintf( stderr, "Could not allocate %d int for recvcounts\n",
size );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<size; i++)
recvcounts[i] = recvcount;
fprintf( stderr, "Could not allocate %d ints for sendbuf\n",
sendcount );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<sendcount; i++) {
fprintf( stderr, "Could not allocate %d ints for recvbuf\n",
recvcount );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<recvcount; i++) {
recvbuf[i] = (long long)(-i);
recvbuf = (double *)malloc( nx * ny * sizeof(double) );
if (!recvbuf) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
sendbuf = 0;
if (myrow == 0 && mycol == 0) {
sendbuf = (double *)malloc( nx * ny * size * sizeof(double) );
if (!sendbuf) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
}
sendcounts = (int *) malloc( size * sizeof(int) );
fprintf( stderr, "Unable to allocated %d words for data\n",
3 * count );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (i=0; i<count*3; i++) {
outVal[i] = -1;
if (size < 2) {
fprintf( stderr, "This test requires at least two processes." );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
source = 0;
if (size < 4) {
fprintf( stderr, "This test requires at least four processes." );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
color = MPI_UNDEFINED;
if (size % 2) {
fprintf(stderr, "this program requires a multiple of 2 number of processes\n");
MPI_Abort(MPI_COMM_WORLD, 1);
+ exit(1);
}
excl = malloc((size / 2) * sizeof(int));
if (size < 2) {
printf("this test requires at least 2 processes\n");
MPI_Abort(MPI_COMM_WORLD, 1);
+ exit(1);
}
#ifdef TEST_IDUP
fprintf( stderr, "%s: errcode = %d, class = %d, msg = %s\n",
str, code, class, msg );
MPI_Abort( MPI_COMM_WORLD, code );
+ exit(code);
}
int main( int argc, char *argv[] )
if (size < 2) {
printf( "Size must be at least 2\n" );
MPI_Abort( MPI_COMM_WORLD, 0 );
+ exit(0);
}
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
if (size < 33) {
printf("ERROR: this test requires at least 33 processes\n");
MPI_Abort(MPI_COMM_WORLD, 1);
- return 1;
+ exit(1);
}
/* group of c0
if (size < 4) {
printf( "This test requires at least 4 processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Comm_rank( MPI_COMM_WORLD, &wrank );
if (size < 4) {
printf( "This test requires at least 4 processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
while (MTestGetIntercomm( &intercomm, &isLeft, 2 )) {
if (size < 2) {
fprintf( stderr, "This test requires at least two processes." );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
while (MTestGetIntercomm( &intercomm, &isLeft, 2 )) {
/* Test 1: Simple, 1-D cyclic decomposition */
if (AllocateGrid( 1, 3*wsize, &srcArray, &destArray ) ) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Simple cyclic with 1-dim global array */
if (PackUnpack( darraytype, srcArray, destArray, 3 )) {
fprintf( stderr, "Error in pack/unpack check\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Now, check for correct data */
for (i=0; i<3; i++) {
/* Test 2: Simple, 1-D cyclic decomposition, with block size=2 */
if (AllocateGrid( 1, 4*wsize, &srcArray, &destArray ) ) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Simple cyclic with 1-dim global array */
if (PackUnpack( darraytype, srcArray, destArray, 4 )) {
fprintf( stderr, "Error in pack/unpack check\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
loc = 0;
/* for each cyclic element */
if (px * py != wsize) {
fprintf( stderr, "An even number of processes is required\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Cyclic/Cyclic */
if (AllocateGrid( 5*px, 7*py, &srcArray, &destArray )) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Simple cyclic/cyclic. Note in C order, the [1] index varies most
if (PackUnpack( darraytype, srcArray, destArray, 5*7 )) {
fprintf( stderr, "Error in pack/unpack check\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
loc = 0;
/* Cyclic(2)/Cyclic(3) */
if (AllocateGrid( 6*px, 4*py, &srcArray, &destArray )) {
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* Block cyclic/cyclic. Note in C order, the [1] index varies most
if (PackUnpack( darraytype, srcArray, destArray, 4*6 )) {
fprintf( stderr, "Error in pack/unpack check\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
loc = 0;
fprintf( stderr, "Unable to allocate pack array of size %d\n",
packsize );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
position = 0;
MPI_Pack( (int*)srcArray, 1, darraytype, packArray, packsize, &position,
errs++;
printf( "This test requires at least 2 processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
src = 0;
#include <stdlib.h>
#include <mpi.h>
+#define equals(a, b) ((long long)(a) == (long long)(b))
+
/* assert-like macro that bumps the err count and emits a message */
#define check(x_) \
do { \
/* MPI_Type_size */
MPI_Type_size(imax_contig, &size);
- check(size == INT_MAX);
+ check(equals(size, INT_MAX));
MPI_Type_size(four_ints, &size);
- check(size == 4*sizeof(int));
+ check(equals(size, 4*sizeof(int)));
MPI_Type_size(imx4i, &size);
- check(size == MPI_UNDEFINED); /* should overflow an int */
+ check(equals(size, MPI_UNDEFINED)); /* should overflow an int */
MPI_Type_size(imx4i_rsz, &size);
- check(size == MPI_UNDEFINED); /* should overflow an int */
+ check(equals(size, MPI_UNDEFINED)); /* should overflow an int */
/* MPI_Type_size_x */
MPI_Type_size_x(imax_contig, &size_x);
- check(size_x == INT_MAX);
+ check(equals(size_x, INT_MAX));
MPI_Type_size_x(four_ints, &size_x);
- check(size_x == 4*sizeof(int));
+ check(equals(size_x, 4*sizeof(int)));
MPI_Type_size_x(imx4i, &size_x);
- check(size_x == 4LL*sizeof(int)*(INT_MAX/2)); /* should overflow an int */
+ check(equals(size_x, 4LL*sizeof(int)*(INT_MAX/2))); /* should overflow an int */
MPI_Type_size_x(imx4i_rsz, &size_x);
- check(size_x == 4LL*sizeof(int)*(INT_MAX/2)); /* should overflow an int */
+ check(equals(size_x, 4LL*sizeof(int)*(INT_MAX/2))); /* should overflow an int */
/* MPI_Type_get_extent */
MPI_Type_get_extent(imax_contig, &lb, &extent);
- check(lb == 0);
- check(extent == INT_MAX);
+ check(equals(lb, 0));
+ check(equals(extent, INT_MAX));
MPI_Type_get_extent(four_ints, &lb, &extent);
- check(lb == 0);
- check(extent == 4*sizeof(int));
+ check(equals(lb, 0));
+ check(equals(extent, 4*sizeof(int)));
MPI_Type_get_extent(imx4i, &lb, &extent);
- check(lb == 0);
+ check(equals(lb, 0));
if (sizeof(MPI_Aint) == sizeof(int))
- check(extent == MPI_UNDEFINED);
+ check(equals(extent, MPI_UNDEFINED));
else
- check(extent == imx4i_true_extent);
+ check(equals(extent, imx4i_true_extent));
MPI_Type_get_extent(imx4i_rsz, &lb, &extent);
- check(lb == INT_MAX);
- check(extent == -1024);
+ check(equals(lb, INT_MAX));
+ check(equals(extent, -1024));
/* MPI_Type_get_extent_x */
MPI_Type_get_extent_x(imax_contig, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == INT_MAX);
+ check(equals(lb_x, 0));
+ check(equals(extent_x, INT_MAX));
MPI_Type_get_extent_x(four_ints, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == 4*sizeof(int));
+ check(equals(lb_x, 0));
+ check(equals(extent_x, 4*sizeof(int)));
MPI_Type_get_extent_x(imx4i, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == imx4i_true_extent);
+ check(equals(lb_x, 0));
+ check(equals(extent_x, imx4i_true_extent));
MPI_Type_get_extent_x(imx4i_rsz, &lb_x, &extent_x);
- check(lb_x == INT_MAX);
- check(extent_x == -1024);
+ check(equals(lb_x, INT_MAX));
+ check(equals(extent_x, -1024));
/* MPI_Type_get_true_extent */
MPI_Type_get_true_extent(imax_contig, &lb, &extent);
- check(lb == 0);
- check(extent == INT_MAX);
+ check(equals(lb, 0));
+ check(equals(extent, INT_MAX));
MPI_Type_get_true_extent(four_ints, &lb, &extent);
- check(lb == 0);
- check(extent == 4*sizeof(int));
+ check(equals(lb, 0));
+ check(equals(extent, 4*sizeof(int)));
MPI_Type_get_true_extent(imx4i, &lb, &extent);
- check(lb == 0);
+ check(equals(lb, 0));
if (sizeof(MPI_Aint) == sizeof(int))
- check(extent == MPI_UNDEFINED);
+ check(equals(extent, MPI_UNDEFINED));
else
- check(extent == imx4i_true_extent);
+ check(equals(extent, imx4i_true_extent));
MPI_Type_get_true_extent(imx4i_rsz, &lb, &extent);
- check(lb == 0);
+ check(equals(lb, 0));
if (sizeof(MPI_Aint) == sizeof(int))
- check(extent == MPI_UNDEFINED);
+ check(equals(extent, MPI_UNDEFINED));
else
- check(extent == imx4i_true_extent);
+ check(equals(extent, imx4i_true_extent));
/* MPI_Type_get_true_extent_x */
MPI_Type_get_true_extent_x(imax_contig, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == INT_MAX);
+ check(equals(lb_x, 0));
+ check(equals(extent_x, INT_MAX));
MPI_Type_get_true_extent_x(four_ints, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == 4*sizeof(int));
+ check(equals(lb_x, 0));
+ check(equals(extent_x, 4*sizeof(int)));
MPI_Type_get_true_extent_x(imx4i, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == imx4i_true_extent);
+ check(equals(lb_x, 0));
+ check(equals(extent_x, imx4i_true_extent));
MPI_Type_get_true_extent_x(imx4i_rsz, &lb_x, &extent_x);
- check(lb_x == 0);
- check(extent_x == imx4i_true_extent);
+ check(equals(lb_x, 0));
+ check(equals(extent_x, imx4i_true_extent));
/* MPI_{Status_set_elements,Get_elements}{,_x} */
MPI_Get_elements(&status, MPI_INT, &elements);
MPI_Get_elements_x(&status, MPI_INT, &elements_x);
MPI_Get_count(&status, MPI_INT, &count);
- check(elements == 10);
- check(elements_x == 10);
- check(count == 10);
+ check(equals(elements, 10));
+ check(equals(elements_x, 10));
+ check(equals(count, 10));
/* set_x simple */
MPI_Status_set_elements_x(&status, MPI_INT, 10);
MPI_Get_elements(&status, MPI_INT, &elements);
MPI_Get_elements_x(&status, MPI_INT, &elements_x);
MPI_Get_count(&status, MPI_INT, &count);
- check(elements == 10);
- check(elements_x == 10);
- check(count == 10);
+ check(equals(elements, 10));
+ check(equals(elements_x, 10));
+ check(equals(count, 10));
/* Sets elements corresponding to count=1 of the given MPI datatype, using
* set_elements and set_elements_x. Checks expected values are returned by
MPI_Get_elements(&status, (type_), &elements); \
MPI_Get_elements_x(&status, (type_), &elements_x); \
MPI_Get_count(&status, (type_), &count); \
- check(elements == (elts_)); \
- check(elements_x == (elts_)); \
- check(count == 1); \
+ check(equals(elements, (elts_))); \
+ check(equals(elements_x, (elts_))); \
+ check(equals(count, 1)); \
} \
\
elements = elements_x = count = 0xfeedface; \
MPI_Get_elements_x(&status, (type_), &elements_x); \
MPI_Get_count(&status, (type_), &count); \
if ((elts_) > INT_MAX) { \
- check(elements == MPI_UNDEFINED); \
+ check(equals(elements, MPI_UNDEFINED)); \
} \
else { \
- check(elements == (elts_)); \
+ check(equals(elements, (elts_))); \
} \
- check(elements_x == (elts_)); \
- check(count == 1); \
+ check(equals(elements_x, (elts_))); \
+ check(equals(count, 1)); \
} while (0) \
check_set_elements(imax_contig, INT_MAX);
{
fprintf(stderr, "Could not make struct type."), fflush(stderr);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
memset(s_buf, 0, EL_COUNT*SIZE);
if (size < 2) {
fprintf( stderr, "This test requires at least two processes." );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
source = 0;
buf = (int *)malloc( count * 3 * sizeof(int) );
if (!buf) {
MPI_Abort( comm, 1 );
+ exit(1);
}
for (i=0; i<3*count; i++) buf[i] = -1;
if (rank == source) {
buf = (int *)malloc( count * 3 * sizeof(int) );
if (!buf) {
MPI_Abort( comm, 1 );
+ exit(1);
}
for (i=0; i<3*count; i++) buf[i] = -1;
if (rank == source) {
cmake_minimum_required(VERSION 2.6)
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
if(WIN32)
set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
else()
cmake_minimum_required(VERSION 2.6)
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
if(WIN32)
set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
else()
if (size .lt. 2) then
print *, "Must have at least 2 processes"
call MPI_Abort( 1, MPI_COMM_WORLD, ierr )
+ stop
endif
errs = 0
if (size .lt. 2) then
print *, "Must have at least 2 processes"
call MPI_Abort( 1, MPI_COMM_WORLD, ierr )
+ stop
endif
comm = MPI_COMM_WORLD
cmake_minimum_required(VERSION 2.6)
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
if(WIN32)
set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
else()
cmake_minimum_required(VERSION 2.6)
-if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C)
+if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90)
if(WIN32)
set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h")
else()
"This test requires a comm world with no more than %d processes\n",
MAX_WORLD_SIZE );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
if (size < 4) {
fprintf( stderr, "This test requiers at least 4 processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Comm_group( comm, &gworld );
if (!ranks || !ranksout) {
fprintf(stderr, "out of memory\n");
MPI_Abort(MPI_COMM_WORLD, 1);
+ exit(1);
}
/* generate a comm with the rank order reversed */
errs++;
fprintf( stderr, "This test requires at least two processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
source = 0;
dest = 1;
errs++;
fprintf( stderr, "At least 2 processes required\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
src = 0;
fprintf( stderr, "Could not allocate buffer of %d bytes\n",
bufsize );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Buffer_attach( buf, bufsize );
fprintf( stderr, "Unable to allocate a buffer of %d bytes\n",
bufsize );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Buffer_attach( buf, bufsize );
if (size < 2) {
fprintf( stderr, "Must run with at least 2 processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
fprintf( stderr, "Unable to allocate buffers of size %d\n",
n0 * (int)sizeof(int) );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
memset( buf0, -1, n0 * sizeof(int) );
memset( buf1, -1, n0 * sizeof(int) );
fprintf( stderr, "Unable to allocate buffer %d of size %ld\n",
i, (long)extent );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
}
buf = (int *)malloc( 10 * 30 * sizeof(int) );
if (size != 3) {
fprintf(stderr,"[%d] usage: mpiexec -n 3 %s\n",rank,argv[0]);
MPI_Abort(MPI_COMM_WORLD,1);
+ exit(1);
}
cols = malloc(cnt*sizeof(long long));
if (size < 2) {
printf("this test requires at least 2 processes\n");
MPI_Abort(MPI_COMM_WORLD, 1);
+ exit(1);
}
/* all processes besides ranks 0 & 1 aren't used by this test */
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Send_init( buf, n, MPI_CHAR, dest, cs+n+1, comm, &req );
MPI_Start( &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", nn);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
bsendbufsize = n + MPI_BSEND_OVERHEAD;
bsendbuf = (char *)malloc( bsendbufsize );
if (!bsendbuf) {
fprintf( stderr, "Unable to allocate %d bytes for bsend\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Buffer_attach( bsendbuf, bsendbufsize );
MPI_Bsend_init( buf, n, MPI_CHAR, dest, cs+n+2, comm, &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", nn);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Rsend_init( buf, n, MPI_CHAR, dest, cs+n+3, comm, &req );
MPI_Start( &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", n);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, n, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Ssend_init( buf, n, MPI_CHAR, dest, cs+n+4, comm, &req );
MPI_Start( &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", nn);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (dest > r) r = dest;
fprintf( stderr, "This program requires %d processes\n", r-1 );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
if (rank == src) {
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MTestPrintfMsg( 1, "(%d) About to create isend and cancel\n",cs );
MPI_Isend( buf, n, MPI_CHAR, dest, cs+n+1, comm, &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", nn );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
bsendbufsize = n + MPI_BSEND_OVERHEAD;
bsendbuf = (char *)malloc( bsendbufsize );
if (!bsendbuf) {
fprintf( stderr, "Unable to allocate %d bytes for bsend\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Buffer_attach( bsendbuf, bsendbufsize );
MTestPrintfMsg( 1, "About to create and cancel ibsend\n" );
{
fprintf( stderr, "Unable to allocate %d bytes\n", nn);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MTestPrintfMsg( 1, "About to create and cancel irsend\n" );
MPI_Irsend( buf, n, MPI_CHAR, dest, cs+n+3, comm, &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", n);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, n, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MTestPrintfMsg( 1, "About to create and cancel issend\n" );
MPI_Issend( buf, n, MPI_CHAR, dest, cs+n+4, comm, &req );
{
fprintf( stderr, "Unable to allocate %d bytes\n", nn);
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
MPI_Recv( btemp, nn, MPI_CHAR, 0, tag, comm, &status );
free(btemp);
if (!buf) {
fprintf( stderr, "Unable to allocate %d bytes\n", n );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
if (rank == source) {
fprintf( stderr, "This program requires a comm_world no larger than %d",
MAXPES );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (size = 1; size <= MYBUFSIZE ; size += size) {
if (size < 2) {
printf( "This test requires at least 2 processes\n" );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
for (testnum=0; msgsizes[testnum] > 0; testnum++) {
fprintf( stderr, "Unable to allocate %d bytes\n",
msgSize );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
}
partner = (rank + 1) % size;
fprintf( stderr, "%s\n", msg );
fflush( stderr );
MPI_Abort( MPI_COMM_WORLD, 1 );
+ exit(1);
}
/* ------------------------------------------------------------------------ */
static void MTestResourceSummary( FILE *fp )
! setenv LD_LIBRARY_PATH=../../lib
! output sort
$ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 4 ./pingpong -q
-> *** Ping-pong test (MPI_Send/MPI_Recv) ***
+> *** Ping-pong test (MPI_Send/MPI_Recv) ***
> == pivot=0 : pingpong [0] <--> [1]
> == pivot=1 : pingpong [1] <--> [2]
> == pivot=2 : pingpong [2] <--> [3]
# (since we want to pass it to the child, it has to be redefined before each command)
# Go for the first test
p Test Reduce with 3 processes
+! output sort
$ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 3 ./reduce -q
> [rank 0] -> Tremblay
> [rank 1] -> Jupiter
# second test
! setenv LD_LIBRARY_PATH=../../lib
+! output sort
p Test Reduce with 5 processes
$ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 5 ./reduce -q
> [rank 0] -> Tremblay
> ok.
# third test
+! output sort
! setenv LD_LIBRARY_PATH=../../lib
p Test Reduce with 12 processes
$ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 12 ./reduce -q
p Test reduce_scatter
$ ../../smpi_script/bin/smpirun -map -hostfile ${srcdir:=.}/hostfile -platform ${srcdir:=.}/../../examples/msg/small_platform.xml -np 16 --log=xbt_cfg.thres:critical ./reduce_scatter_coll
-> No Errors
+> No Errors
> You requested to use 16 processes, but there is only 5 processes in your hostfile...
> [0.000000] [surf_config/INFO] Switching workstation model to compound since you changed the network and/or cpu model(s)
> [rank 0] -> Tremblay
xbt_init(&argc,argv);
XBT_INFO("Allocating a new heap");
- heapA = xbt_mheap_new(-1, ((char*)sbrk(0)) + BUFFSIZE);
+ unsigned long mask = ~((unsigned long)getpagesize() - 1);
+ void *addr = (void*)(((unsigned long)sbrk(0) + BUFFSIZE) & mask);
+ heapA = xbt_mheap_new(-1, addr);
if (heapA == NULL) {
perror("attach 1 failed");
fprintf(stderr, "bye\n");
int status = TRACE_platform_graph_export_graphviz (graphvizFile);
if (status == 0){
- XBT_INFO ("%s expects --cfg=tracing:1 --cfg=tracing/platform:1", argv[0]);
+ XBT_INFO ("%s expects --cfg=tracing:yes --cfg=tracing/platform:yes", argv[0]);
}
#else
XBT_INFO ("works only if simgrid was compiled with tracing enabled.");
#! ./tesh
-$ ${bindir:=.}/graphicator ${srcdir:=.}/teshsuite/simdag/platforms/one_cluster.xml --cfg=tracing:1 --cfg=tracing/platform:1 test.dot
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to '1'
-> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to '1'
+$ ${bindir:=.}/graphicator ${srcdir:=.}/teshsuite/simdag/platforms/one_cluster.xml --cfg=tracing:yes --cfg=tracing/platform:yes test.dot
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing' to 'yes'
+> [0.000000] [xbt_cfg/INFO] Configuration change: Set 'tracing/platform' to 'yes'
$ rm test.dot
# Valgrind suppressions for stuff that we cannot control
-# Memory leak in dash
-# dash is actually used when checking the "mkfile" command in tesh
+# Memory leaks in standard tools (e.g. dash, tail, or sort)
{
- Memory leak in /bin/dash
+ Memory leak in /bin tools
Memcheck:Leak
...
- obj:/bin/dash
+ obj:/bin/*
}
-# We also don't want to be annoyed by leaks in /usr/bin/tail
{
- Memory leak in /usr/bin/tail
+ Memory leak in /usr/bin tools
Memcheck:Leak
...
- obj:/usr/bin/tail
+ obj:/usr/bin/*
}
# There's a constant leak of 56 bytes in the depths of libc which
set(tesh_files
${tesh_files}
${CMAKE_CURRENT_SOURCE_DIR}/setenv.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/set-ignore-output.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/set-output-ignore.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/set-output-sort.tesh
+ ${CMAKE_CURRENT_SOURCE_DIR}/set-output-sort-1.tesh
${CMAKE_CURRENT_SOURCE_DIR}/set-return.tesh
${CMAKE_CURRENT_SOURCE_DIR}/set-signal.tesh
${CMAKE_CURRENT_SOURCE_DIR}/set-timeout.tesh
${CMAKE_CURRENT_SOURCE_DIR}/background.tesh
- ${CMAKE_CURRENT_SOURCE_DIR}/basic2.tesh
${CMAKE_CURRENT_SOURCE_DIR}/basic.tesh
${CMAKE_CURRENT_SOURCE_DIR}/bg-basic.tesh
${CMAKE_CURRENT_SOURCE_DIR}/bg-set-signal.tesh
< 997 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
< 998 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
< 999 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-$ wc -c
-> 150000
+$ sed -n '$='
+> 1000
p And now, a read/write test
$ cat tmp_fich
> TOTO TUTU
+! expect return 2
+! output ignore
+< $ cat tmp_fich
+< > TUTU TOTO
+$ ${bindir:=.}/tesh --enable-coverage
+
$ rm tmp_fich
p And now, some multilines examples
+p Really basic multiline
< a
< b
< c
> c
> d
-$ wc -l tmp_fich
-> 4 tmp_fich
+$ sed -n '$=' tmp_fich
+> 4
$ rm tmp_fich
-$ ${bindir:=.}/tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n' basic2.tesh
-> Enable coverage
-> Test suite `basic2'
-> [basic2:3] Test sorting and filtering of output
-> [basic2:5] true
-> [basic2:8] true
-> [basic2:10] printf 'profiling: foo\\n'
-> [basic2:12] printf 'profiling: foo'
-> [basic2:15] printf 'profiling: foo\\n'
-> [basic2:18] printf 'profiling: foo'
-> [basic2:20] printf 'a\\nb\\nc\\nd\\n'
-> [basic2:26] printf 'a\\nb\\nc\\nd'
-> [basic2:33] printf 'c\\nd\\nb\\na\\n'
-> [basic2:40] printf 'c\\nd\\nb\\na'
-> [basic2:46] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz\\n'
-> [basic2:52] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz'
-> [basic2:59] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz\\n'
-> [basic2:66] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz'
-> Test suite `basic2' OK
+p Now, check for spaces in input
+
+p * leading and trailing spaces...
+< a
+< b
+< c
+$ sed 's/ /_/g'
+> __a
+> _b_
+> c__
+
+p * empty lines...
+< a
+<
+< c
+$ sed '2s/^/b/'
+> a
+> b
+> c
+
+<
+< b
+< c
+$ sed '1s/^/a/'
+> a
+> b
+> c
+
+p Now that input should be good, check for spaces in output
+
+p * leading spaces...
+< _x
+$ sed 's/_/ /'
+> x
+
+! expect return 2
+! output ignore
+< < _x
+< $ sed 's/_/ /'
+< > x
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < x
+< $ cat
+< > x
+$ ${bindir:=.}/tesh --enable-coverage
+
+p * trailing spaces...
+< x_
+$ sed 's/_/ /'
+> x
+
+! expect return 2
+! output ignore
+< < x_
+< $ sed 's/_/ /'
+< > x
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < x
+< $ cat
+< > x
+$ ${bindir:=.}/tesh --enable-coverage
+
+p * empty lines...
+< a
+<
+< c
+$ cat
+> a
+>
+> c
+
+! expect return 2
+! output ignore
+< < a
+< <
+< < c
+< $ cat
+< > a
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < a
+< < c
+< $ cat
+< > a
+< >
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
+
+<
+< b
+< c
+$ cat
+>
+> b
+> c
+
+! expect return 2
+! output ignore
+< <
+< < b
+< < c
+< $ cat
+< > b
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
+
+! expect return 2
+! output ignore
+< < b
+< < c
+< $ cat
+< >
+< > b
+< > c
+$ ${bindir:=.}/tesh --enable-coverage
> Test suite from stdin
> [(stdin):1] ./return1
> Test suite `(stdin)': NOK (<(stdin):1> returned code 1)
-> Output of <(stdin):1> so far:
+> Output of <(stdin):1> so far:
> ||
$ cd ..
> Test suite from stdin
> [(stdin):1] ./segfault
> Test suite `(stdin)': NOK (<(stdin):1> got signal SIGSEGV)
-> Output of <(stdin):1> so far:
+> Output of <(stdin):1> so far:
> ||
$ cd ..
}
xbt_strbuff_chomp(rctx->output_got);
xbt_strbuff_chomp(rctx->output_wanted);
- xbt_strbuff_trim(rctx->output_got);
- xbt_strbuff_trim(rctx->output_wanted);
/* Check for broken pipe */
if (rctx->brokenpipe)
xbt_dynar_t a = xbt_str_split(rctx->output_got->data, "\n");
char *out = xbt_str_join(a, "\n||");
xbt_dynar_free(&a);
- XBT_INFO("Output of <%s> so far: \n||%s", rctx->filepos, out);
+ XBT_INFO("Output of <%s> so far:\n||%s", rctx->filepos, out);
free(out);
} else if (rctx->output == e_output_check
&& (rctx->output_got->used != rctx->output_wanted->used
xbt_dynar_t a = xbt_str_split(rctx->output_got->data, "\n");
char *out = xbt_str_join(a, "\n||");
xbt_dynar_free(&a);
- XBT_INFO("Here is the (ignored) command output: \n||%s", out);
+ XBT_INFO("Here is the (ignored) command output:\n||%s", out);
free(out);
}
-#! ./tesh
-
p Test sorting and filtering of output
$ true
--- /dev/null
+#! ./tesh
+
+p This tests whether TESH correctly sorts command output
+
+$ ${bindir:=.}/tesh --enable-coverage --log='log.thresh:info tesh.fmt:%m%n' set-output-sort-1.tesh
+> Enable coverage
+> Test suite `set-output-sort-1'
+> [set-output-sort-1:1] Test sorting and filtering of output
+> [set-output-sort-1:3] true
+> [set-output-sort-1:6] true
+> [set-output-sort-1:8] printf 'profiling: foo\\n'
+> [set-output-sort-1:10] printf 'profiling: foo'
+> [set-output-sort-1:13] printf 'profiling: foo\\n'
+> [set-output-sort-1:16] printf 'profiling: foo'
+> [set-output-sort-1:18] printf 'a\\nb\\nc\\nd\\n'
+> [set-output-sort-1:24] printf 'a\\nb\\nc\\nd'
+> [set-output-sort-1:31] printf 'c\\nd\\nb\\na\\n'
+> [set-output-sort-1:38] printf 'c\\nd\\nb\\na'
+> [set-output-sort-1:44] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz\\n'
+> [set-output-sort-1:50] printf 'a\\nprofiling: foo\\nprofiling: bar\\nb\\nc\\nd\\nprofiling: baz'
+> [set-output-sort-1:57] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz\\n'
+> [set-output-sort-1:64] printf 'c\\nprofiling: foo\\nprofiling: bar\\nd\\nb\\na\\nprofiling: baz'
+> Test suite `set-output-sort-1' OK
+
+p Check the default prefix length (19) for "output sort"
+! output sort
+< 12345678901234567 B line
+< 12345678901234567 A line
+$ cat
+> 12345678901234567 A line
+> 12345678901234567 B line
+
+! output sort
+< 123456789012345678 B line
+< 123456789012345678 A line
+$ cat
+> 123456789012345678 B line
+> 123456789012345678 A line
+
+! expect return 2
+! output ignore
+< ! output sort
+< < 123456789012345678 B line
+< < 123456789012345678 A line
+< $ cat
+< > 123456789012345678 A line
+< > 123456789012345678 B line
+$ ${bindir:=.}/tesh --enable-coverage
+
+p Check user-defined prefix length for "output sort"
+! output sort 5
+< 000 B line
+< 000 A line
+$ cat
+> 000 A line
+> 000 B line
+
+! output sort 4
+< 000 B line
+< 000 A line
+$ cat
+> 000 B line
+> 000 A line
+
+! expect return 2
+! output ignore
+< ! output sort 4
+< < 000 B line
+< < 000 A line
+< $ cat
+< > 000 A line
+< > 000 B line
+$ ${bindir:=.}/tesh --enable-coverage