Alexandre Brown
11/27/2021, 1:53 PMBig Chungus
11/27/2021, 2:45 PMAlexandre Brown
11/27/2021, 2:53 PMnapperley
11/27/2021, 10:42 PMnapperley
11/27/2021, 10:47 PMnapperley
11/27/2021, 10:51 PMAlexandre Brown
11/27/2021, 11:03 PMnordiauwu
11/28/2021, 12:56 PMhttps://i.imgur.com/ZAeQEJj.pngβΎ
Alexandre Brown
11/28/2021, 1:17 PMAlexandre Brown
11/28/2021, 1:20 PMnordiauwu
11/28/2021, 1:23 PMnapperley
11/28/2021, 11:50 PMOleg Yukhnevich
11/29/2021, 6:02 AMnordiauwu
11/29/2021, 6:02 AMOleg Yukhnevich
11/29/2021, 6:03 AMnordiauwu
11/29/2021, 6:09 AMe5l
11/29/2021, 10:46 AMjvm
. I guess the startup time and workload without warm up should be bettere5l
11/29/2021, 10:46 AMe5l
11/29/2021, 10:49 AMslow workloads
- we will make it run much faster and better.e5l
11/29/2021, 10:49 AMnordiauwu
11/29/2021, 10:57 AMe5l
11/29/2021, 11:09 AMnordiauwu
11/29/2021, 11:41 AMab
runs isn't enough to get fully warmed up.
JVM
Peak throughput: 2700~ RPS
Peak memory usage: 59~ MB
Executable size: 10 MB
K\N (new MM)
Peak throughput: 1400~ RPS
Peak memory usage: 16~ MB
Executable size: 5 MB
GraalVM
Peak throughput: 5000~ RPS
Peak memory usage: 89~ MB
Executable size: 38 MB
I also took a look at locust.io as @Alexandre Brown suggested, it's clearly a great tool for simulating real user behavior but a bit overkill for our "Hello World" application, so I ended up running ab -n 1000 -c 10 -k
10 times for each platform.
The source code is the same for all platforms - https://pastebin.com/VvZ9UnzYe5l
11/29/2021, 11:46 AMnordiauwu
11/29/2021, 11:47 AMAlexandre Brown
11/29/2021, 1:09 PMnordiauwu
11/29/2021, 4:01 PMnordiauwu
11/29/2021, 4:34 PMAlexandre Brown
11/29/2021, 4:42 PMAlexandre Brown
11/29/2021, 4:42 PMnordiauwu
11/29/2021, 4:44 PMAlexandre Brown
11/29/2021, 4:46 PMnordiauwu
11/29/2021, 4:47 PMAlexandre Brown
11/29/2021, 4:47 PMAlexandre Brown
11/29/2021, 4:48 PMnordiauwu
11/29/2021, 4:49 PMAlexandre Brown
11/29/2021, 4:49 PMnordiauwu
11/29/2021, 4:50 PMAlexandre Brown
11/29/2021, 4:53 PM--static
this will create a static native image which does not need anything to run (as opposed to a mostly static image). This could potentially reduce the size of it. I'd be curious to see the benchmark results with a --static
image. This should reduce the size of the executable.Alexandre Brown
11/29/2021, 4:55 PMAlexandre Brown
11/29/2021, 4:58 PM--static
is not negligible because it means you can create a docker image using FROM SCRATCH instead of a base image with OS etc.nordiauwu
11/29/2021, 4:59 PM--static
in the near future and let you knowAlexandre Brown
11/29/2021, 5:03 PMnordiauwu
11/29/2021, 5:03 PMnapperley
11/29/2021, 8:17 PMnordiauwu
12/01/2021, 12:25 PMkevin.cianfarini
12/02/2021, 7:22 PMe5l
12/03/2021, 8:44 AMselect
it is compatible with allmost every platforme5l
12/03/2021, 8:45 AMElena Lepilkina
12/03/2021, 11:31 AMbinaryOptions["freezing"] = "disabled"
to build and run with new K/N memory MM? Or did you build ktor locally? What ktor version did you use?nordiauwu
12/03/2021, 12:59 PMAlexandre Brown
12/03/2021, 1:05 PMElena Lepilkina
12/03/2021, 1:11 PMnordiauwu
12/03/2021, 1:13 PMnordiauwu
12/03/2021, 1:19 PMElena Lepilkina
12/03/2021, 1:24 PMgradle.properties
org.gradle.jvmargs=-Xmx2048m
kevin.cianfarini
12/03/2021, 3:54 PMIβm not sure if the different multiplexing will give much performance boost at this level of load, but we can accept PR with different a implementation@e5l can you clarify? if io isnβt the bottleneck in ktor native, what do you think is limiting throughput?
e5l
12/03/2021, 5:09 PMe5l
12/03/2021, 5:11 PMkevin.cianfarini
12/03/2021, 6:38 PMElena Lepilkina
12/13/2021, 2:52 PM~15%
with same ktor version and disablede freezing. Also 1.6.20 will include one more flag that you can try -Xgc=cms
that enables concurrent mark and sweep strategy that should also speed up this sample a bit (3-5%
). Please, pay attention that results may differ from platform to platform so numbers of improvements can differ.napperley
12/13/2021, 10:18 PMnapperley
12/13/2021, 10:19 PMElena Lepilkina
12/14/2021, 8:17 AMDoes the ~15% refer to throughput?Yes
What is theΒ defaultΒ GC used by the K/N's new MM?Now stop-the-world mark and sweep . But later stop-the-world mark + concurrent sweep that now is under flag should become default