More clients performance results

I received a number of equiries to get performance numbers with larger numbers of clients. Unfortunately, I am limited to five client machines and one server machine. To increase the number of clients communicating with the server, I had to have multiple clients per machine. From the previous tests, a hypothesis can be made that the clients are either CPU or I/O bound. Adding more clients to each machine is not going to produce interesting results. The is essentially what was seen.

There are a total of eight configurations (three with SSL and four without). To simplify analysis, each graph contains the results either from the three SSL servers or the four non-SSL. Three cases were chosen:

  • 1 client per machine (so that comparisons could be made back to previous results)
  • 5 clients per machine
  • 10 clients per machine

The same environment was used as in the previous tests.

The choices (besides one client per machine) was completely arbitrary. Numbers were chosen such that the tests would complete in a reasonsable amount of time.

Without SSL

5 Machines, 1 Client per Machine 5 Machines, 5 Clients per Machine
5 Machines, 10 Clients per Machine

With SSL

SSL, 5 Machines, 1 Client per Machine SSL, 5 Machines, 5 Clients per Machine
SSL, 5 Machines, 10 Clients per Machine

Analysis (see the other previous tests for more analysis):

  • As expected, being bound (either CPU or I/O) has not yielded interesting results.
  • For the non-SSL case with more than 1 client per machine, the performance for NIO, IO, Converted IO and Converted IO with Selector have effectively merged. I attribute this to “fill in the blanks”. By increasing the number of clients per machine, any nearly-bounded resources were maxed out.
  • The SSL case is known to be CPU bound (as the encryption and decryption are being done in software). It too had a “fill in the blanks”-style result (i.e. it is asymptotically reaching it’s maximum value per machine).

A few tests were made to determine if the clients were CPU bound or IO bound. It could be guessed from previous results that they were IO bound (given the signature of the SSL results). Futher testing has shown this to be the case (e.g. all client echo validation was removed). Since the clients are IO bound, adding more clients to each machine would show no greater throughput to the server which is precisely what was observed in these tests.

Link-back to main entry: NIO and SSL.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s