Tuesday 10 December 2013

Great Expectations

Performance analysis

Relying on the competence of Apache Benchmark, we decided to run performance tests on our version of Boa implemented with epoll and the original one implemented with select.
Theoretically, we expected to observe the following:

  • With large number of active connections, select may perform better as the possibility of activity on an fd in the fd set is high. Hence traversing the fd set gives rise to a low "miss" rate.
  • Similarly, with low concurrency, select's bit comparison will yield better results than the looping structure and word comparison in epoll.
  • A better performance of epoll arises when there are a large number of inactive connections. This is a scenario that is difficult to simulate.
  • Only a hard-limit (depending on the value specified by RLIMIT_NOFILE) persists for the maximum number of concurrent connections for epoll. For select, it is 1024. Although, in select, some workarounds are possible to change this maximum value by manipulating FD_SETSIZE (system dependent)
  • Within select and epoll, increasing the number of connections while keeping concurrency constant should not yield a varying value. The performance is expected to remain constant.
With this frame of reference in mind, we proceed to perform the tests.
Wish us Luck!

No comments:

Post a Comment