pub struct NandoScheduler {
    _scheduler_submission_thread: JoinHandle<()>,
    _scheduler_completion_threads: Vec<JoinHandle<()>>,
    sender: Sender<SchedulerInputKind>,
    nando_libraries: DashMap<String, Library>,
    epic_control_registry: Arc<DashMap<EcbId, ControlRegistryEntry>>,
    cached_functions: DashMap<String, Arc<ActivationFunction>>,
    cached_metadata: DashMap<String, NandoMetadata>,
    physical_plan_manager: Arc<PhysicalPlanManager>,
}

Fields§

§_scheduler_submission_thread: JoinHandle<()>§_scheduler_completion_threads: Vec<JoinHandle<()>>§sender: Sender<SchedulerInputKind>§nando_libraries: DashMap<String, Library>§epic_control_registry: Arc<DashMap<EcbId, ControlRegistryEntry>>§cached_functions: DashMap<String, Arc<ActivationFunction>>§cached_metadata: DashMap<String, NandoMetadata>§physical_plan_manager: Arc<PhysicalPlanManager>

Implementations§

source§

impl NandoScheduler

source

fn new( object_tracker: Arc<ObjectTracker>, config: SchedulerConfig, num_worker_threads: u16 ) -> Self

source

pub fn get_nando_scheduler( maybe_object_tracker: Option<Arc<ObjectTracker>>, maybe_nando_lib_config: Option<Config> ) -> &'static NandoScheduler

source

pub fn get_nando_scheduler_mut( maybe_object_tracker: Option<Arc<ObjectTracker>>, maybe_nando_lib_config: Option<Config> ) -> &'static mut NandoScheduler

source

pub fn handle_subtask_completion( &self, task_id: EcbId, tasks_to_notify: &Vec<(DownstreamTaskDependency, Option<NandoResult>)>, submit_local: bool ) -> SubtaskCompletionResult

source

pub fn get_nando_metadata_external( nando_name: &String ) -> Result<NandoMetadata, String>

source

fn get_nando_metadata( &self, full_name: &String ) -> Result<NandoMetadata, String>

source

fn get_nando_function( &self, full_name: &String ) -> Result<Arc<ActivationFunction>, String>

source

pub fn schedule_activation( &self, txn_id: TxnId, activation_intent: NandoActivationIntent, with_plan: Option<String> ) -> Result<ScheduleResult, String>

source

pub fn schedule_externally_spawned_task( &self, txn_id: TxnId, spawned_task: SpawnedTask ) -> Result<ScheduleResult, String>

source

pub fn schedule_parkable_entry(&self, entry: ControlRegistryEntry)

source

pub fn store_externally_spawned_task(&self, spawned_task: SpawnedTask)

source

pub fn get_ecb_result_and_status( &self, ecb_id: EcbId ) -> Option<(Option<NandoResult>, TaskStatus)>

source

fn get_safe_majority(worker_allocations: &Vec<(u16, f32)>) -> u16

source

fn compute_activation_dependencies( activation: &NandoActivation, stats_map: &mut HashMap<ObjectId, Rc<RefCell<ObjectStats>>>, num_executors: usize, existing_cores: &mut Vec<(u16, f32)>, dependency_stats: &mut Vec<(ObjectId, Rc<RefCell<ObjectStats>>)>, rng: &mut SmallRng, aggregate_executor_stats: Arc<AggregateExecutorStats> ) -> (usize, Option<Vec<ActivationId>>)

source

const EXECUTOR_DEPTH_THRESHOLD: f64 = 0.94999999999999996f64

source

fn at_capacity(aggregate_executor_stats: Arc<AggregateExecutorStats>) -> bool

source

pub fn poll_and_schedule( external_queue_recv: Receiver<SchedulerInputKind>, pending_txn_dependencies: Arc<DashMap<ActivationId, TxnDependency>>, aggregate_executor_stats: Arc<AggregateExecutorStats>, executor_channels: Vec<Producer<NandoActivation>>, executor_queue_capacity: usize )

source

fn poll_log_queue( log_queue_recv: Consumer<NandoActivation>, scheduler_queue_send: Sender<SchedulerInputKind>, aggregate_executor_stats: Arc<AggregateExecutorStats>, epic_control_registry: Arc<DashMap<EcbId, ControlRegistryEntry>> )

source

fn dependency_is_local(&self, dependency: &DownstreamTaskDependency) -> bool

source

fn handle_task_completion_for_dependency( &self, task_id: EcbId, dependency: &DownstreamTaskDependency, result: Option<NandoResult> ) -> Option<(TaskCompletionPropagationResult, Option<EcbId>, Option<NandoResult>)>

Note that the below operation is a no-op if called on a dependency that is not owned by the current host. It is the responsibility of the caller of this function to perform the ownership checks necessary to ensure that the dependency is local, and to also check if the result can be further processed locally or need to be propagated to other workers.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more