[erlang-questions] [ANN] CloudI 1.2.1 Released!

Michael Truog mjtruog@REDACTED
Sun Mar 31 07:01:13 CEST 2013

Download 1.2.1 from http://bit.ly/H8WhYU

What is CloudI?
A Cloud at the lowest level!

CloudI (http://cloudi.org) is a "universal integrator" using an Erlang core, with its actor model, to pursue efficiency, fault-tolerance and scalability.  The CloudI API provides a minimal interface to communicate among actors that are called services, so programming language agnostic, database agnostic, and messaging bus agnostic integration can occur.  CloudI currently integrates with the programming languages Erlang, C/C++, Java, Python, and Ruby, the databases PostgreSQL, MySQL, couchdb, memcached, and tokyotyrant, the messaging bus ZeroMQ and the internal CloudI messaging.  HTTP is also supported for easy integration with cowboy.  If anyone is willing to get involved, don't hesitate to contact me or start looking at the code.

This release focused on performance issues based on loadtesting and profiling.  The latest loadtest results are summarized at http://bit.ly/ZPWojG .  The gory details are below:

  * Performance issues with the version 1.2.0 release were addressed here.
    It became clear after loadtesting that using a single Erlang process
    instead of two Erlang processes for each internal service caused much
    more latency under heavy load for internal services that receive a
    large amount of throughput. While this may be an obvious conclusion,
    the latency was judged to be significant after loadtesting, so duo_mode
    was added as an internal service configuration option to provide a
    service with two Erlang processes instead of a single Erlang process
    (which provides performance similar to what was seen previous to
     version 1.2.0, but with slightly less latency, caveat: python_c
     suffered due to changes for the request timeout adjustment).
    The duo_mode option being set to true makes sure to provide an Erlang
    process for receiving service requests while the main Erlang process
    handles sending service requests, so that the service messaging flow
    is able to more fully exploit the Erlang VM scheduling
    (i.e., duo_mode is a duplex communication mode).
  * The exception handling overhead has become a source of latency under load
    when using the request_timeout_adjustment. The request_timeout_adjustment
    being set to false avoids the extra latency for all CloudI API
    implementations except python_c (so the python_c performance gains
    were sacrificed due to usage of python exception handling, with the
    version 1.2.0 release). So, the python_c latency will be addressed
    in the next release.
  * Added more service configuration options:
      * request_pid_uses, request_pid_options, info_pid_uses, info_pid_options -
        to provide more control over internal service garbage collection
      * duo_mode - to provide better performance for high-throughput internal
      * response_timeout_adjustment - to avoid latency typical with the
        erlang:cancel_timer/1 function call
  * cowboy was updated to 0.8.2 and misultin was removed
  * loadtests were done to verify the reduced latency and to test the new
    service configuration options
    (results+config are at src/tests/http_req/loadtest/results_v1_2_1/)
  * ZeroMQ integration received more testing and changes to make it more robust

Please mention any problems, issues, or ideas!


More information about the erlang-questions mailing list