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