分享的好处非常明显。无论我们是共享一杯苏打,公寓还是HPC集群,分享都可以降低我们的费用。
OpenLava 的功能之一是fairshare调度。对于不熟悉fairshare调度的用户,这个新特性指的是根据策略共享资源。如果一个集群花费了一百万美元,而部门A贡献了800,000美元,而部门B贡献了200,000美元,基于80/20(当有争用时)共享资源可能被认为是公平的。Fairshare不意味着“平等份额” – 但它的意思是根据政策分享,通常与现有资源成比例。A部门可能有不同级别的员工。如果我的首席科学家和实习生之间的资源冲突,我可能需要一些措施,以确保聪明的实习生不能垄断集群,留下我的首席科学家无所适从。同时我也想测试一下层次共享。
OpenLava获取Fairshare
Fairshare调度在IBM Platform LSF中已存在多年,在OpenLava中,开源调度程序添加了此功能。为了演示共享场景,我将OpenLava设置如下:
首先,一个OpenLava配置文件中,我定义了两组用户。即我公司有工作人员和合作伙伴。我为他们各自设置一个组,并声明每个组的成员。三名工作人员将以1:1:1的比例共享资源,合作伙伴组的两名成员将共享平等分配的资源,如果有需要的话,我还可以选择不同的比率。这代表我的“部门内分享”政策。
Begin UserGroup
GROUP_NAME GROUP_MEMBER USER_SHARES
#G1 (david john zebra) ([david, 1] [john,1] [zebra, 1])
#G2 (crock wlu kluk) ([crock, 2] [wlu,1] [kluk,1])
staff (william david james) ([wlu, 1] [david, 1] [james, 1])
partners (gord dan) ([gord, 1] [dan, 1])
End UserGroup
我们在lsb.users的配置中添加一个附加约束。我不想任何时候,我的任何合作伙伴单独消耗超过五个集群中的五个位置(意味着他们最多同时在集群主机上运行五个作业)。语法partners @表示限制适用于组的每个成员。
Begin User
USER_NAME MAX_JOBS JL/P
#develop@ 20 8
#support 50 –
partners@ 5 –
End User
接下来,我们定义一个称为“共享”的队列,它将在我们的两组用户(员工和合作伙伴)之间实施分配策略。这是在lsb.queues中完成的,语法如下。每分配给员工三个位置,合作伙伴只能获得一个 – 这意味着我们的员工将在保证的基础上获得75%的资源 – 如果没有合作伙伴提交工作,这个比例甚至会更大。
Begin Queue
QUEUE_NAME = share
PRIORITY = 30
NICE = 20
DESCRIPTION = Queue to demonstrate fairshare scheduling policy
FAIRSHARE = USER_SHARES[[staff,3] [partners,1]]
End Queue