A few weeks ago, I posted about sngbench, a shell script to measure syslog-ng performance. The performance of syslog-ng is influenced by many factors, including the hardware and OS it runs on, and syslog-ng itself. This blog summarizes some of my findings using the script.
Before you begin
The sngbench.sh script was born several years ago, but we made it public only last month. This is because it was ugly as hell and difficult to use, but now, after a refactor, it is ready for public use. It is a synthetic benchmark, so while it is not fully realistic, it is good to measure peak performance, and compare how your choice of hardware, OS or syslog-ng version and configuration influences syslog-ng performance.
You can learn more about the script here:
In this blog, I focus on what I found while using the script.
Hardware
The performance of syslog-ng is mostly affected by hardware, so do not expect the same performance from a Raspberry Pi and an AMD EPYC server. While syslog-ng scales well on multi-core systems, it still prefers fewer, stronger CPU cores. The CPU cache size also matters, with more cache resulting in better performance. Entry level AMD Ryzen CPUs with large caches can easily beat just a few years older server CPUs with smaller caches.
Turning off SMT (Simultaneous Multithreading, which is called Hyper-Threading in Intel terminology) can have a significant effect. Turning off HT on an Intel CPU resulted in a 5-15% performance increase depending on the test. Moreover, on POWER, it could even result in a 300% performance increase in some