分享的好处非常明显。无论我们是共享一杯苏打,公寓还是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

模拟作业

接下来,为了产生合理的工作量,我们编写了一个脚本,将代表五个用户提交工作 – 其中三个是“工作人员”,两个是“合作伙伴”。为了增加可信度,我们生成了一个工作负载,每个用户有1,000个作业,总计5000个作业。每个作业将需要10秒钟。以10秒为单位的5,000个作业的工作负载,如果在单个计算机上运行理想情况下将花费50,000秒或138.9小时。因为我们的集群允许我们同时运行40个作业(我们有40个作业插槽配置,如下所示),我们的理论时间减少到3.47小时,几乎正是我实际调整工作量和写这个博客所需要的时间。

下面是OpenLava bhosts命令,显示我们的四个群集主机上的可用调度插槽。

[root @ ip-172-31-34-75〜]#bhosts

HOST_NAME状态JL / U MAX NJOBS运行SSUSP USUSP RSV

ip-172-31-34-75 ok  –  10 0 0 0 0 0

ip-172-31-35-144 ok  –  10 0 0 0 0 0

ip-172-31-35-97确定 –  10 0 0 0 0 0

ip-172-31-46-36 ok  –  10 0 0 0 0 0

[root @ ip-172-31-34-75〜]#

鉴于此集群配置和共享策略,下一步是向代表我们五个用户的定义提交5,000工作量。这个脚本的作用是提交工作数组,每个用户一个,每个包含1,000个作业。

#!/ bin / sh

sudo -u gord -i bsub -q share -J“gordArray [1-1000]”sleep 10

sudo -u dan -i bsub -q share -J“danArray [1-1000]”sleep 10

sudo -u william -i bsub -q share -J“williamArray [1-1000]”sleep 10

sudo -u david -i bsub -q share -J“davidArray [1-1000]”sleep 10

sudo -u james -i bsub -q share -J“jamesArray [1-1000]”sleep 10

我们执行脚本,通过运行脚本将这5,000个耗时10秒的作业提交到我们的集群。

[root@ip-172-31-34-75 ~]# ./fairshare_demo.sh

Job  is submitted to queue .

Job  is submitted to queue .

Job  is submitted to queue .

Job  is submitted to queue .

Job  is submitted to queue .

几分钟后,我们发出一个命令来查看我们的5000个作业,以了解它们的状态以及它们是如何被分配给群集主机的。显然,运行的作业正是我们所期望的比例。我们的每个员工有10个运行工作,总共30个工作(75%的插槽) – 我们的两个合作伙伴,相比之下每个运行5个工作,总计25%的插槽。

[root@ip-172-31-34-75 ~]# bjobs -u all | more

JOBID   USER    STAT  QUEUE      FROM_HOST   EXEC_HOST   JOB_NAME   SUBMIT_TIME

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[1] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[2] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[3] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[4] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[5] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[6] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[7] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[8] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *mArray[9] Mar 15 16:10

313     william RUN   share      ip-172-31-3 ip-172-31-3 *Array[10] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[1] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[2] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[3] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[4] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[5] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[6] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[7] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[8] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *dArray[9] Mar 15 16:10

314     david   RUN   share      ip-172-31-3 ip-172-31-4 *Array[10] Mar 15 16:10

311     gord    RUN   share      ip-172-31-3 ip-172-31-3 *dArray[1] Mar 15 16:10

312     dan     RUN   share      ip-172-31-3 ip-172-31-3 *nArray[1] Mar 15 16:10

311     gord    RUN   share      ip-172-31-3 ip-172-31-3 *dArray[2] Mar 15 16:10

312     dan     RUN   share      ip-172-31-3 ip-172-31-3 *nArray[2] Mar 15 16:10

311     gord    RUN   share      ip-172-31-3 ip-172-31-3 *dArray[3] Mar 15 16:10

312     dan     RUN   share      ip-172-31-3 ip-172-31-3 *nArray[3] Mar 15 16:10

311     gord    RUN   share      ip-172-31-3 ip-172-31-3 *dArray[4] Mar 15 16:10

312     dan     RUN   share      ip-172-31-3 ip-172-31-3 *nArray[4] Mar 15 16:10

311     gord    RUN   share      ip-172-31-3 ip-172-31-3 *dArray[5] Mar 15 16:10

312     dan     RUN   share      ip-172-31-3 ip-172-31-3 *nArray[5] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[1] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[2] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[3] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[4] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[5] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[6] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[7] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[8] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *sArray[9] Mar 15 16:10

315     james   RUN   share      ip-172-31-3 ip-172-31-3 *Array[10] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *dArray[6] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *dArray[7] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *dArray[8] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *dArray[9] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *Array[10] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *Array[11] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *Array[12] Mar 15 16:10

311     gord    PEND  share      ip-172-31-3             *Array[13] Mar 15 16:10

分配与我们的共享策略直接一致。

bqueue s命令作用是显示出谁的工作是由用户执行特定的队列分配。

[root@ip-172-31-34-75 ~]# bqueues -l share

QUEUE: share

— Queue to demonstrate fairshare scheduling policy

PARAMETERS/STATISTICS

PRIO NICE     STATUS       MAX JL/U JL/P JL/H NJOBS  PEND  RUN  SSUSP USUSP  RSV

30  20    Open:Active     –    –    –    –  4720  4680    40     0     0    0

Interval for a host to accept two jobs is 0 seconds

SCHEDULING PARAMETERS

r15s   r1m  r15m   ut      pg    io   ls    it    tmp    swp    mem

loadSched   –     –     –     –       –     –    –     –     –      –      –

loadStop    –     –     –     –       –     –    –     –     –      –      –

SCHEDULING POLICIES:  FAIRSHARE

TOTAL_SLOTS: 40 FREE_SLOTS: 0

USER/GROUP   SHARES   PRIORITY     DSRV     PEND      RUN

staff/           3       0.750       30     2760       30

william          1       0.333       10      920       10

david            1       0.333       10      920       10

james            1       0.333       10      920       10

partners/        1       0.250       10     1920       10

gord             1       0.500        5      960        5

dan              1       0.500        5      960        5

USERS:  all users

HOSTS:  all hosts used by the OpenLava system

请注意,即使集群中有成千上万个作业,bqueues -l输出显示的共享策略仍具有完全保真性。有一段时间,在工作完成之后,我们看到,我们的工作人员已经完成了超过50%的工作,资源分配仍然完美平衡。

SCHEDULING POLICIES:  FAIRSHARE

TOTAL_SLOTS: 40 FREE_SLOTS: 40

USER/GROUP   SHARES   PRIORITY     DSRV     PEND      RUN

staff/           3       0.750       30     1380        0

william          1       0.333       10      460        0

david            1       0.333       10      460        0

james            1       0.333       10      460        0

partners/        1       0.250       10     1460        0

gord             1       0.500        5      730        0

dan              1       0.500        5      730        0

USERS:  all users

HOSTS:  all hosts used by the OpenLava system

OpenLava的Fairshare调度策略有多公平?虽然这是一个非常简单的例子,但基于这个测试,Openlava的Fairshare调度策略看起来很强大!

在OpenLava中探索Fairshare调度相关推荐

  1. 带你探索CPU调度的奥秘

    摘要:本文将会从最基础的调度算法说起,逐个分析各种主流调度算法的原理,带大家一起探索CPU调度的奥秘. 本文分享自华为云社区<探索CPU的调度原理>,作者:元闰子. 前言 软件工程师们总习 ...

  2. linux什么是实时调度,Linux中的实时调度

    svenfx.. 17 在实时调度中,FIFO和RR与非实时调度具有完全相同的含义.始终以FIFO方式选择过程,然而,与SCHED_RR的时间量不同,SCHED_FIFO的时间量不受限制. SCHED ...

  3. 【博士论文】集群系统中的网络流调度

    来源:专知 本文为论文,建议阅读5分钟当前,集群系统的部署和使用非常广泛. 来自清华大学张彤的博士论文,入选2021年度"CCF优秀博士学位论文奖"初评名单! https://ww ...

  4. mysql originator_MySQL中的事件调度器EVENT

    MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序. EVENT由其名称和所在的schema唯一标识. EVENT根据计划执行特定操作.操作 ...

  5. java定时调度main方法_java相关:Spring中实现定时调度的几种方法

    java相关:Spring中实现定时调度的几种方法 发布于 2020-11-28| 复制链接 本篇文章主要介绍了Spring中实现定时调度示例,可以在无人值守的时候系统可以在某一时刻执行某些特定的功能 ...

  6. 操作系统中的处理机调度调度_操作系统中的流程分类和调度

    操作系统中的处理机调度调度 处理 (Process) In the operating system, there are numerous task and application program ...

  7. 操作系统中的处理机调度调度_操作系统中的多处理器调度

    操作系统中的处理机调度调度 多处理器操作系统 (Multiprocessor Operating system) A multiprocessor system consists of several ...

  8. 一文详解MySQL中的事件调度器EVENT

    MySQL中的事件调度器,EVENT,也叫定时任务,类似于Unix crontab或Windows任务调度程序. EVENT由其名称和所在的schema唯一标识. EVENT根据计划执行特定操作.操作 ...

  9. hadoop 依赖式job_Java项目中使用XXL-JOB调度框架

    Java项目中使用XXL-JOB调度框架 我们的最近几个新项目在使用XXL-JOB进行任务调度,今天就分享下这个框架. XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量 ...

  10. 计算机控制多少度,计算机控制中的模糊调度设计

    计算机控制中的模糊调度设计 研究了具有模糊截止期的多控制任务的实时调度问题,提出了奉献度的概念和最大奉献优先(LDF)的调度策略.为了减小因任务间频繁切换造成的系 (本文共9页) 阅读全文>&g ...

最新文章

  1. 一禁了之还是放开应用?面部识别“人红是非多”
  2. 1.1 字符串的旋转+1.2 字符串的包含
  3. 简单的11步在Laravel中实现测试驱动开发
  4. MySQL入门教程:MySQL8安装卸载工具
  5. Unity物理引擎基础优化准则
  6. AIX补丁中TL、SP、CSP、IF、PTF的含义
  7. vue项目为什么选择svg图标
  8. 山西初中计算机,山西初中信息技术教学计划
  9. YYLabel和YYTextView的使用
  10. jquery word export 导出html内容无样式或无图片问题
  11. OpenGL学习笔记(七)-深度测试-模板测试-混合
  12. 大数据开发hive数据库常用命令汇总
  13. 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器
  14. 【算法系列】卡尔曼滤波算法
  15. 华为模拟器小型网络组建
  16. 来自Naval Ravikant 的十句话
  17. Maven的本地初始配置三步走
  18. Log4j2远程命令执行2-vulfocus-wp
  19. 全国中小学信息技术创新与实践大赛:加码未来编程赛道
  20. notion 科研_Extensions of the notion of overall comonotonicity to partial comonotonicity

热门文章

  1. 用Html制作网页简单例子
  2. 采用gfzrnx软件进行RINEX批量格式转换(rinex3到rinex2,rinex2到rinex3)
  3. 分享一个奇葩SM2258XT板子(100-H00112581-590)没有CE跳线,只有CE飞线,顺便量产开卡
  4. SageMath使用指南——笔记
  5. matlab 系数矩阵存储,用Matlab对矩阵进行LU分解法 值得收藏
  6. C# CAD二次开发之字体替换 文字样式 处理DBText
  7. 图解三层交换机:局域网都用它来组网
  8. linux学习--体验免安装版本的linux
  9. 在Ubuntu Linux Server上使用奔图P2206NW打印机
  10. C-V2X通信架构中,PC5接口和Uu接口的区别是什么?