From d64f7f4f27c3bb8ebfd052bfa2ff1965207d9dab Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Fri, 28 Feb 2025 13:49:05 +0800 Subject: [PATCH] added performance benchmarks --- README.md | 7 +++- doc/benchmarks.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++ gradle.properties | 2 +- 3 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 doc/benchmarks.md diff --git a/README.md b/README.md index 343f1f5..b78571c 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ RBCS helps teams become more productive and efficient. - [Plugins](#plugins) - [Client Tools](#rbcs-client) - [Logging](#logging) +- [Performance](#performance) - [FAQ](#faq) @@ -78,7 +79,7 @@ writing data to the disk, that you can use for testing If you are on a Linux X86_64 machine you can download the native executable from [here](https://gitea.woggioni.net/woggioni/-/packages/maven/net.woggioni:rbcs-cli/). It behaves the same as the jar file but it doesn't require a JVM and it has faster startup times. -becausue of GraalVm's [closed-world assumption](https://www.graalvm.org/latest/reference-manual/native-image/basics/#static-analysis), +because of GraalVM's [closed-world assumption](https://www.graalvm.org/latest/reference-manual/native-image/basics/#static-analysis), the native executable does not supports plugins, so it comes with all plugins embedded into it. ## Integration with build tools @@ -347,6 +348,10 @@ can be overridden with `-Dlogback.configurationFile=path/to/custom/configuration [Logback documentation](https://logback.qos.ch/manual/configuration.html) for more details about how to configure Logback +## Performance + +You can check performance benchmarks [here](doc/benchmarks.md) + ## FAQ ### Why should I use a build cache? diff --git a/doc/benchmarks.md b/doc/benchmarks.md new file mode 100644 index 0000000..a41b321 --- /dev/null +++ b/doc/benchmarks.md @@ -0,0 +1,87 @@ +# RBCS performance benchmarks + +All test were executed under the following conditions: +- CPU: Intel Celeron J3455 (4 physical cores) +- memory: 8GB DDR3L 1600 MHz +- disk: SATA3 120GB SSD +- HTTP compression: disabled +- cache compression: disabled +- digest: none +- authentication: disabled +- TLS: disabled +- network RTT: 14ms +- network bandwidth: 112 MiB/s +### In memory cache backend + + +| Cache backend | CPU | CPU quota | Memory quota (GB) | Request size (b) | Client connections | PUT (req/s) | GET (req/s) | +|----------------|---------------------|-----------|-------------------|------------------|--------------------|-------------|-------------| +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 128 | 10 | 3691 | 4037 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 128 | 100 | 6881 | 7483 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 512 | 10 | 3790 | 4069 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 512 | 100 | 6716 | 7408 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 4096 | 10 | 3399 | 1974 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 4096 | 100 | 5341 | 6402 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 65536 | 10 | 1099 | 1116 | +| in-memory | Intel Celeron J3455 | 1.00 | 4 | 65536 | 100 | 1379 | 1703 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 128 | 10 | 4443 | 5170 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 128 | 100 | 12813 | 13568 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 512 | 10 | 4450 | 4383 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 512 | 100 | 12212 | 13586 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 4096 | 10 | 3441 | 3012 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 4096 | 100 | 8982 | 10452 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 65536 | 10 | 1391 | 1167 | +| in-memory | Intel Celeron J3455 | 3.50 | 4 | 65536 | 100 | 1303 | 1151 | + +### Filesystem cache backend + +compression: disabled +digest: none +authentication: disabled +TLS: disabled + +| Cache backend | CPU | CPU quota | Memory quota (GB) | Request size (b) | Client connections | PUT (req/s) | GET (req/s) | +|---------------|---------------------|-----------|-------------------|------------------|--------------------|-------------|-------------| +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 128 | 10 | 1208 | 2048 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 128 | 100 | 1304 | 2394 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 512 | 10 | 1408 | 2157 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 512 | 100 | 1282 | 1888 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 4096 | 10 | 1291 | 1256 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 4096 | 100 | 1170 | 1423 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 65536 | 10 | 313 | 606 | +| filesystem | Intel Celeron J3455 | 1.00 | 0.25 | 65536 | 100 | 298 | 609 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 128 | 10 | 2195 | 3477 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 128 | 100 | 2480 | 6207 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 512 | 10 | 2164 | 3413 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 512 | 100 | 2842 | 6218 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 4096 | 10 | 1302 | 2591 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 4096 | 100 | 2270 | 3045 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 65536 | 10 | 375 | 394 | +| filesystem | Intel Celeron J3455 | 3.50 | 0.25 | 65536 | 100 | 364 | 462 | + + +### Memcache cache backend + +compression: disabled +digest: MD5 +authentication: disabled +TLS: disabled + +| Cache backend | CPU | CPU quota | Memory quota (GB) | Request size (b) | Client connections | PUT (req/s) | GET (req/s) | +|---------------|---------------------|-----------|-------------------|------------------|--------------------|-------------|-------------| +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 128 | 10 | 2505 | 2578 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 128 | 100 | 3582 | 3935 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 512 | 10 | 2495 | 2784 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 512 | 100 | 3565 | 3883 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 4096 | 10 | 2174 | 2505 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 4096 | 100 | 2937 | 3563 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 65536 | 10 | 648 | 1074 | +| memcache | Intel Celeron J3455 | 1.00 | 0.25 | 65536 | 100 | 724 | 1548 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 128 | 10 | 2362 | 2927 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 128 | 100 | 5491 | 6531 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 512 | 10 | 2125 | 2807 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 512 | 100 | 5173 | 6242 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 4096 | 10 | 1720 | 2397 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 4096 | 100 | 3871 | 5859 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 65536 | 10 | 616 | 1016 | +| memcache | Intel Celeron J3455 | 3.50 | 0.25 | 65536 | 100 | 820 | 1677 | diff --git a/gradle.properties b/gradle.properties index a941b52..71902e9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.caching=true rbcs.version = 0.2.0 -lys.version = 2025.02.26 +lys.version = 2025.02.28 gitea.maven.url = https://gitea.woggioni.net/api/packages/woggioni/maven docker.registry.url=gitea.woggioni.net