[ 
https://issues.apache.org/jira/browse/IGNITE-20373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17822099#comment-17822099
 ] 

Roman Puchkovskiy commented on IGNITE-20373:
--------------------------------------------

Stripization of the Inbound pool is split to IGNITE-21626.

Same for the Outbound thread: IGNITE-21627

 

> Fix IO threading model
> ----------------------
>
>                 Key: IGNITE-20373
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20373
>             Project: Ignite
>          Issue Type: Improvement
>    Affects Versions: 3.0
>            Reporter: Alexey Scherbakov
>            Assignee: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3, ignite3_performance, threading
>             Fix For: 3.0.0-beta2
>
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> Currently IO is resubmitted to inboundExecutor for further processing (even 
> there are corner cases then a message handler called in IO thread)
> It makes message processing essentially single threaded and introduces 
> additional lag due to message transition to additional queue.
> addMessageHandler should be extended with a 3-d argument: a pool for 
> submitting a callback for execution, or an executorSelector like in jraft.
> inboundExecutor should be changed to striped, use more than one thread, and 
> serve messages without explicit executor. Delivery guaranties should be 
> preserved: if a message A is send before B, B can't be processed on a 
> receiver before A. A stripe is defined by sender-receiver pair (or can be 
> user defined - TBD)
> outboundExecutor also looks like a contention point - need to be addressed as 
> well



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to