LSF实践专题(16):reservation调度策略

在LSF集群中作业比较多的时候, 会出现多个作业对同一个计算节点的资源竞争的情况。

当竞争越激烈,资源需求越低的作业会更容易得到所需资源,而对资源需求越多越复杂的作业,就相对越难得到满足。

比如一个节点有16个CPU和32GB内存(为了计算方便,不计入系统运行所需内存),当前运行的作业1占用了8个CPU,16GB内存,作业2和作业3各占用了2个CPU和4GB内存,这样,当前节点还剩下4个CPU和8GB内存可以使用。假设当前集群其他节点都已经达到最大负载,只有当前节点可以使用。

假设用户此时提交了一个新作业——作业A,并指定该作业需要8个CPU和16G内存,这时,所剩的计算资源不够,所以作业A无法运行只能继续等待。

当作业A等待了一段时间后,又有其他用户提交了作业B,而作业B只需要2个CPU和4GB内存,此时,当前节点的剩余资源对作业B来说是足够的,所以作业B立刻就可以运行了。

但是,这时节点空余的计算资源也相应的减少到了2个CPU和4GB内存,这时,如果作业2和作业3结束,会释放4个CPU和8GB内存,如果没有作业B,那么当前剩余的资源正好是8个CPU和16GB内存,作业A刚好可以运行。

但是由于作业B的运行,此时作业A依然无法运行,如果这时候又来了需求比作业A小的作业C,那么当作业B结束时,作业A很有可能依然无法运行。如果小作业很多,又无法同时结束,作业A将很难拿到足够的资源运行,并且一直等待,而且这种情况下即使作业A提交到一个优先级很高的队列,也依然无法改善,因为是资源不足导致作业A没有立刻运行。

这种情况下,一种方式是为作业A所在的队列设置之前介绍过的抢占机制(PREEMPTION)。

还有一种解决方案是使用reservation策略。这种策略可以为设置了该策略的队列中的作业预先保留一部分计算资源,不给其他作业使用,这样就可以阻止作业A在等待时,作业B提前运行。

我们通过在队列中设置RESOURCE_RESERVE参数就可以启用reservation策略,如下图所示,定义了2个队列(lowQ与highQ),并且都设置了reservation策略。

图片

下面我们先来测试一下这个功能的基本作业,再详细解读参数的含义。

图片

我们看到当前的集群内只有一台可用的节点,slots是32,可用内存是6.7GB。我们先提交3个作业<519>、<520>和<521>来占用一部分资源。

图片

如上所示,当前节点可用资源还有8个slots,1.8GB内存。这时我们向队列lowQ提交一个需求16个slots和4GB内存的作业<522>。

图片

因为slots和内存都不够,所以lowQ上的作业<522>会处于pending状态。

图片

通过bjobs -l命令, 我们看到作业<522>虽然没有运行,但是LSF为它预留了当前空余的8个slots和1.8GB内存。

图片

通过bhosts和bhosts -l命令,我们也可以看到slots对应的reservation信息,RSV所对应的数字,就是有多少个slots被预留给作业了,同时,我们看到这个节点的状态也变成了closed,因为剩余的8个slots都被作业<522>预留了,剩余slots为0。

接下来我们杀掉一个占用了8个slots的作业<519>,这会释放8个slots和2GB内存,这样,空余内存会是3.8GB。

图片

虽然slots足够,但是内存仍然不够作业<522>的需求。

图片

图片

这时我们向lowQ提交一个需求更低的作业<526>。

图片

我们看到,新提交的作业<526>并不能立刻运行,因为slots和内存仍然在被作业<522>预留。

图片

如果作业<522>要等很久才能拿到全部的所需资源,那么资源一直被它占用,这对整个集群的利用率是一个很大的降低,有没有好的解决办法?

我们再看一下队列里面启用reservation的参数:

RESOURCE_RESERVE=MAX_RESERVE_TIME[10]

这里的MAX_RESERVE_TIME是指定一个作业最长可以连续预留资源多久,这里的数字代表的是多少分钟。

我们指定了10就表示一次预留最长可以保留10分钟,这10分钟内,预留给一个作业的资源不会分给其它同优先级队列的作业。

但是如果超过了这个时间,预留资源的作业仍然没有运行,LSF会尝试把资源调度给其它等待资源的同优先级队列的作业。

如果没有其它作业拿到这部分资源后可以运行,LSF也会继续把资源预留给等待的作业<522>,并且重新开始计时,到下一个10分钟再次检查是否需要释放资源。

图片

我们看到作业<526>在等待了366秒后,拿到了原本预留给作业<522>的资源,并且开始运行(因为这时作业<522>预留的10分钟期限已经到了,LSF发现把资源给<526>可以让<526>先运行,于是重新进行了分配)。

如果此时没有作业<526>,或者<526>即使拿到了所有预留给<522>的资源仍然不能运行,会再次在新一轮周期内把资源预留给作业<522>。

作业<526>运行占用了4个slots和500MB内存,所以LSF把剩下的12个slots和3408MB内存继续预留给作业<522>。

这时,我们向队列highQ提交一个同样不能满足需求的作业<527>。

图片

我们同样为队列highQ配置了reservation,而作业<522>的新一个预留周期还没到,LSF是否会保留作业<522>的预留资源呢?

图片

图片

我们看到,LSF此时会打破之前的预留方案,把资源重新预留给优先级更高的队列中的作业<527>。

队列上的reservation参数,除了前面介绍的RESOURCE_RESERVE,还有一个SLOT_RESERVE参数,配置方法相同,所不同的是,SLOT_RESERVE只为作业预留slots资源。

图片

配置了RESOURCE_RESERVE或者SLOT_RESERVE后,我们通过bqueues -l也可以看到对应的信息:

图片

图片

以上是对LSF的reservation策略的简单介绍,感谢您的耐心阅读。

欢迎关注下方微信公众号【HPC常青园】,共同交流HPC集群管理经验和最佳实践。如果您有关于HPC集群的具体需求,欢迎邮件沟通交流:hpc@ivyent.cn。

HPC常青园

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: LSF(Load Sharing Facility)是一种用于资源管理和作业调度的软件工具,其中的LSF license调度是指对LSF软件的许可证的管理和调度。 在使用LSF软件时,用户需要获得相应的许可证才能正常使用软件的全部功能。而LSF license调度就是对这些许可证的分配和调度,以确保每个用户都能够按照自己的需求使用软件。 LSF license调度通常涉及以下几个方面: 1.许可证分配:LSF管理员会根据用户的需求和优先级,将可用的许可证分配给不同的用户。通常将许可证分配给具有高优先级或需求的用户,以确保他们能够在需要时优先使用软件。 2.许可证回收:当一些用户不再需要使用LSF软件时,拥有许可证的管理员可以及时收回许可证,以便重新分配给其他用户。这样可以最大限度地提高许可证的利用率和效率。 3.许可证管理:LSF管理员还需要定期监控和管理许可证的使用情况,确保许可证的数量和使用情况与实际需求相符。如果发现许可证不足或者存在滥用的情况,管理员需要及时采取相应的措施。 总之,LSF license调度是对LSF许可证进行合理分配和管理的过程,旨在最大程度地满足用户的需求,提高许可证的利用效率,确保软件系统的正常运行。 ### 回答2: LSF(Load Sharing Facility)是一个用于集群计算的作业调度和管理系统,可以帮助高性能计算(HPC)环境下的任务有效地分配和使用资源。在LSF中,license调度是指对软件许可证资源的优化调度和管理。 在一个HPC环境中,常常需要使用各种不同的软件工具和库,这些工具和库通常需要相应的许可证才能合法使用。而软件许可证往往是有限的,所以对许可证资源进行调度是非常重要的。 LSF通过对许可证的分配和释放进行智能调度,以最大程度地利用许可证资源并最小化等待时间。它根据作业的需求和许可证的可用性,动态地分配许可证给需要它们的作业,尽量避免许可证的过度分配或浪费。同时,当一个作业不再需要许可证时,LSF会将其释放,以便其他作业能够利用这些许可证资源。 LSF还可以通过许可证的限制和优先级设置,来确保重要的作业能够获得所需的许可证资源,而次要的作业则可能会被推迟或降低许可证的使用。这样可以确保关键任务的顺利执行,同时最大限度地提高整个集群的利用率。 总而言之,LSF的license调度功能是为了合理、高效地管理和调度许可证资源,以确保HPC环境中的作业能够得到所需的许可证,并在最短的时间内完成任务。这样可以提高计算集群的利用率,提升工作效率和系统性能。 ### 回答3: LSF(Load Sharing Facility)是一种用于分布式计算环境的作业调度和资源管理软件。在LSF中,license调度是指通过合理管理和分配软件许可证(license),以确保系统中所有用户能够合理使用软件许可证资源。 LSF License调度的主要目标是实现最大化利用软件许可证资源,同时确保用户的需求得到满足。为了实现这一目标,LSF会根据用户的需求和系统的实际情况进行许可证资源的分配和调度LSF License调度的过程通常包括以下几个步骤: 1. 许可证资源的监控和管理:LSF会监控系统中可用的许可证资源数量和使用情况,并对许可证资源进行管理。这包括许可证资源的获取、分配、释放和回收等操作。 2. 许可证资源的分配:根据用户提交的作业需求和当前系统的状况,LSF会决定如何分配许可证资源给不同的作业。通常,LSF会采用一定的算法和策略来进行许可证资源的分配,例如根据作业的优先级、作业的资源需求和系统的负载情况等。 3. 许可证资源的调度和冲突处理:由于许可证资源是有限的,可能会出现作业之间对许可证资源的竞争。LSF会根据系统的策略和规则来调度许可证资源的分配顺序,并解决因许可证资源冲突而导致的调度问题。 4. 许可证资源的回收和释放:当作业使用完许可证资源后,LSF会将这些许可证资源回收并释放给其他等待的作业使用。这样可以确保系统中许可证资源的充分利用。 总之,LSF License调度是为了合理分配和管理系统中的许可证资源,以实现最大化的资源利用和满足用户的需求。通过LSF License调度,可以提高系统的效率和资源利用效率,同时提升用户的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ivyent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值