#task #async-task #applications #console #task-list #resources

bin+lib hds_tokio-console

这是一个测试包,请勿使用

4 个版本

0.1.14 2024 年 4 月 12 日
0.1.13 2024 年 4 月 10 日
0.1.12 2024 年 4 月 9 日
0.1.11 2024 年 4 月 9 日

#434 in 调试

每月 23 次下载

MIT 许可证

345KB
7K SLoC

tokio-console CLI

🎛️ Tokio 控制台:异步 Rust 程序的调试器。

crates.io Documentation Documentation (main branch) MIT licensed Build Status Discord chat

网站 | 聊天 | API 文档

概述

tokio-console 是异步 Rust 应用程序的调试和性能分析工具,它可以收集并显示应用程序中异步任务、资源和操作的大量诊断数据。控制台系统由两个主要组件组成

  • 📡️ 仪器,嵌入到应用程序中,收集异步运行时的数据,并通过控制台的线格式暴露
  • 🛰️ 消费者,连接到仪器化的应用程序,接收遥测数据,并将其显示给用户

该包是 tokio-console 遥测的主要消费者,是一个提供交互式调试界面的命令行应用程序。

入门

要使用控制台监视和调试程序,它必须被仪器化以发出控制台消耗的数据。然后,可以使用 tokio-console CLI 应用程序连接到应用程序并监视其操作。

仪器化应用程序

在控制台可以连接到应用程序之前,它必须首先被仪器化以记录 tokio-console 遥测。这样做最简单的方法是使用 console-subscriber

console-subscriber 需要应用程序的异步运行时(或运行时)以控制台可以记录的格式发射 tracing 数据。对于使用 Tokio 运行时的程序,这意味着

使用控制台

一旦应用程序被配置,可以使用以下命令安装控制台 CLI:

cargo install --locked tokio-console

运行 tokio-console 不带任何参数将会连接到本机默认端口 6669 监听的应用程序

tokio-console

如果应用程序不在本地运行,或者被配置为监听不同的端口,控制台也会接受一个类似命令的参数作为目标地址

tokio-console http://192.168.0.42:9090

也可以提供 DNS 名称作为目标地址

tokio-console http://my.instrumented.application.local:6669

有关所有命令行参数的完整列表,请参阅 此处

Tokio 控制台有多种不同的视图

任务列表

当控制台 CLI 启动时,它会显示程序中所有 异步任务 的列表

tasks list

任务以表格的形式显示。

  • Warn - 任务中活跃的警告数量。
  • ID - 任务的 ID。这与不稳定 tokio::task::Id API 返回的值相同(有关详细信息,请参阅文档)。
  • State - 任务的当前状态。
    • RUNNING/▶ - 任务目前正在被轮询。
    • IDLE/⏸ - 任务正在等待某些资源。
    • SCHED/⏫ - 任务已计划(它已被唤醒但尚未被轮询)。
    • DONE/⏹ - 任务已完成。
  • Name - 任务的名称,可以在使用不稳定 tokio::task::Builder::name() API 创建任务时设置。
  • Total - 任务的存活时间(忙、计划和空闲时间的总和)。
  • Busy - 任务积极执行的总时间。
  • Sched - 任务的计划时间(由运行时轮询的任务的总时间)。
  • Idle - 任务空闲的总时间(等待被唤醒)。
  • Polls - 任务被轮询的次数。
  • Target - 用于记录任务的跨度目标。
  • Location - 任务被创建的源代码位置。
  • Fields - 任务跨度上的附加字段。
    • kind - 可能是 task(对于异步任务)或 blocking(对于阻塞任务)。
    • fn - 阻塞任务的功能签名。异步任务不记录此字段,因为它在使用 async/await 时通常非常大。

使用 光标键,可以突出显示单个任务。在任务突出显示时按 enter 键将显示该任务的相关详细信息。

任务详情

此视图显示特定任务的相关详细信息

task details

任务详细信息视图包括百分位数和轮询(忙碌)时间和调度时间的可视直方图。

escape 键返回任务列表。

资源列表

r 键将从任务列表切换到资源列表,例如同步原语、I/O 资源等。

resource list

资源以类似于任务列表的表格形式显示。

  • ID - 资源的 ID。这是一个显示 ID,因为没有内部资源 ID 可引用。
  • Parent - 如果存在,则包含父资源 ID。
  • Kind - 资源类型,这是资源的高级分组。
  • Total - 此资源存在的时间总和。
  • Target - 资源类型的模块路径。
  • Type - 资源的具体类型,可能值取决于在 Tokio 中配置的资源,可能在不同版本之间有所不同。
  • Vis - 资源的可见性。
    • INT/🔒 - 内部,此资源仅由其他资源使用。
    • PUB/✅ - 公共的,在公共 Tokio API 中可用。
  • Location - 资源被创建的源代码位置。
  • Attributes - 附加的资源相关属性,例如类型为 Sleep 的资源记录睡眠的 duration

t 键将视图切换回任务列表。

与任务列表视图类似,资源列表视图可以使用 光标键进行导航。在突出显示资源时按 enter 键将显示该资源的相关详细信息。

资源详情

resource details --- sleep

资源详情视图列出了当前等待该资源的任务。这可能是一个任务,例如上面的 tokio::time::Sleep,或者大量的任务,如这个私有的 tokio::sync::batch_semaphore::Semaphore

resource details --- semaphore

资源详情视图包含属于该资源的异步操作表。

  • ID - 异步操作的ID。这是一个类似资源记录的显示ID。
  • Parent - 如果存在,父异步操作的ID。
  • Task - 执行此异步操作的任务的ID和名称。
  • Source - 调用异步操作的方法。
  • Total - 异步操作存在的时间总和(忙状态和空闲状态的累加,因为异步操作没有已计划状态)。
  • Busy - 异步操作忙碌的总时间(其未来正在积极轮询)。
  • Idle - 异步操作空闲的总时间(未来存在但未轮询)。
  • Polls - 异步操作被轮询的次数。
  • Attributes - 异步操作的额外属性。这些属性将根据异步操作的类型而变化。

与任务详情视图类似,在查看资源详情时按 escape 键将返回到资源列表。

可以使用配置文件(console.toml)来配置控制台的行为。有关详细信息,请参阅文档

获取帮助

首先,查看您的答案是否可以在API文档中找到。如果答案不在那里,Tokio Discord服务器中有一个活跃的社区。我们将很乐意尝试回答您的问题。您也可以在讨论页面上提问。

贡献

🎈 感谢您帮助改进项目!我们非常高兴有您!我们有一个贡献指南,帮助您参与Tokio控制台项目。

支持的Rust版本

托科控制台是基于最新的稳定版构建的。最低支持版本是1.64。当前托科控制台版本不保证在低于最低支持版本的Rust版本上构建。

许可证

本项目根据MIT许可证许可。

贡献

除非您明确说明,否则您提交的任何有意包含在托科中的贡献,都应按照MIT许可证许可,不附加任何其他条款或条件。

依赖关系

~25–39MB
~634K SLoC