IBM LSF 作业负载管理

news2024/11/25 7:47:50

了解 LSF 作业生命周期。 使用 bsub 将作业提交到队列,并指定作业提交选项以修改默认作业行为。 提交的作业在队列中等待,直到将它们调度并分配到主机上来执行。 在作业分发时,LSF 会检查哪些主机有资格运行该作业。

一、作业生命周期

LSF 作业会经历几种状态,从作业提交开始,到分发,执行和最终返回作业结果。

1. 提交一个作业

您可以使用 bsub 命令从 LSF 客户端或服务器提交作业。

如果在提交作业时未指定队列,则该作业将提交到默认队列。

作业在等待调度时被排在队列中。 等待的作业处于 PEND 状态。 如果在配置文件lsb.params中定义了 MAX_INFO_DIRS 参数,则该作业将保存在 LSF_SHAREDIR/cluster_name/logdir/info/ 目录中的作业文件中,或者在其子目录之一中。

  • 作业 ID

    提交作业时,LSF 为每个作业分配唯一的作业 ID。

  • 作业名

    您还可以使用 bsub-J 选项为作业分配一个任意名称。 与作业 ID 不同,作业名称不一定是唯一的。

2. 调度该作业

  • 主批处理守护程序(mbatchd)查看队列中的作业,然后将要调度的作业,发送到主批处理调度程序守护程序(mbschd)。 作业以预设的时间间隔进行调度(由配置文件 lsb.params 中的参数 JOB_SCHEDULING_INTERVAL 定义)。

  • mbschd 根据以下内容评估作业并制定计划决策:

    • 作业优先级

    • 调度策略

    • 可用资源

  • mbschd 选择作业可以运行的最佳主机,并将其决策发送回 mbatchd。资源信息由主负载信息管理器(LIM)以预设的时间间隔,从服务器主机上的 LIM 上收集。 主 LIM 将此信息传达给 mbatchd,后者又将其传达给 mbschd 以支持调度决策。

3. 分配该作业

mbatchd 收到调度决策后,便立即将作业分配给主机。

4. 运行该作业

从属批处理守护程序(sbatchd)具有以下功能:

  • mbatchd 接收请求。

  • 为作业创建一个子 sbatchd

  • 创建执行环境。

  • 通过使用远程执行服务器(res)启动作业。

    LSF 将执行环境从提交主机复制到执行主机:

    • 作业所需的环境变量

    • 作业开始运行的工作目录

    • 其他与系统有关的环境设置

      • 在 UNIX 和 Linux 上,资源限制和 umask

      • 在 Windows,桌面和 Windows 根目录

        作业在提交该作业的用户帐户下运行,并且状态为 RUN。

5. 返回结果

作业完成后,如果作业完成没有任何问题,则会被分配为 "DONE" 状态。 如果错误导致作业无法完成,则会为该作业分配 "EXIT" 状态。

sbatchd 传递作业信息,例如错误信息,并输出到 mbatchd

6. 向客户发送 email

mbatchd 通过电子邮件将作业输出,作业错误和作业信息返回给提交主机。 使用 bsub-o -e 选项将作业输出和错误发送到文件。

作业报告通过电子邮件发送给 LSF 客户端,其中包括以下信息:

  • 作业信息:

    • CPU 使用

    • 内存使用

    • 提交作业的帐户名称

  • 作业输出

  • 错误

二、作业提交

使用 bsub 命令在命令行上提交作业。 您可以使用 bsub 命令指定许多选项来修改默认行为。 作业必须提交到队列中。

队列

队列代表一组挂起等待的作业,它们按定义的顺序排列,并等待其使用资源的机会。 队列执行不同的作业调度和控制策略。

队列有以下特征:

  • 优先级

  • 名称

  • 队列限制 (对主机、作业数、用户、组、或者处理器的限制)

  • 标准 UNIX 和 Linux 限制(内存,交换,进程,CPU)

  • 调度策略

  • 管理员

  • 运行条件

  • 负载共享阈值条件

  • UNIX nice 值 (设置 UNIX 和 Linux 调度程序优先级)

队列优先级

定义搜索队列,以确定要处理的作业的顺序。 LSF 管理员为队列分配了优先级,其中数值越高,优先级越高。 LSF按从高到低的优先级为队列提供服务。 如果多个队列具有相同的优先级,则 LSF 按照先来先服务的顺序,调度这些队列中的所有作业。

自动队列选择

提交作业时,LSF 会考虑作业要求,并自动从候选默认队列列表中,选择合适的队列。

LSF 根据以下约束条件选择合适的队列:

  • 用户访问限制

    不允许该用户提交作业的队列,不会予以考虑。

  • 节点限制

    如果作业明确指定了可以在其上运行作业的主机节点列表,则必须将所选的队列,配置为作业发送到列表中的主机。

  • 队列状态

    不考虑关闭的队列。

  • 排他执行限制

    如果作业需要排他执行,则未配置为接受排他作业的队列,将不予考虑。

  • 作业所需的资源

    作业请求的资源,必须在所选队列的资源分配限制内。

如果多个队列满足上述要求,则选择满足要求的候选队列中,列出的第一个队列。

三、作业调度和分配

提交的作业在队列中等待,直到将它们调度并分配到主机上来执行。

将作业提交给 LSF 时,许多因素控制着作业开始的时间和地点:

  • 队列或主机的活动时间窗口

  • 作业的资源需求

  • 合格主机的可用性

  • 各种作业槽位限制

  • 作业依赖条件

  • Fairshare 限制(已配置的用户共享策略)

  • 负载条件

调度策略

为了解决各种问题,LSF 允许在同一集群中,使用多种调度策略。 LSF 有几种队列调度策略,例如排他,抢占,公平共享和分层公平共享。

  • 先来先服务(FCFS)调度:

    默认情况下,队列中的作业按 FCFS 顺序分派。 这意味着作业将根据其在队列中的顺序进行调度。

  • 服务水平协议(SLA)调度:

    LSF 中的 SLA 是 “及时” 的调度策略,用于调度 LSF 管理员和 LSF 用户之间约定的服务。 SLA 调度策略定义应从每个 SLA 运行多少作业,以达到配置的目标。

  • 公平共享调度:

    如果您为队列指定一个公平共享调度策略,或者如果已配置主机分区,则 LSF 会根据分配的用户份额,资源使用,或其他因素在用户之间调度作业。

  • 抢占式调度:

    您可以指定所需的行为,以便当两个或多个作业竞争同一资源时,一个作业优先于另一个作业。 抢占不仅适用于作业槽位,而且还适用于提前预订(为特定作业保留主机节点)和许可证(使用 IBM Platform License Scheduler)。

  • 回填式调度:

    允许小型作业在为其他作业保留的作业槽位上运行,前提是,回填作业在保留时间到期,且资源使用到期之前完成。

调度与分配

定期安排作业(默认为5秒)。 一旦安排了作业,就可以立即将其分配给主机。

为了防止任何节点过载,默认情况下,LSF 在将作业分发到同一节点之间,会等待一小段时间。

分配顺序

作业不一定按提交顺序分派。

定义队列时,每个队列都有一个由 LSF 管理员设置的优先级编号。LSF 会尝试首先从优先级最高的队列中,启动作业。

LSF 按以下顺序考虑要分派的作业:

  • 对于每个队列,从最高优先级到最低优先级。 如果多个队列具有相同的优先级,则 LSF 会按照先来先服务(FCFS)的顺序,调度这些队列中的所有作业。

  • 对于队列中的每个作业,根据 FCFS 顺序。

  • 如果有任何主机有资格运行此作业,将在最合格的主机上启动该作业,并标记该主机不具备启动任何其他作业的资格,直到经过 JOB_ACCEPT_INTERVAL 参数所指定的时间段为止。

四、节点选择

每次 LSF 尝试分配作业时,它都会检查哪些主机有资格运行该作业。

许多条件决定了节点是否符合条件:

  • 主机调度窗口

  • 作业的资源需求

  • 队列的资源需求

  • 队列中的节点列表

  • 节点负载水平

  • 节点的作业槽位限制

  • 用户配额与用户限制

只有满足所有条件,主机节点才有资格运行作业。 如果队列中已有一个作业,并且该作业的合格主机可用,则该作业将放置在该主机上。 如果有多个主机符合条件,则根据作业和队列资源要求,在最佳主机上启动作业。

主机负载级别

如果主机的负载索引(例如r1m,pg,mem)的值,在配置的调度阈值之内,则该主机可用。 您可以配置两种调度阈值:主机和队列。 如果主机上的任何负载索引,超过相应的主机阈值或队列阈值,则该主机不符合运行任何作业的条件。

合格的主机

当 LSF 尝试放置作业时,它将获取所有主机的当前负载信息。

将每个主机上的负载级别,与在 lsb.hosts 的 Host 部分中,为该主机配置的调度阈值,以及在 lsb.queues 中配置的按队列调度阈值进行比较。

如果任何负载索引,超过其按队列或按主机调度的阈值,则不会在该主机上启动任何新作业。

五、作业执行环境

当 LSF 运行作业时,它将环境从提交主机,复制到执行主机。

执行环境包括以下信息:

  • 作业所需的环境变量

  • 作业开始运行的工作目录

  • 其他与系统有关的环境设置,例如资源使用限制

共享的用户目录

为了提供透明的远程执行,LSF 命令确定用户的当前工作目录,并在远程主机上使用该目录。

可执行文件和 PATH 环境变量

可执行文件的搜索路径(PATH环境变量),未更改地传递到远程执行主机。

注意

在混合集群中,当用户二进制目录,在不同主机类型上具有相同路径名时,LSF 效果最佳。使用相同的路径名,可使 PATH 变量在所有主机上均有效。

为了便于管理,LSF 配置文件存储在共享目录中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1161496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.5 TCP报文段的首部格式

思维导图: 5.5 TCP报文段的首部格式 基本概念 TCP报文段:包含首部和数据两部分,首部至少20字节。作用:首部字段定义了TCP的功能和行为。长度:首部长度可变,基础首部20字节,可添加选项。 首部…

初学编程教程视频教程,初学编程入门知识

初学编程教程视频教程,初学编程入门知识 给大家分享一款中文编程工具,零基础轻松学编程,不需英语基础,编程工具可下载。 这款工具不但可以连接部分硬件,而且可以开发大型的软件,向如图这个实例就是用这个…

零信任网络:一种全新的网络安全架构

随着网络技术的不断发展,网络安全问题日益凸显。传统的网络安全策略往往基于信任和验证,但这种信任策略存在一定的局限性。为了解决这一问题,零信任网络作为一种全新的网络安全架构,逐渐受到人们的关注。本文将对零信任网络的概念…

富士康“吃饭砸碗”,3年时间推动印度制造的iPhone翻倍增长

近期富士康备受关注,业界人士查找了富士康、印度制造的数据发现富士康为印度制造iPhone做出了“卓越”贡献,3年时间推动印度制造的iPhone翻倍增长,为印度制造立下了汗马功劳。 这几年苹果力推富士康、纬创、和硕等赴印设厂生产iPhone&#xf…

SpringCloud 微服务全栈体系(十一)

第十章 RabbitMQ 三、SpringAMQP SpringAMQP 是基于 RabbitMQ 封装的一套模板,并且还利用 SpringBoot 对其实现了自动装配,使用起来非常方便。 SpringAmqp 的官方地址:https://spring.io/projects/spring-amqp SpringAMQP 提供了三个功能&…

【protobuf】protobuf自定义数据格式,CMake编译C++文件读写自定义数据

protobuf自定义数据格式,CMake编译文件读写自定义数据 1.protobuf安装2.定义.proto文件3.编写main.cpp4.编写CMAkeLists配置文件5.运行 1.protobuf安装 protobuf库链接 2.定义.proto文件 新建一个Person.proto文件和一个Animal.proto文件,内容如下&…

在Node.js中,什么是模块(module)?如何导入和导出模块?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Oracle JDK 和OpenJDK两者有什么异同点

Oracle JDK 和 OpenJDK 是两种不同版本的 Java Development Kit(Java 开发工具包),它们都提供了用于开发 Java 程序的一系列工具和库。以下是它们之间的一些主要异同点: 相同点: 功能:在大多数情况下&…

VS2022 开发方式

使用 C# 在VS 2022 上开发时,发现有多种项目类型可以创建。这些类型放一起容易搞混,于是记录一下各种类型的区别。 这里主要介绍windows控制台程序、MFC程序、WPF程序、WinForm程序的特点。 创建哪种应用? 创建控制台应用 Windows控制台程序…

Postgresql批量按照顺序更新某一个字段

如批量更新采购订单行sequence字段,按照订单行id的顺序赋值1,2,3,4...: UPDATE purchase_order_line_copy1 SET sequence subquery.new_sequence FROM (SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS new_sequence…

一种使用Windows10自带工具快速精准地调整图片文件的尺寸大小的方法

最近在做一个材料申报工作,需要将很多图片大小调整到200k以下。个人经过摸索,总结出一种Windows10自带工具快速精准地调整图片文件的尺寸大小的一个便捷方法,现分享如下。 一、所用工具 Windows10系统自带的照片工具 默认Windows10系统打开…

【Python学习笔记】SQLite报错Error: near “)“: syntax error的低级错误

【Python学习笔记】SQLite报错Error: near “)”: syntax error的低级错误 不说废话,典型错误,写建表语句的时候末尾多写了一个逗号。 之前为了解决这个错误还去问chatgpt,得到一堆官话答案。伤害性不高,侮辱性极强。 最后发现在…

【Proteus仿真】【51单片机】数控稳压可调电源设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用动态数码管、按键、PCF8591 AD/DAC、LM358放大电路模块等。 主要功能: 系统运行后,系统默认输出直流5V,数码管…

基于合成数据的文本定位实现【OpenCV】

数据是目前深度学习的主要限制因素。 好的数据很难获得。 收集和标记数据是一项艰苦的体力劳动。 这是昂贵、耗时且困难的。 AI获胜者并不是有最好算法的人,而是有最多数据的人。 -安德鲁吴 此问题的一个“次优”解决方案是以编程方式生成合成数据。 合成数据无疑不…

【腾讯云HAI域探秘】搭建一个永不宕机的本地SD文本生成图像应用--喂饭级高性能应用HAI部署stable diffusion webui 一键文生图

目录 一、高性能应用服务HAI产品 Stable Diffusion Webui部署思路二、一键启动Stable Diffusion WebUI 推理三、使用 HAI JupyterLab连接 进行 StableDiffusion API 的部署四、使用本地IDE实现私服Web端一键文生图五、使用腾讯云Cloud Studio 快速云上开发六、高性能应用服务H…

C++设计模式_23_Command 命令模式

我们将Command 和Visitor归为“行为变化”模式。 Command 命令模式与函数对象十分类似,但在C主流框架中,函数对象(function object)应用的更为广泛。 文章目录 1. “行为变化”模式1.1 典型模式 2. 动机( Motivation )3. 模式定义…

Java调用GDAL实现融合有相同字段属性的多边形矢量数据的一种方法

目录 一、写在文章前 二、实现思路 三、实现过程 1.打开矢量数据 2.生成融合结果 3.不融合不相邻的几何图形 4.融合后的几何图形写入到新的图层 5.融合的效果 四、完整的示例 一、写在文章前 如下图所示,融合(dissolve)具有相同字段属…

Linux中搭建coturn服务器

1、下载coturn源码 git clone https://github.com/coturn/coturn.git2、进入到coturn路径下,执行一下命令。 ./configure出现以下错误: 问题1:ERROR: OpenSSL Crypto development libraries are not installed properly in required locati…

浅谈安科瑞无线测温产品在南非某变电站的应用

摘要:随着电力工业的发展,对设备的安全性、可靠性要求越来越高。在这种条件下,高压设备的无线测温系统应运而生。这种技术是将内置电池或电流感应和无线发射模块的测温传感器安装于各测温点,由于其体积小,且无需任何接…

CHS零壹视频恢复程序监控版/海康版/大华版深入扫描功能演示

安防文件系统是一种嵌入式文件系统,一般情况下监控版程序扫描会基于文件系统进行扫描,如果想更深入的扫描一些数据建议开启深入扫描功能,具体方法如下: 适用版本:监控版/海康版/大华版/专业版/高级版 作用:舍弃嵌入式文件系统直…