This is a test of ab, which is the Apache Benchmark program running against nginx. This test profile measures how many requests per second a given system can sustain when carrying out 2,000,000 requests with 500 requests being carried out concurrently.
The description of the benchmark is almost identical to the apache. The primary difference is the backend server is the nginx server. Also, it appears the benchmark installs a nginx server and leaves it running, unlike the apache test that starts servers as part of the test profile. As a result, I can see the effects of having a server when measuring process counters for a “core”, but do not separately profile the server in “process” mode as part of the benchmark run.Metrics (Intel) - phoronix/nginx
sh - pid 11549 On_CPU 0.000 On_Core 0.001 IPC 0.532 Retire 0.146 (14.6%) FrontEnd 0.184 (18.4%) Spec 0.046 (4.6%) Backend 0.624 (62.4%) Elapsed 7.51 Procs 4 Maxrss 10K Minflt 599 Majflt 0 Inblock 0 Oublock 8 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 31 (73.8%) Nivcsw 11 Utime 0.002790 Stime 0.007386 Start 385223.23 Finish 385230.74Process Tree - phoronix/nginx
11549) sh 11550) bash 11551) nginx 11552) sleep
The process tree is simple.Metrics (AMD) - phoronix/nginx
sh - pid 10309 On_CPU 0.031 On_Core 0.500 IPC 0.750 FrontCyc 0.185 (18.5%) BackCyc 0.097 (9.7%) Elapsed 184.41 Procs 3 Maxrss 127K Minflt 77834 Majflt 0 Inblock 0 Oublock 72 Msgsnd 0 Msgrcv 0 Nsignals 0 Nvcsw 3209 (0.1%) Nivcsw 5378359 Utime 17.096213 Stime 75.195090 Start 395711.50 Finish 395895.91
Metrics for AMD show a much higher On_Core and otherwise are similar.
Adding the time for all CPUs shows mostly system time but overall low usage, in total ~19% On_CPU
Core 1 is the driver process, the other parts of the time come from the system nginx driver. As a rough back of the envelope, the On_CPU seems to come ~10% from the server and ~9% from the driver.
IPC is consistently a little less than 0.9
Frontend stalls and backend stalls seem to be almost equal.
Next steps: Understand differences between nginx server process and http server processes, though the largest differences likely come from nginx is single-threaded server and apache allows multiple threads for multiple cores.