Skip to content

Conversation

@DiegoTavares
Copy link
Collaborator

Add a new booking mode that doesn't take cores and memory into consideration, but a predefined limit on how many concurrent frames a host is allowed to run.

Rationale: Booking by slot is useful for pipelines where frames are small and limited not by their
cpu/memory consumption but by other resources like storage bandwidth or network availability. In
these scenarios, limiting the concurrency is more important than the resource consumption.

Attention:* This branch is stacked on top of #2002

Tasks:

  • Implement booking logic on Scheduler
  • Add new columns to Host to mark how many slots are available and fill them up on Cuebot
  • Add new column to Layer to define slot limit and implement logic to fill it up on Cuebot
  • Handle new attributes on Host and Layer using pycue
  • Handle new attributes on Host and Layer using pyoutline
  • Handle new attributes on Host and Layer using cuegui

This PR introduces a new module called "scheduler." This module is
responsible for the booking aspect of Cuebot and is designed to offload
this feature from the central module.

Rationale: Cuebot's booking logic depends on responding to each
HostReport with a new task that searches for layers to dispatch to the
reporting host. Consequently, each request generates a
[BookingQuery](https://github.com/AcademySoftwareFoundation/OpenCue/blob/master/cuebot/src/main/java/com/imageworks/spcue/dao/postgres/DispatchQuery.java),
which significantly impacts the database. As a result, scaling Cuebot is
limited by the need to optimize database capacity to handle complex
queries. This new module alleviates the booking workload from Cuebot.

Booking on the Scheduler is not triggered by host reports; instead, it
operates through an internal loop that searches for pending jobs and
seeks suitable matches from a cached view of the hosts in the database.
The scheduler organizes layers and hosts into clusters, with each
cluster representing a group of show and allocation combinations. This
structure allows multiple instances of the scheduler to share the load
without competing for work, which is a significant issue in Cuebot.

To enable Cuebot and the Scheduler to run concurrently without competing
for work, a new feature was added to Cuebot, as detailed in
AcademySoftwareFoundation#2087. This
feature allows for the addition of an exclusion list containing show and
allocations that should not be booked, or it can halt booking for all
shows altogether.

---------

Signed-off-by: Diego Tavares <[email protected]>
This field limits the number of concurrent frames allowed to run on a specific host.
This commit is the first step towards the goal of allowing a new booking mode that doesn't take
cores and memory into consideration, but a predefined limit on how many concurrent frames a host is
allowed to run.

Rationale: Booking by slot is useful for pipelines where frames are small and limited not by their
cpu/memory consumption but by other resources like storage bandwith or network availability. In
these scenarios, limiting the concurrency is more important than the resource consumption.
Add slots_required attribute to layer for slot-based booking
@DiegoTavares
Copy link
Collaborator Author

A new PR has been created to resolve conflicts. #2115

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