Even more convincing is, from the rsyslog PoV, that there are clear reasons why the highly threaded input must be slower:
- batch sizes are smaller, leading to much more overhead
- many more context switches are needed to switch between the various i/o handlers
- more OS API calls are required because in this model we get more frequent wakeups on new incoming data, so we have less data available to read at each instant
- more lock contention because many more threads compete on the main queue mutex
As a side-note: for obvious reasons, I will not try to finish imttcp. However, I have decided to leave it included in the source tree, so that a) someone else can build on it, if he sees value in that b) I may use it for some other tests in the future.
 R. Von Behren, J. Condit, and E. Brewer. Why events are a bad idea
(for high-concurrency servers). In Proceedings of the 9th conference on Hot
Topics in Operating Systems-Volume 9, page 4. USENIX Association, 2003.