Andrey Zagrebin created FLINK-18751:
---------------------------------------
Summary: Implement SlotSharingExecutionSlotAllocator
Key: FLINK-18751
URL:
https://issues.apache.org/jira/browse/FLINK-18751 Project: Flink
Issue Type: Sub-task
Components: Runtime / Coordination
Reporter: Andrey Zagrebin
Assignee: Andrey Zagrebin
SlotSharingExecutionSlotAllocator maintains a SharedSlot for each ExecutionSlotSharingGroup. SlotSharingExecutionSlotAllocator allocates physical slots for SharedSlot(s) and then allocates logical slots from it for scheduled tasks. In this way, the slot sharing hints can be respected in the ExecutionSlotAllocator. And we no longer need to rely on the SlotProvider to do the slot sharing matching. Co-location constraints will be respected since co-located subtasks will be in the same ExecutionSlotSharingGroup.
The physical slot will be lazily allocated for a SharedSlot, upon any hosted subtask asking for the SharedSlot. Each subsequent sharing subtask allocates a logical slot from the SharedSlot. The SharedSlot/physical slot can be released only if all the requested logical slots are released or canceled.
h4. Slot Allocation Process
When SlotSharingExecutionSlotAllocator receives a set of tasks to allocate slots for, it should do the following:
# Map the tasks to ExecutionSlotSharingGroup(s)
# Check which ExecutionSlotSharingGroup(s) _already have_ SharedSlot(s)
# For all involved ExecutionSlotSharingGroup(s) _which do not have a SharedSlot_ yet.
# Create a SlotProfile future by MergingSharedSlotProfileRetriever and then
# Allocate a physical slot from the PhysicalSlotProvider
# Create SharedSlot based on the returned physical slot futures
# If physical slot future fails, remove the SharedSlot
# Allocate logical slot futures for the tasks from all corresponding SharedSlot(s).
# Generates SlotExecutionVertexAssignment(s) based on the logical slot futures and returns the results.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)