目录
内建负载监控系统
多维度调度策略
调度策略
轮循调度的具体步骤
裸金属服务器和虚拟化服务器
一、定义与基本特性
二、性能与资源利用
三、成本与管理
四、适用场景
内建负载监控系统
每 5 秒采集一次所有集群上的负载信息(CPU 指标、内存、存储 I/O、网络 I/O、GPU 各项指标以及作业进程对 GPU 的使用等),支持监控数据存放于 Elasticsearch 或 Prometheus 数据库中。
多维度调度策略
支持基于实际资源使用阈值的调度、大作业资源预留、小作业回填等功能,基于容器的资源管理软件(如 K8S,MESOS)不具备这样完整的大型生产环境需要的高级调度策略支持。
默认情况下,禁止普通用户登录到计算节点;当计算节点承载运行普通用户的计算作业时,允许对应的用户账号 ssh 登录到相关的计算节点。允许专属队列的普通用户登录到专属队列对应的计算节点。
调度策略
对分布式多种任务异构资源的集中调度管理
其它的资源调度器对多种任务的资源每次调度一种,当一种任务所需资源不足时其它作业占着资源等待,造成资源浪费。
SkyForm AIP 把整个学习框架作为单一作业,直到所有任务所需资源都满足时才启动,以保证昂贵资源利用的最大化。
多任务异构资源的统一调度是 SkyForm AIP 的独特调度能力,保障应用性能和资源利用最大化。 伸缩资源主动分配应用(作业)在一开始可以告诉调度器所需最小和最大资源的值,调度器会根据调度策略和可用资源尽量满足应用的需求。如果不能满足最大资源需求,在应用运行的过程中若有冗余资源可用,调度器会主动把这些资源分配给作业直到作业所需最大资源得到满足。
这种主动分配的调度有益于提高像深度学习一类资源饥渴型应用的性能。这种调度算法也是其它资源管理软件缺乏的。
支持全面的调度策略
a)先进先出:根据作业递交的先后时间顺序分发作业。
b)优先级:作业根据优先级递交到不同优先级的队列中,调度系统先分发优先级高的队列中的作业,当高优先级队列中没有等待作业时,才分发下一个优先级队列中的作业。
c)轮循:当同一队列中有多个用户的作业时,调度系统为每个用户分发一个作业,等队列中所有的用户的第一个作业分发后,再分发每个用户的第二个作业,每个用户的第三个作业,等等。
轮循调度的具体步骤
- 初始化:
- 作业队列:Alice的作业A1, A2, A3;Bob的作业B1, B2;Charlie的作业C1, C2, C3。
- 初始时,没有作业正在执行,所有用户的作业都处于待处理状态。
- 第一轮分发:
- 调度器首先选择队列中的第一个用户(Alice),分发她的第一个作业A1。
- 然后,调度器移动到下一个用户(Bob),分发他的第一个作业B1。
- 接着,调度器继续移动到下一个用户(Charlie),分发他的第一个作业C1。
- 此时,第一轮分发完成,Alice、Bob和Charlie各有一个作业正在执行或等待执行(具体取决于系统的并发能力)。
- 后续轮次:
- 当第一轮中的所有作业都执行完毕或达到某个预定的时间间隔后,调度器开始第二轮分发。
- 在第二轮中,调度器再次从Alice开始,分发她的第二个作业A2。
- 然后是Bob的第二个作业B2(如果Bob有第二个作业的话;在这个例子中,Bob只有一个作业,所以B2不存在,调度器会跳过Bob)。
- 接着是Charlie的第二个作业C2。
- 这个过程会继续进行,直到所有用户的所有作业都被分发完毕。
- 循环特性:
- 如果某个用户在某一轮中没有作业可以分发(如Bob在第二轮中),调度器会简单地跳过该用户,继续分发下一个用户的作业。
- 当所有用户的当前作业都分发完毕后,调度器会回到队列的开头,开始新一轮的分发。
d)独占:用户递交作业时可指定为独占作业。独占作业是指每个主机上只能运行这一指定的作业。若有一个独占作业分发到一台主机上,主机将不接受其它普通作业。若主机上已有其他普通作业,则独占作业不会分发到该主机上。独占作业一般用于需占用大量资源的作业,以防与其他作业在同一主机上发生冲突。
f)抢占:高优先级作业通过抢占 CPU 核、GPU 以及其他资源使低优先级作业暂停(释放 CPU)或重调度(释放 GPU 等其他资源)的方式提前运行。高优先级作业运行结束后,低优先级作业继续或重运行
g)并行作业资源自动预留:在繁忙的集群系统中,往往空出来的资源比较小,小作业就容易拿到资源而先走,这样即使大作业优先级高,也会因没有大块资源空出而长期等待。调度系统可以配置使高优先级并行作业自动将空出的小块资源保留一段时间不被小作业所占,等保留的资源足够时运行。
h)基于资源阀值的调度:由于作业所用资源难以实现预估,为防止资源不足,尤其是内存不足导致作业失败,可以定义资源的阈值来控制作业调度。对每一个资源可以定义两个阈值(上下水位),第一个下水位用于停止调度,第二个上水位用户停止(杀掉或挂起)已在运行的作业。资源阈值可设在主机层或/和队列层。
i)资源平衡方式:资源平衡可以有两种方式:减少资源碎片(Packing)或负载平衡(Spreading)。减少资源碎片将作业尽量往最少的主机上调度,以便留下大块资源给大作业用。负载平衡是将作业尽量分布开,以保证作业运行性能和降低主机功耗。
j)异构系统:允许将不同架构的主机、不同型号和性能的主机、不同操作系统和版本的主机放到一个集群里,通过“host type”参数进行配置。每种不同种类的主机可以定义一个 CPU 的性能值。在递交作业时可以指定这些参数配合使用。
k)定时作业作业:定时作业与普通作业一样可由所有调度策略调度和作业定义(如环境变量、资源需求等)。在作业定义中可指定运行用户名、运行时间点、作业命令行、作业最长运行时间(若超出此时间限制,作业会被自动杀掉)、启动超时(若由于在规定的时间里资源不足作业无法启动,最长等待的时间)、覆盖(下一个作业启动时上一个作业未完成是继续运行还是杀掉以前的作业)、失败重新运行最多次数等参数。
l)优先级抢占:高优先级作业可以暂停低优先级作业获得作业资源(CPU 核、GPU、或其它资源)。高优先作业运行结束后,低优先级作业可以自动恢复。
裸金属服务器和虚拟化服务器
在多个方面存在显著差异,以下是对两者区别的详细分析:
一、定义与基本特性
- 裸金属服务器:又称物理服务器,是独立的硬件设备,拥有自己的操作系统、内存、硬盘等硬件资源。用户可以根据自己的需求购买、配置和使用裸金属服务器,无需依赖于云服务提供商的虚拟机或其他资源。裸金属服务器提供完全的硬件资源控制权,确保高性能和稳定性。
- 虚拟化服务器:基于虚拟化技术,将一台物理服务器划分为多个虚拟服务器(虚拟机)。每个虚拟机都可以独立运行操作系统和应用程序,就像真正的计算机一样。虚拟化技术提高了资源利用率,降低了成本,并提供了灵活性和可扩展性。
二、性能与资源利用
- 性能:裸金属服务器由于拥有独立的硬件资源,不受其他用户或虚拟机的影响,因此通常能提供更高的性能和稳定性。而虚拟化服务器由于资源共享,可能会受到其他虚拟机的影响,导致性能波动。然而,在某些特定场景下,如大型数据库、高性能计算等,通过优化虚拟化技术,虚拟机的性能也可能非常优异。
- 资源利用:虚拟化服务器能够充分利用物理服务器的资源,通过虚拟化技术将一台物理服务器划分为多个虚拟服务器,提高了资源利用率。而裸金属服务器则完全独占硬件资源,无法共享。
三、成本与管理
- 成本:虚拟化服务器通常具有较低的初始成本,因为用户只需支付实际使用的资源费用,而无需购买昂贵的硬件设备。此外,虚拟化服务器还提供了按需付费的灵活性,避免了过度投资。而裸金属服务器的初始成本通常较高,因为需要购买物理服务器硬件。但长期来看,如果业务对性能有较高要求且需要长期稳定运行,裸金属服务器的总体成本可能更低。
- 管理:虚拟化服务器提供了集中式的资源管理方式,用户可以通过云服务提供商的管理平台轻松地创建、配置和管理虚拟机,降低了运维难度。而裸金属服务器则需要单独管理每台服务器,管理复杂性较高。但另一方面,裸金属服务器提供了完全的硬件资源控制权,用户可以根据需要进行高度定制化的配置和管理。
四、适用场景
- 裸金属服务器:适用于对性能有极高要求、需要长期稳定运行和高度定制化的场景,如大型数据库、高性能计算、航空航天、宇宙观测等科研场景以及游戏开发等。
- 虚拟化服务器:适用于对成本敏感、需要快速部署和弹性伸缩的场景,如中小企业、个人用户以及需要频繁变更业务规模的互联网企业等。
综上所述,裸金属服务器和虚拟化服务器各有优缺点,选择哪种类型的服务器取决于具体的业务需求、预算和技术偏好。