Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

Overview

The using of use of SocketOpPrioritysession  session parameter is based on a variety of ways of doing network I/O (input/output):

...

Dedicated threads allow lower response time , while using a pool provides higher throughput. So the optimal combination of "how to do I/O" and "what performs I/O (current thread/thread pool/dedicated thread)" choices depends on the application.

...

  • EVEN (default) - share worker thread among all session sessions in the Engine;
  • AGGRESSIVE_SEND - use dedicated per session thread to send outgoing messages;
  • AGGRESSIVE_RECEIVE - use dedicated per session thread to receive incoming messages;
  • AGGRESSIVE_SEND_AND_RECEIVE - use dedicated per session threads to send and receive messages;
  • DIRECT_SEND - use the current thread for sending, if this would block, performs as "EVEN".

...

It's recommended to use EVEN when there are many concurrent sessions ("many" means much more that than the count of cores used), i.e. application demands a high throughput rather than a low response time. Allocating dedicated per session threads is not an option in such cases, so using a pool makes sense.

...

Tries to send the message from the current thread, if that fails (would block) delegates sending to a dedicated per session thread. Uses a combination of busy polling and readiness notifications. Intended for applications which that need low response time (e.g. to send an order as soon as possible).

...

Use a dedicated per session thread handles to handle receiving. It uses I/O with busy polling and switches to readiness notifications if no data has been received during the a certain configurable time interval. Intended for applications which that need low response time (e.g. to receive and react as soon as possible).

...

It's recommended to use DIRECT_SEND when there are many concurrent sessions ("many" means much more than the count of cores used), but on the other hand, an application needs a low(er) response time rather than a high throughput.