pub struct RuntimeMetrics { /* private fields */ }展开描述
运行时 metrics 的句柄。
此句柄内部使用引用计数,可以自由克隆。可以使用 Runtime::metrics 方法获取 RuntimeMetrics 句柄。
实现§
Source§impl RuntimeMetrics
impl RuntimeMetrics
Sourcepub fn num_workers(&self) -> usize
pub fn num_workers(&self) -> usize
返回运行时使用的工作线程数。
worker 数量通过在 runtime::Builder 上配置 worker_threads 来设置。使用 current_thread 运行时时,返回值始终为 1。
§示例
use tokio::runtime::Handle;
let metrics = Handle::current().metrics();
let n = metrics.num_workers();
println!("Runtime is using {} workers", n);Sourcepub fn num_alive_tasks(&self) -> usize
pub fn num_alive_tasks(&self) -> usize
返回运行时中当前存活任务的数量。
派生任务时此计数器会增加,任务退出时则会减少。
注意:在使用多线程运行时时,此数字可能不具有强一致性,即可能没有任务在运行,但 metric 却报告有任务。
§示例
use tokio::runtime::Handle;
let metrics = Handle::current().metrics();
let n = metrics.num_alive_tasks();
println!("Runtime has {} alive tasks", n);Sourcepub fn global_queue_depth(&self) -> usize
pub fn global_queue_depth(&self) -> usize
返回运行时全局队列中当前已调度的任务数。
从非运行时线程派生或通知的任务使用运行时的全局队列进行调度。此 metric 返回全局队列中待处理任务的当前数量。因此,随着新任务被调度和处理,返回值可能增加或减少。
§示例
use tokio::runtime::Handle;
let metrics = Handle::current().metrics();
let n = metrics.global_queue_depth();
println!("{} tasks currently pending in the runtime's global queue", n);Sourcepub fn worker_total_busy_duration(&self, worker: usize) -> Duration
pub fn worker_total_busy_duration(&self, worker: usize) -> Duration
返回给定工作线程已忙的时间量。
worker 忙时计时从运行时创建时的零开始,每当 worker 花费时间处理工作时就会增加。使用此值可以指示给定 worker 的负载。如果大部分时间都处于忙状态,则说明 worker 负载较重,将不那么频繁地检查入站事件。
此计时器单调递增,永不递减或重置为零。
§Arguments
worker 是被查询 worker 的索引。给定值必须介于 0 和 num_workers() 之间。该索引唯一标识一个 worker,并在运行时实例的整个生命周期内持续标识该 worker。
§Panics
当 worker 表示无效 worker(即大于或等于 num_workers().
§示例
use tokio::runtime::Handle;
let metrics = Handle::current().metrics();
let n = metrics.worker_total_busy_duration(0);
println!("worker 0 was busy for a total of {:?}", n);Sourcepub fn worker_park_count(&self, worker: usize) -> u64
pub fn worker_park_count(&self, worker: usize) -> u64
返回给定工作线程 park 的总次数。
worker park 计数从运行时创建时的零开始,每当 worker park 线程等待新的入站事件处理时增加一。这通常意味着 worker 已处理完所有待处理工作,当前处于空闲状态。
此计数器单调递增,永不递减或重置为零。
§Arguments
worker 是被查询 worker 的索引。给定值必须介于 0 和 num_workers() 之间。该索引唯一标识一个 worker,并在运行时实例的整个生命周期内持续标识该 worker。
§Panics
当 worker 表示无效 worker(即大于或等于 num_workers().
§示例
use tokio::runtime::Handle;
let metrics = Handle::current().metrics();
let n = metrics.worker_park_count(0);
println!("worker 0 parked {} times", n);Sourcepub fn worker_park_unpark_count(&self, worker: usize) -> u64
pub fn worker_park_unpark_count(&self, worker: usize) -> u64
返回给定工作线程 park 和 unpark 的总次数。
worker park/unpark 计数从运行时创建时的零开始,每当 worker park 线程等待新的入站事件处理时增加一。这通常意味着 worker 已处理完所有待处理工作,当前处于空闲状态。当新工作变得可用时,worker 会被 unpark,park/unpark 计数再次增加一。
奇数表示 worker 当前处于 parked 状态。 偶数表示 worker 当前处于 active 状态。
此计数器单调递增,永不递减或重置为零。
§Arguments
worker 是被查询 worker 的索引。给定值必须介于 0 和 num_workers() 之间。该索引唯一标识一个 worker,并在运行时实例的整个生命周期内持续标识该 worker。
§Panics
当 worker 表示无效 worker(即大于或等于 num_workers().
§示例
use tokio::runtime::Handle;
let metrics = Handle::current().metrics();
let n = metrics.worker_park_unpark_count(0);
println!("worker 0 parked and unparked {} times", n);
if n % 2 == 0 {
println!("worker 0 is active");
} else {
println!("worker 0 is parked");
}Trait 实现§
Source§impl Clone for RuntimeMetrics
impl Clone for RuntimeMetrics
Source§fn clone(&self) -> RuntimeMetrics
fn clone(&self) -> RuntimeMetrics
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. 更多信息