Demystify GNU Artanis service deployment in product environment

This post is the continuation of the previous post Demystify GNU Artanis service deployment in product environment. In this post, we will show you the same benchmark undert ARM64 architecture.

Machine, OS and environment

Still, we don't reveal the exact cloud machine information, since they run proprietary software. But we can tell you that the machine is running on ARM64 architecture.

  • ARM64 architecture
    • 2 vCPU
    • BogoMIPS 243.75
  • RAM 8GB
  • OS: Ubuntu 24.04 LTS
  • GNU Guile 3.0.9
  • GNU Artanis 1.0.0

Enable multi.server feature

The benchmark

Unique instance

Without Linux Kernel Vaccine (VED)

Running 20s test @ http://localhost:3000/api/v1/logs/667265652d616c6163617274655f5f30363a31393a30315f5f33302d31322d323032342e62796767737465672e6c6f670a
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   446.40ms  180.30ms 896.50ms   60.35%
    Req/Sec    30.88     25.10   202.00     77.51%
  Latency Distribution
     50%  446.82ms
     75%  597.90ms
     90%  690.47ms
     99%  759.82ms
  4424 requests in 20.03s, 1.49MB read
Requests/sec:    220.84
Transfer/sec:     76.13KB

With Linux Kernel Vaccine (VED)

Running 20s test @ http://localhost:3000/api/v1/logs/667265652d616c6163617274655f5f30363a31393a30315f5f33302d31322d323032342e62796767737465672e6c6f670a
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   462.38ms  178.76ms 803.56ms   59.02%
    Req/Sec    28.95     21.32   191.00     80.03%
  Latency Distribution
     50%  461.90ms
     75%  614.65ms
     90%  708.01ms
     99%  771.55ms
  4275 requests in 20.03s, 1.44MB read
Requests/sec:    213.43
Transfer/sec:     73.58KB

The performance was reduced around 3% with Linux Kernel Vaccine.

Multi instances = 2

Without Linux Kernel Vaccine (VED)

Running 20s test @ http://localhost:3000/api/v1/logs/667265652d616c6163617274655f5f30363a31393a30315f5f33302d31322d323032342e62796767737465672e6c6f670a
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   389.28ms  434.08ms   1.96s    82.23%
    Req/Sec    61.24     55.60   323.00     75.67%
  Latency Distribution
     50%  296.47ms
     75%  672.99ms
     90%    1.04s
     99%    1.59s
  7536 requests in 20.03s, 2.54MB read
Requests/sec:    376.22
Transfer/sec:    129.69KB

With Linux Kernel Vaccine (VED)

Running 20s test @ http://localhost:3000/api/v1/logs/667265652d616c6163617274655f5f30363a31393a30315f5f33302d31322d323032342e62796767737465672e6c6f670a
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   386.00ms  427.09ms   2.00s    82.91%
    Req/Sec    61.42     58.10   280.00     76.96%
  Latency Distribution
     50%  312.14ms
     75%  655.22ms
     90%    1.01s
     99%    1.62s
  6995 requests in 20.03s, 2.35MB read
  Socket errors: connect 0, read 0, write 0, timeout 11
Requests/sec:    349.20
Transfer/sec:    120.38KB

The performance was reduced around 7% with Linux Kernel Vaccine.

Conclusion

The tested byggsteg code is not a fast implementation, there're frequent disk I/O operations, and we don't set any memory cache intendedly. The purpose of this test is to show the performance (included I/O, string parsing and JIT) difference before and after enabling the Linux Kernel Vaccine.

On ARM64, the performance looks better than our previous Intel test. The performance of GNU Artanis was reduced by around 3%~7% after enabling the VED Linux Kernel Vaccine. This result is within the expected range, and the performance is still acceptable for a production environment. Considering the security enhancements provided by the Vaccine, the trade-off is reasonable.

Feedback please!

If you conduct this test on a different hardware platform, I would greatly appreciate your feedback. Feel free to reach out via email at [email protected].

Happy hacking!

Author: Artanis Dev Team

Created: 2025-01-12 Sun 01:43

Validate