================================================================================ CPU Intel(R) Core(TM) i9-13900K @ 5.5 GHz, performance governor CPU security patches all ON RAM 192 GB, DDR5 5600 MT/s SSD 2 TB NVMe SSD UFW Firewall ON OS Ubuntu 24.04 LTS (with all security updates) FDs prlimit --pid=$$ --nofile=1048576 TST NGINX's wrk2, see why here: http://gwan.com/blog/20250417.html ================================================================================ G-WAN 17.10.01 (cache enabled) => [127k-281m] RPS, 0 socket errors -------------------------------------------------------------------------------- RPS by number of concurrent clients: 1: 129k RPS 1k: 1.8m RPS 10k: 281m RPS --> G-WAN peak RPS (LITESPEED and NGINX: peak @ 1k clients) 20k: 140m RPS 30k: 91m RPS 40k: 63m RPS -------------- Total 577m RPS (LITESPEED: 1,561k RPS, NGINX: 2,561k RPS) ================================================================================ Before the test (despite the cache, read the conclusion at the end of this page) -------------------------------------------------------------------------------- - running gwan process(es): PID THRDS %CPU VIRT RSS SHRD EXE 168179 17 0.0 4.8 MB 768.0 KB 0.0 KB /opt/gwan/gwan :8080 ======== -------------------------------------------------------------------------------- After the test -------------------------------------------------------------------------------- - running gwan process(es): PID THRDS %CPU VIRT RSS SHRD EXE 360294 45001 337.1 4.1 GB 668.0 MB 0.0 KB /opt/gwan/gwan :8080 ======== ================================================================================ wrk2 -t1 -c1 -R200k "http://127.0.0.1:8080/100.html" Initialised 1 threads in 0 ms. Running 10s test @ http://127.0.0.1:8080/100.html 1 threads and 1 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.76s 1.02s 3.52s 0.04% Req/Sec -nan -nan 0.00 0.00% 1295873 requests in 10.00s, 409.06MB read Requests/sec: 129586.11 Transfer/sec: 40.91MB ================================================================================ wrk2 -t1k -c1k -R100m "http://127.0.0.1:8080/100.html" Initialised 1000 threads in 60 ms. Running 10s test @ http://127.0.0.1:8080/100.html 1000 threads and 1000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 4.82s 2.84s 9.86s 0.03% Req/Sec -nan -nan 0.00 0.00% 17338651 requests in 9.75s, 5.34GB read Requests/sec: 1778564.33 Transfer/sec: 561.43MB ================================================================================ wrk2 -t10k -c10k -R300m "http://127.0.0.1:8080/100.html" Initialised 10000 threads in 2209 ms. Running 10s test @ http://127.0.0.1:8080/100.html 10000 threads and 10000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.61s 2.37s 9.90s 0.02% Req/Sec -nan -nan 0.00 0.00% 8917154 requests in 31.68ms, 2.75GB read Requests/sec: 281493591.77 Transfer/sec: 86.78GB ================================================================================ wrk2 -t20k -c20k -R100m "http://127.0.0.1:8080/100.html" Initialised 20000 threads in 8207 ms. Running 10s test @ http://127.0.0.1:8080/100.html 20000 threads and 20000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.64s 2.41s 9.49s 0.03% Req/Sec -nan -nan 0.00 0.00% 9040529 requests in 64.15ms, 2.79GB read Requests/sec: 140927965.71 Transfer/sec: 43.44GB ================================================================================ wrk2 -t30k -c30k -R100m "http://127.0.0.1:8080/100.html" Initialised 30000 threads in 17994 ms. Running 10s test @ http://127.0.0.1:8080/100.html 30000 threads and 30000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.53s 2.32s 9.26s 0.03% Req/Sec -nan -nan 0.00 0.00% 9134379 requests in 100.21ms, 2.82GB read Requests/sec: 91154189.29 Transfer/sec: 28.10GB ================================================================================ wrk2 -t40k -c40k -R100m "http://127.0.0.1:8080/100.html" Initialised 40000 threads in 31699 ms. Running 10s test @ http://127.0.0.1:8080/100.html 40000 threads and 40000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 2.35s 2.18s 9.24s 0.03% Req/Sec -nan -nan 0.00 0.00% 8519478 requests in 135.32ms, 2.63GB read Requests/sec: 62957545.39 Transfer/sec: 19.41GB ================================================================================ Conclusion -------------------------------------------------------------------------------- At the time of the previous tests, G-WAN did not (yet) implement caching (used by NGINX and LITESPEED). We speculated that with a cache, future versions of G-WAN would be faster. That has been clearly demonstrated... despite G-WAN being tested with its cache filled with a website thousands of times larger than NGINX and LITESPEED - while also serving 5 hosts and 2 alias. The G-WAN cache does not consume much RAM because only tiny files are loaded in memory. Other files, depending on their size, are mmapped or just served normally from disk. ================================================================================