Cross-compiled simulation testing

During development of the simulation cross-compile framework, we saw a significant number of desynchronization errors when running the simulation. We also saw process memory usage increase. This page provides test results to quantify these issues and decide whether to issue a pull request for the cross-compilation work.

Based on these results, I plan to proceed with the pull request. However, I recommend the amd64-windows firmware be labeled experimental and that we solicit user feedback. I also plan to file a bug for the memory usage.

Test Runs

A simulation test run used a three-mote simulation, with two nodes one hop away from the RPL root. The link quality between each node to the root was set to a 1.0 PDR. Each test run lasted approximately six hours. We used the OpenVisualizer develop_SW-112 branch to run the simulation.

Guide to table columns:

  • Arch-OS, CPU  Firmware architecture, and the Intel CPU architecture on which the test was run. Windows tests were run on Windows 7.
  • FW Branch  Most tests run on the FW-177i branch of the kb2ma repository, but a couple of runs used the current openwsn-fw develop branch.
  • Elapsed ASN  Difference between ASN at end vs. start of run, on RPL root.
  • Memory Consumed  Process memory use as reported by Windows Task Manager or Linux pidstat. Top value is normalized on elapsed ASN.
  • Desync Errors  Count of desynchronization errors reported in OpenVisualizer log. Top value is normalized on elapsed ASN.
Arch-OS, CPUFW BranchElapsed ASNMemory ConsumedDesync Errors
x86-windows, i3FW-17714.9M slots132K slots/MiB
113 MiB
877K slots/error
17 errors
x86-windows, i3develop,
native compile
16.0M slots

133K slots/MiB
121 MiB

593K slots/error
27 errors
x86-windows, i7FW-17726.3M slots

199K slots/MiB
132 MiB

560K slots/error
47 errors
amd64-windows, i7FW-17727.7M slots73.8K slots/MiB
375 MiB
577K slots/error
48 errors
amd64-windows, i7FW-17727.2M slots73.9K slots/MiB
369 MiB
567K slots/error
48 errors
amd64-windows, i3FW-17715.7M slots73.7K slots/MiB
214 MiB
563K slots/error
28 errors
amd64-linux, i5FW-17712.6M slots68.6K slots/MiB
184 MiB

843K slots/error
15 errors

amd64-linux, i5FW-17710.5M slots68.9K slots/MiB
152MiB
955K slots/error
11 errors
amd64-linux, i5develop10.5M slots

68.7K slots/MiB
153 MiB

501K slots/error
21 errors

The first run of amd64-windows on the i3 CPU (not in the table above) failed after around four hours. When we observed the run after six hours, ASN was not increasing, but process memory was fluctuating within a few KB, and CPU usage was 0. There was no output on the terminal to indicate an error occurred.

Discussion

The x86-windows FW-177 firmware performed no worse than the develop firmware. The error rate on the amd64-windows was consistently at 500K - 600K slots/error, but some of the x86-windows and amd64-linux runs showed this same error rate.

There is clearly a memory leak in the OpenVisualizer process, regardless of the firmware used, architecture, or operating system.

It is surprising that the i5-based Linux simulations ran significantly slower than the i3-based Windows simulations.