Changes for 1.5.1

55 views
Skip to first unread message

Michael Truog

unread,
Aug 11, 2015, 12:40:36 AM8/11/15
to cloudi-q...@googlegroups.com
Hi,

There are a few updates related to the release of 1.5.1:

In the develop branch (at https://github.com/CloudI/CloudI) there are various changes to take advantage of Erlang/OTP 18.0. With these changes, the maximum request rate between two Erlang CloudI services has increased in two separate ways, as shown in a summary below:

Erlang/OTP 18.0 with the service implementation using maps in the CloudI develop branch: 23820 requests/second
Erlang/OTP 18.0 with the service implementation using dict in the CloudI develop branch: 18972 requests/second
Erlang/OTP 17.5 with the service implementation using dict in the CloudI develop branch: 15455 requests/second

These results were just part of a quick check of the recent changes. I plan on doing loadtesting before the release of 1.5.1, which will provide more detailed performance data. However, these results were using the configuration at https://github.com/CloudI/CloudI/blob/develop/src/tests/request_rate/results/results_v1_4_0/setup/cloudi_erlang.conf with the machine described at https://github.com/CloudI/CloudI/tree/develop/src/tests/http_req#machine-2 (with the rate (i.e., the sending rate) sustained for at least 25 minutes). The test data above shows an increase of 3517 requests/second when using Erlang/OTP 18.0 instead of Erlang/OTP 17.5. There is also an increase of 4848 requests/second when using maps instead of dict within the cloudi_core source code for the service implementation (when using Erlang/OTP 18.0, since maps are considered stable in the 18.0 release). The results above were only using the service configuration process count set at 1 for both the sender and
receiver.

During this testing I noticed I was able to crash the Erlang/OTP 17.5 (using the tarball from the Erlang download page) compilation due to excessive memory consumption. However, that would be a GC bug within the 17.5 release that was fixed before the 18.0 release of Erlang/OTP (probably the OTP-12821 erts bug fixed in the Erlang/OTP 17.5.6.1 tag, though I have not confirmed that), and it took about 1 hour of running the test described above (which maximizes the request rate between two Erlang CloudI services).. So, it would be best to avoid the 17.5 release of Erlang/OTP and use the 18.0 release instead. If you need to you can always keep using R16B03-1, since the R16 compatibility will remain in the future. For the performance gains described above, use Erlang/OTP 18.0 with the develop branch of CloudI.

Within the develop branch, there is also a web front-end for CloudI that provides some basic functionality using the CloudI Service API. This is a contribution from Bruce Kissinger for the 1.5.1 release of CloudI. With the default CloudI configuration browse to http://localhost:6464/cloudi/ to see the dashboard.

Before the 1.5.1 release there will be loadtesting and work on a user tutorial for CloudI service development. Reply if you have questions about any of the information above, or comments/suggestions.

Thanks,
Michael

Reply all
Reply to author
Forward
0 new messages