OTP_R15A: R15 pre-release

November 23, 2011 · by Kenneth Lundin

We have recently pushed a new master to GitHub tagged OTP_R15A.

This is a stabilized snapshot of the current R15 development (to be released as R15B on December 14:th) which, among other things, includes:

OTP-9468  ’Line numbers in exceptions’

OTP-9451  ’Parallel make’

OTP-4779  A new GUI for Observer. Integrating pman, etop and tv into                     observer with tracing facilities.

OTP-7775  A number of memory allocation optimizations have been              implemented. Most optimizations reduce contention caused by              synchronization between threads during allocation and              deallocation of memory. Most notably:              Synchronization of memory management in scheduler specific              allocator instances has been rewritten to use lock-free              synchronization.

             Synchronization of memory management in scheduler specific              pre-allocators has been rewritten to use lock-free              synchronization.

             The ‘mseg_alloc’ memory segment allocator now use scheduler              specific instances instead of one instance. Apart from              reducing contention this also ensures that memory allocators              always create memory segments on the local NUMA node on a              NUMA system.

OTP-9632  An ERTS internal, generic, many to one, lock-free queue for              communication between threads has been introduced. The many              to one scenario is very common in ERTS, so it can be used in              a lot of places in the future. Currently it is used by              scheduling of certain jobs, and the async thread pool, but              more uses are planned for the future.

             Drivers using the driver_async functionality are not              automatically locked to the system anymore, and can be              unloaded as any dynamically linked in driver.

             Scheduling of ready async jobs is now also interleaved in              between other jobs. Previously all ready async jobs were              performed at once.

OTP-9631  The ERTS internal system block functionality has been              replaced by new functionality for blocking the system. The              old system block functionality had contention issues and              complexity issues. The new functionality piggy-backs on              thread progress tracking functionality needed by newly              introduced lock-free synchronization in the runtime system.              When the functionality for blocking the system isn’t used,              there is more or less no overhead at all. This since the              functionality for tracking thread progress is there and              needed anyway.

… and much much more.

This is not a full release of R15 but rather a pre-release. Feel free to try our R15A release and get back to us with your findings.

Your feedback is important to us and highly welcomed.

Regards,

The OTP Team