Struct RuntimeMetrics
pub struct RuntimeMetrics { /* private fields */ }
Handle to the runtime's metrics.
This handle is internally reference-counted and can be freely cloned. A
RuntimeMetrics handle is obtained using the Runtime::metrics method.
Implementations
impl RuntimeMetrics
fn num_workers(&self) -> usizeReturns the number of worker threads used by the runtime.
The number of workers is set by configuring
worker_threadsonruntime::Builder. When using thecurrent_threadruntime, the return value is always1.Examples
use Handle; # # asyncfn num_alive_tasks(&self) -> usizeReturns the current number of alive tasks in the runtime.
This counter increases when a task is spawned and decreases when a task exits.
Note: When using the multi-threaded runtime this number may not not have strong consistency i.e. no tasks may be running but the metric reports otherwise.
Examples
use Handle; # # asyncfn global_queue_depth(&self) -> usizeReturns the number of tasks currently scheduled in the runtime's global queue.
Tasks that are spawned or notified from a non-runtime thread are scheduled using the runtime's global queue. This metric returns the current number of tasks pending in the global queue. As such, the returned value may increase or decrease as new tasks are scheduled and processed.
Examples
use Handle; # # asyncfn worker_total_busy_duration(&self, worker: usize) -> DurationReturns the amount of time the given worker thread has been busy.
The worker busy duration starts at zero when the runtime is created and increases whenever the worker is spending time processing work. Using this value can indicate the load of the given worker. If a lot of time is spent busy, then the worker is under load and will check for inbound events less often.
The timer is monotonically increasing. It is never decremented or reset to zero.
Arguments
workeris the index of the worker being queried. The given value must be between 0 andnum_workers(). The index uniquely identifies a single worker and will continue to identify the worker throughout the lifetime of the runtime instance.Panics
The method panics when
workerrepresents an invalid worker, i.e. is greater than or equal tonum_workers().Examples
use Handle; # # asyncfn worker_park_count(&self, worker: usize) -> u64Returns the total number of times the given worker thread has parked.
The worker park count starts at zero when the runtime is created and increases by one each time the worker parks the thread waiting for new inbound events to process. This usually means the worker has processed all pending work and is currently idle.
The counter is monotonically increasing. It is never decremented or reset to zero.
Arguments
workeris the index of the worker being queried. The given value must be between 0 andnum_workers(). The index uniquely identifies a single worker and will continue to identify the worker throughout the lifetime of the runtime instance.Panics
The method panics when
workerrepresents an invalid worker, i.e. is greater than or equal tonum_workers().Examples
use Handle; # # asyncfn worker_park_unpark_count(&self, worker: usize) -> u64Returns the total number of times the given worker thread has parked and unparked.
The worker park/unpark count starts at zero when the runtime is created and increases by one each time the worker parks the thread waiting for new inbound events to process. This usually means the worker has processed all pending work and is currently idle. When new work becomes available, the worker is unparked and the park/unpark count is again increased by one.
An odd count means that the worker is currently parked. An even count means that the worker is currently active.
The counter is monotonically increasing. It is never decremented or reset to zero.
Arguments
workeris the index of the worker being queried. The given value must be between 0 andnum_workers(). The index uniquely identifies a single worker and will continue to identify the worker throughout the lifetime of the runtime instance.Panics
The method panics when
workerrepresents an invalid worker, i.e. is greater than or equal tonum_workers().Examples
use Handle; # # async
Trait Implementations
impl Clone for RuntimeMetrics
fn clone(&self) -> RuntimeMetrics
impl Debug for RuntimeMetrics
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl Freeze for RuntimeMetrics
impl RefUnwindSafe for RuntimeMetrics
impl Send for RuntimeMetrics
impl Sync for RuntimeMetrics
impl Unpin for RuntimeMetrics
impl UnsafeUnpin for RuntimeMetrics
impl UnwindSafe for RuntimeMetrics
Blanket Implementations
impl<T> Any for RuntimeMetrics
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for RuntimeMetrics
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for RuntimeMetrics
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for RuntimeMetrics
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for RuntimeMetrics
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for RuntimeMetrics
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for RuntimeMetrics
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for RuntimeMetrics
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for RuntimeMetrics
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>