You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Sam Whittle (Jira)" <ji...@apache.org> on 2021/04/21 20:16:00 UTC

[jira] [Comment Edited] (BEAM-12203) Reduce thread context switches in BeamFnControlClient

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

Sam Whittle edited comment on BEAM-12203 at 4/21/21, 8:15 PM:
--------------------------------------------------------------

Realized that this could further be simplified by just instructing grpc to use the desired executor and we can execute requests inline to the observer.

The previous path involved several thread switches:
grpc executor -> direct observer which queued -> thread reading queue, queues on executor -> executor runs request
[edited removing previous comment about buffered observer which was incorrect as that applies to output]


was (Author: scwhittle):
Realized that this could further be simplified by just instructing grpc to use the desired executor and we can execute requests inline to the observer.

The previous path involved several thread switches:
grpc executor -> direct observer which queued -> thread reading queue, queues on executor -> executor runs request
or even worse if the buffering observer was enabled
grpc executor -> buffering observer queues -> buffering observer pulling thread pulls from buffer queues on unbounded buffer -> thread reads queue, queues on executor -> executor runs request

> Reduce thread context switches in BeamFnControlClient
> -----------------------------------------------------
>
>                 Key: BEAM-12203
>                 URL: https://issues.apache.org/jira/browse/BEAM-12203
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-java-harness
>            Reporter: Sam Whittle
>            Assignee: Sam Whittle
>            Priority: P2
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> This class has a grpc observer that queues recieved messages on a LinkedBlockingQueue and then has a separate thread pulling from the the queue to add to an executor.
> Instead we could just add directly to the executor from the grpc stream, as the executor by default has an unbounded queue size (and there are comments indicating that a limited size executor can cause deadlocks otherwise)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)