vanzin opened a new pull request #26059: [SPARK-29398][core] Support dedicated 
thread pools for RPC endpoints.
URL: https://github.com/apache/spark/pull/26059
 
 
   The current RPC backend in Spark supports single- and multi-threaded
   message delivery to endpoints, but they all share the same underlying
   thread pool. So an RPC endpoint that blocks a dispatcher thread can
   negatively affect other endpoints.
   
   This can be more pronounced with configurations that limit the number
   of RPC dispatch threads based on configuration and / or running
   environment. And exposing the RPC layer to other code (for example
   with something like SPARK-29396) could make it easy to affect normal
   Spark operation with a badly written RPC handler.
   
   This change adds a new RPC endpoint type that tells the RPC env to
   create dedicated dispatch threads, so that those effects are minimised.
   Other endpoints will still need CPU to process their messages, but
   they won't be able to actively block the dispatch thread of these
   isolated endpoints.
   
   As part of the change, I've changed the most important Spark endpoints
   (the driver, executor and block manager endpoints) to be isolated from
   others. This means a couple of extra threads are created on the driver
   and executor for these endpoints.
   
   Tested with existing unit tests, which hammer the RPC system extensively,
   and also by running applications on a cluster (with a prototype of
   SPARK-29396).

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to