github shadow/shadow v1.12.0

latest releases: v2.0.0, v2.0.0-pre.4, v2.0.0-pre.3...
pre-release6 years ago

This is the first release in the v1.12.x series and may have bugs.
Please use with caution and report bugs on GitHub if you find them.

This release contains a new loader, a new high-performance logging
system, and new event scheduling and load balancing algorithms.

New loader

This release contains significant changes to the plug-in build and
runtime systems. We introduce a new loader, called elf-loader, that
will load plug-ins into their own namespace for each node in the
simulation. As a result, applications that are run in Shadow are
completely independent of one another, including library
dependencies. This should allow for less lock contention: for
example, thousands of nodes running Tor+libevent+openssl are no
longer sharing libevent and openssl and so no longer need to lock
accesses to the corresponding global variables.

Because we are now using our own custom loader and loading
plug-ins in independent namespaces, we no longer need the custom
LLVM pass to extract plug-in state and also no longer need to build
Shadow with LLVM/Clang. The build time should be dramatically
reduced as a result, and we will no longer have to worry about
LLVM-related bugs.

High-performance Logging

A new logging facility was written to replace the GLib logger, which
itself was using a global lock that harms Shadow performance when
using multiple Shadow worker threads. The new logger is thread-aware
and minimizes thread contention.

Scheduling framework

A new modular scheduling framework is introduced that allows for the
implementation of a variety of scheduling policies. Several policies
have been implemented in an attempt to reduce thread contention. One
such policy introduces the ability of idle threads to dynamically
process work from other busy threads, thanks to plug-in migration
support from the new elf-loader.

Other changes

Several other improvements have been made; in particular, several new
test cases have been implemented and bugs found using those tests
have been fixed. Finally, the project layout has changed a bit to
better incorporate the changing codebase.

Important notes

The way in which Shadow experiments are run is slightly changed in this
release. All experiments can now be run by directly invoking the shadow
command: the helper shims that previously set up some environment
variables before running Shadow are no longer necessary. To make this
possible, the shadow.config.xml format has been changed slightly to
allow new attributes in the opening <shadow> tag. To convert an old
config file to the new format, use the new script:
https://github.com/shadow/shadow-plugin-tor/blob/v1.12.0/tools/convert_to_dlmopen.py

Don't miss a new shadow release

NewReleases is sending notifications on new releases.