Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Work stealing in Nemo (alternative implementation) #321

Open
wants to merge 28 commits into
base: master
Choose a base branch
from

Conversation

hwarim-hyun
Copy link
Contributor

@hwarim-hyun hwarim-hyun commented Aug 28, 2021

JIRA: NEMO-466 Dynamic Work Stealing on Nemo for handling skews

Major changes:

  • created WorkStealingStatePass and WorkStealingSubSplitPass to enable annotations related to work stealing.
    • WorkStealingStatePass annotates three phases of work stealing process: DEFAULT, SPLIT, and MERGE. These are tagged to the vertex based on the name assigned to beam transform by the user.
    • Sub-tasks are generated in SPLIT phase and merged in MERGE phase.
    • WorkStealingSubSplitPass annotates the number to split the tasks in SPLIT phase.
  • Added WorkStealingPolicy, which executes WorkStealingPass and WorkStealingSubSplitPass additionally to DefaultCompositePass.
  • Changed notation of the task id and block id to differentiate between work stealing tasks and default tasks.
    • task id
      • previous: [stage id] - [task index] - [task attempt]
      • current: [stage id] - [task index] - [* or sub index for work stealing tasks] - [task attempt]
    • block id
      • previous: [runtime edge id] - [producer task index] - [producer task attempt]
      • current: [runtime edge id] - [producer task index] - [producer task sub index] - [producer task attempt] for blocks generated by work stealing tasks.

Minor changes to note:

  • Changed PipelineTranslator to read the user tags given to the transform.
  • Extended PlanStateManager and BlockInputReader to manage work stealing tasks and non-split tasks together.

Tests for the changes:

  • Added e2e tests to test WorkStealingPolicy. Note that in order to execute WorkStealing policy, the application pipeline should provide appropriate splitting and merging strategy.
  • Added unit tests to test WorkStealingCompositePass which encapsulates WorkStealingStatePass and WorkStealingSubSplitPass
  • Modified ParentTaskDataFetcherTest and TaskExecutorTest, reflecting the changes in BlockInputReader

Other comments:

  • This is the PR for the GSoC2021 project.

Closes #321

@sonarqubecloud
Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

No Coverage information No Coverage information
No Duplication information No Duplication information

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant