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!