Zvika Gart wrote:
- Check if there are some differences in the traffic (e.g. TCP ACK
patterns)

You didn't say anything about this yet.

- Check syscall patterns of the MINA version and try to see if something is
taking unreasonably long time (pure NIO implementation might be helpful
here)

- As for syscall patterns, I'll need your help as I am a .NET programmer and
not familiar with Java/Linux profiling...

Have you ever done anything with the Sysinternals file monitoring tools? Strace is similar tool for Linux, except its output is textual. You should find and read some tutorial about it to get some idea of how to use it.

For an actual test run, something along the lines of "strace -o/tmp/traceout -f -s2048 -tt -e trace=network java -jar myserver.jar" should output all network-related syscalls that your process performs to /tmp/traceout. You'll have to the comparing yourself, though.

I'd expect there to be epoll() calls in MINA case, and if there is something to read, recv() calls to read it. The threaded blocking version should probably just sit blocking in recv(). I'd try to minimize other thing going on in the same process for the test, since there will probably be enough noise in any case.

Reply via email to