You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tez.apache.org by "Harish Jaiprakash (JIRA)" <ji...@apache.org> on 2017/01/23 09:27:27 UTC

[jira] [Commented] (TEZ-1187) Share Thread pools between different tasks

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

Harish Jaiprakash commented on TEZ-1187:
----------------------------------------

Please do tell me if this makes sense:

Define TezSharedExecutors as follows:
{code}
public interface TezSharedExecutors {
  ListeningScheduledExecutorService createScheduledExecutorService();
  void shutdownAll();
}
{code}

The implementation would be roughly like this:
* We have an shared executorService, mostly like a ForkJoinExecutor service with parallelism set to number vcores available for the container.
* createScheduledExecutorService returns an internal implementation of ListeningScheduledExecutorService, delegating the responsibility to the SharedExecutorService for actual execution.
* We track all the Futures returned by shared executor service, to be used in awaitTermination and shutdown calls.
* For shutdownNow we can cancel all these futures.
* shutdown will just prevent more jobs from getting submitted via the current object.
* For the execute method, since it does not return any future and the runnable cannot be removed once submitted. We'll wrap it in a different runnable which will cleanup any references and prevent execution, in case shutdownNow is invoked.

Does this implementation sound fine?

> Share Thread pools between different tasks
> ------------------------------------------
>
>                 Key: TEZ-1187
>                 URL: https://issues.apache.org/jira/browse/TEZ-1187
>             Project: Apache Tez
>          Issue Type: Sub-task
>            Reporter: Siddharth Seth
>            Assignee: Harish Jaiprakash
>
> Thread pools are used all over for fetchers, sort etc. When running a single task - this is already a problem, and gets worse when running multiple tasks.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)