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.
- 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.