Description - phoronix/nginx

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.74
Process Tree - phoronix/nginx
Process Tree
    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.