作业级资源分析最佳实践

本文以典型场景案例为您介绍如何通过MaxCompute控制台的作业分析功能进行作业级别资源分析,了解作业资源消耗详情,同时为您提供优化作业运行时长的建议。

背景信息

当遇到作业运行较长时间仍未结束且通过Logview难以定位原因,或作业运行结束后,发现作业运行时长达不到预期(作业运行慢),您需要分析是否是由于资源供给问题导致的。

MaxCompute提供作业分析功能,数据开发人员和管理员可通过MaxCompute控制台的作业分析功能查看历史作业和正在运行的作业,方便了解作业资源消耗详情。

注意事项

下述典型案例的评估方式比较简单,在实际业务实施过程中,您需要综合多方面考虑,建议您依据实际情况调整作业属性,并关注调整后的效果。

典型场景一:包年包月预留资源不足导致作业运行慢

某公司购买了包年包月预留计算资源50 CU供作业使用,每天有十余批(一千多个)作业固定运行在这些资源上。

数据开发工程师小K认为Instance ID为20240717020015831xxxxxxxxxxxx的作业运行时长过长,影响后续业务流程,于是前往MaxCompute控制台的工作区>作业运维页面搜索到该作业,并单击操作列的分析进行查看。image

image

可以通过作业级别资源消耗图表发现,包年包月预留计算资源50 CU已全部被占用,该作业也已经使用了大多数计算资源,但由于整体资源有限,Quota级别的等待CU也居高不下,说明预留计算资源不足以及时消化所有作业的请求,单作业也始终存在未被消化的请求,因此作业运行较慢。

如遇到上述情况,您可以参考以下两种解决方案:

  • 评估是否可以调整作业发起时间,避免集中请求资源而导致预留资源不足。

  • 作业请求资源情况无法调整,需要升配包年包月资源,您可以前往成本优化页面,设置您的期望作业完成时间,查看系统推荐的资源配置方案。

典型场景二:多作业同时抢占资源导致作业迟迟无法开始运行

某公司购买了包年包月预留计算资源50 CU供作业使用,每天有十余批(一千多个)作业固定运行在这些资源上。

数据开发工程师小K发现Instance ID为20240717020020365xxxxxxxxxxxx的作业运行时间过长,影响后续业务流程,于是前往MaxCompute控制台的工作区>作业运维页面搜索到该作业,发现该作业总运行时长为21分钟17秒,其中有超过一半时间都在等待,于是单击操作列的分析查看等待原因。image

image

可以看到,该作业在提交后的前13分钟一直处于等待资源状态,而Quota级别的使用值却已达到上限,说明有其他作业正在占用资源,导致该作业无法获取计算资源运行,在13分钟后开始慢慢获取资源运行,但始终没有达到Quota上限值。

您可以通过单击资源消耗图横轴的时间点,查看对应时刻计算Quota级别的资源分配情况,包括所有运行中等待中的作业资源分配情况,如下图显示10:04,有3个优先级为9的作业正在消耗计算资源,但本作业没有获取到资源,同时有5个作业存在请求资源被等待的情况。image

单击等待中作业资源分配对应的色块,可以跳转查看具体的作业列表,由下图可知该时刻占用资源较多的作业Instance ID为20240717020015831gza7jdf21uv3。image

深入了解作业20240717020015831gza7jdf21uv3的资源消耗情况,可以发现该作业确实在同一时间占用了较多的计算资源。image

如遇到上述情况,您可参考以下三种解决方案:

  • 评估是否可以调整作业发起时间,避免集中请求资源而导致多作业抢占有限的计算资源。

  • 评估是否可以调整作业优先级,如果无法避免多作业在同一时间发起,可以选择将重要作业的优先级调高,那么在多作业同时请求资源时,会先满足优先级较高的作业请求。

  • 升配包年包月资源,您可以前往成本优化页面,设置您的期望作业完成时间,查看系统推荐的资源配置方案。

数据开发工程师小k将该节点的任务优先级调整为0,在下一轮作业运行中,可以明显观察到作业的等待时间缩短,并且很快就获取到预留计算资源的50%用于作业计算,总运行时间从21分钟缩短至6分钟。