My experience using loom for a load generator
Eric Ackermann
eric.ackermann at student.hpi.de
Fri May 22 16:58:13 UTC 2020
Good evening,
as this load generator is still unpublished work, I can not get into too much detail. It will be OpenSourced in the near future, however.
What I can say is that the created threads may perform 1 or more Http requests using async-http-client, depending on the configured scenario. They do block on CompletableFuture.get(), waiting for the response, to retrieve the result. Also, they may perform filesystem I/O using AsynchronousFileChannel, again blocking on CompletableFuture.get(). And particularly in the scenario I described in my last mail, all threads might need to be synchronised using semaphores at some point.
That almost exactly 10000 requests per second were reached was a coincidence. When I altered the scenario to 10000 threads sending 10 requests each, I reached 12877 requests per second (Loom) and 12658 (Kotlin). By the way, I used 100 parallel requests.
Interestingly, while for the Kotlin example the CPU was utilised at 100% (meaning all cores fully utilised) during the whole test, when using Loom it stayed at 75% during most of the tests for both scenarios. I will get back to you on monday. I need to improve synchronisation in some parts of the software since it was optimised for the Kotlin scenario and might slow the program down. Also, I will do some performance analysis using Java Mission Control and Windows performance monitor.
Kind regards,
Eric Ackermann
More information about the loom-dev
mailing list