Ray项目监控与调试:CLI与SDK使用指南
概述
Ray作为分布式计算框架,提供了强大的监控和调试能力。本文将详细介绍如何通过命令行界面(CLI)和软件开发工具包(SDK)来监控Ray集群状态、资源使用情况以及调试应用程序。
基础监控:ray status命令
ray status
是最基础的监控命令,运行在头节点上可查看集群整体状态:
$ ray status
输出包含两大关键信息:
-
节点状态:
- 健康节点列表
- 待启动节点
- 近期故障节点
-
资源使用情况:
- CPU使用率
- 内存使用量
- 对象存储使用量
- 资源需求情况
使用-v
参数可获取更详细的节点信息,特别有助于排查节点无法自动缩容的问题。
高级监控:Ray State API
Ray State API提供了更细粒度的集群状态监控能力,分为CLI和Python SDK两种形式。
核心概念
State API围绕以下几个核心概念构建:
- 资源类型:包括Actor、Task、Object、Job等
- 操作类型:
summary
:资源汇总视图list
:资源详细列表get
:单个资源详情logs
:日志访问
快速入门示例
假设我们有以下Ray脚本:
import ray
import time
ray.init(num_cpus=4)
@ray.remote
def task_running_300_seconds():
time.sleep(300)
@ray.remote
class Actor:
def __init__(self):
pass
# 创建2个任务
tasks = [task_running_300_seconds.remote() for _ in range(2)]
# 创建2个Actor
actors = [Actor.remote() for _ in range(2)]
查看任务汇总信息
ray summary tasks
输出示例:
======== Tasks Summary: 2022-07-22 08:54:38.332537 ========
Stats:
------------------------------------
total_actor_scheduled: 2
total_actor_tasks: 0
total_tasks: 2
Table (group by func_name):
------------------------------------
FUNC_OR_CLASS_NAME STATE_COUNTS TYPE
0 task_running_300_seconds RUNNING: 2 NORMAL_TASK
1 Actor.__init__ FINISHED: 2 ACTOR_CREATION_TASK
查看Actor列表
ray list actors
输出示例:
======== List: 2022-07-23 21:29:39.323925 ========
Stats:
------------------------------
Total: 2
Table:
------------------------------
ACTOR_ID CLASS_NAME NAME PID STATE
0 31405554844820381c2f0f8501000000 Actor 96956 ALIVE
1 f36758a9f8871a9ca993b1d201000000 Actor 96955 ALIVE
详细使用指南
汇总视图使用
汇总视图是监控的起点,可快速发现异常:
-
汇总所有Actor:
ray summary actors
-
汇总所有任务:
ray summary tasks
-
汇总所有对象:
ray summary objects
列表视图使用
列表视图提供更详细的信息,支持多种过滤条件:
-
列出所有节点:
ray list nodes
-
列出特定状态的Actor:
ray list actors -f state=ALIVE
-
列出特定状态的任务:
ray list tasks -f state=RUNNING
-
使用组合过滤条件:
ray list tasks -f state=RUNNING -f name="task_running_300_seconds()"
获取单个实体详情
获取特定实体的详细信息:
-
获取任务详情:
ray get tasks <TASK_ID>
-
获取节点详情:
ray get nodes <NODE_ID>
日志访问
State API支持访问各种日志:
-
查看集群可用日志文件:
ray logs cluster
-
查看特定Actor日志:
ray logs actor --id <ACTOR_ID>
最佳实践
-
监控流程:
- 先使用
summary
获取概览 - 发现异常后使用
list
缩小范围 - 最后使用
get
深入分析特定问题
- 先使用
-
日志分析:
- 定期检查关键Actor的日志
- 关注长时间运行的任务
- 注意资源使用异常情况
-
调试技巧:
- 使用
-v
参数获取详细输出 - 结合多个过滤条件精确定位问题
- 对关键任务添加有意义的名称便于追踪
- 使用
通过合理使用Ray提供的监控和调试工具,可以显著提高分布式应用的开发效率和运行稳定性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考