【分布式理论16】分布式调度2:资源划分和调度策略

embedded/2025/2/21 5:45:46/

文章目录

    • 一、资源划分:Linux容器的应用
      • 1. LXC 的 Namespace 机制:资源隔离
      • 2. LXC 的 CGroup 机制:资源管理
    • 二、任务与资源如何匹配
      • 1. 任务队列与资源池
      • 2. 资源调度策略

分布式系统中,资源的有效分配和调度是确保计算任务高效执行的关键。为了能够合理地利用系统资源并优化计算任务的执行,资源划分和调度策略显得尤为重要。本节将从Linux容器资源划分、资源池与任务队列的匹配,以及不同的调度策略来深入探讨资源调度的核心原理。

本文主要讨论:

  • 资源隔离与管理:资源划分和调度是计算任务成功执行的基础。通过Linux容器的Namespace和CGroup机制,系统能够对资源进行高效的隔离和管理。
  • 任务调度策略:针对不同的业务场景和任务需求,调度策略的选择则决定了资源分配的效率和公平性。通过FIFO、Capacity和Fair调度器,我们可以针对不同类型的计算任务,设计最合适的资源分配策略,从而优化系统资源的利用率和任务执行效率。

 

一、资源划分:Linux容器的应用

在计算任务执行过程中,如何分割和管理资源是非常关键的。Linux Container(LXC)作为一种轻量级的虚拟化技术,能够将计算资源(如CPU、内存等)划分成多个隔离的容器。每个容器在运行时,拥有独立的资源空间,保证了进程之间的隔离性和互不干扰性。

容器的隔离主要依赖于Linux系统中的命名空间(Namespace)和控制组(CGroup)机制。

  • Namespace:提供资源隔离,确保每个容器内的进程只能够看到自身的资源,无法访问其他容器的资源。例如,PID Namespace确保每个容器中的进程ID(PID)是独立的,用户和网络等其他资源也可以实现相同的隔离。
  • CGroup:负责资源管理和限制,它允许对容器中的进程进行资源限制和优先级调度。比如,限制某个容器的内存使用量或CPU时间,从而避免单个容器的资源占用影响到其他容器的正常运行。

通过这些机制,Linux容器能够高效地进行资源划分,保障进程的独立性和资源的合理分配。像 Docker 这样的流行容器系统就是基于 LXC 封装的。

 

1. LXC 的 Namespace 机制:资源隔离

Linux Namespace 是资源隔离方案,按特定命名空间划分系统资源,各命名空间的资源对其他命名空间透明,提供了操作系统级别的容器化。传统系统中,通过 PID 和 UID 列表管理资源,但用户能感知彼此进程状态,对隐私性要求高的服务不合适。

Namespace 提供隔离的用户空间,使进程不受其他空间进程干扰,如父命名空间管理多个进程,子命名空间只能看到自身空间的进程。

以下是几种常见的隔离模式:

  • UTS Namespace:提供主机名和域名隔离,让运行在同一主机的多个容器拥有独立主机名和域名。
  • Mount Namespace:为进程提供独立文件系统,隔离文件系统挂载点,容器操作文件系统不影响主机和其他容器。
  • IPC Namespace:保证同一用户空间的进程可通信,跨用户空间的进程无法通信,维护的全局 ID 也相互隔离。
  • PID Namespace:每个独立用户空间有假的 init 进程,进程消失意味用户空间消失,但不影响其他用户空间及系统真 init 进程。
  • User Namespace:为隔离的用户空间生成假的 root 用户,其下挂接其他用户,实现用户隔离。
  • Network Namespace:让容器有独立的网卡、IP、路由等资源,实现容器间网络通信。

 

2. LXC 的 CGroup 机制:资源管理

CGroup 即 Control Groups,是 Linux 内核的资源管理机制,负责管理运行在隔离资源中的进程。它先对进程分组,再对分组后的进程进行资源限制和管理。

以下是 CGroup 中的关键概念:

  • 任务(Task):可理解为计算任务或进程,是执行计算的基本单元。
  • 控制族群(Control Group):进程的集合,进程可在不同控制族群移动。
  • 层级(Hierarchy):由多个控制族群组成的树形结构,子节点继承父节点属性。
  • 子系统(subsystem):针对控制族群进行资源限制。
     

如下举例:

  • 在 CGroup 中,进程根据其对资源的需求被分类到不同的控制族群。例如:
    • CPU 20% CGroup:包含进程 P1 和 P2,限制这两个进程的 CPU 使用率不超过 20%。
    • CPU 80% CGroup:包含进程 P3 和 P4,限制这两个进程的 CPU 使用率不超过 80%。
    • Memory 64K CGroup:限制 P1 和 P3 进程的内存不超过 64KB。
    • Memory 128K CGroup:限制 P2 和 P4 进程的内存不超过 128KB。
  • 每个进程可能同时属于多个层级和控制族群,结合不同的资源限制。例如,进程 P1 同时受限于 CPU 20%Memory 64K
    ![[Pasted image 20250219101612.png]]

 

二、任务与资源如何匹配

对系统资源进行划分是为了分配给计算任务,接下来从任务与资源的组织形态和资源调度策略两方面介绍它们的匹配方式。

1. 任务队列与资源池

资源划分后放入资源池等待调度。资源池是逻辑概念,可按需调整。

  • 平级队列组织方式:适用于业务场景简单时,如公司开发和数据分析部门分别使用各自资源池,计算任务组成队列分配到对应资源池。
  • 多层级队列组织方式:业务变复杂时采用。例如以公司不同部门不同业务计算为例,Root 资源节点按比例分配资源给各部门,部门下再细分资源池,计算任务按类型形成队列使用相应资源。 这种方式有以下特点:资源节点可嵌套;每个层级资源节点有容量限制;用户权限需和资源节点映射,允许用户和用户组对应一个或多个计算任务队列。

 

2. 资源调度策略

尽管资源已经被划分,但如何根据不同的任务需求进行资源调度,确保资源得到高效利用,又不至于造成任务阻塞,这是资源调度策略的核心问题。主要的调度策略有三种:FIFO调度器、Capacity调度器和Fair调度器。

  1. FIFO调度器(先进先出)
    FIFO调度器最为简单,它根据任务的提交顺序来分配资源,先提交的任务优先获得资源。然而,FIFO也有其局限性:长时间运行的大任务可能会导致后续的小任务被阻塞。因此,FIFO调度器适合资源竞争较少的场景。

  2. Capacity调度器(能力调度)
    Capacity调度器是为多用户场景设计的调度策略,主要用于确保每个用户或任务队列获得最基本的资源保障,并且限制其资源的最大使用量。它通过为不同的任务队列分配固定的资源容量,来实现多用户资源共享。尤其当资源出现空闲时,Capacity调度器允许队列之间进行资源共享,从而避免资源浪费。

  3. Fair调度器(公平调度)
    Fair调度器的核心目的是通过公平分配资源,使得多个队列中的任务能够在合理的时间内得到资源。它会尽可能确保每个队列获得平等的资源份额,避免出现某些队列因资源过度占用而阻塞其他队列的情况。尤其在多任务、高并发的环境下,Fair调度器能够保持资源分配的公平性。

 


http://www.ppmy.cn/embedded/163991.html

相关文章

使用Termux将安卓手机变成随身AI服务器(page assist连接)

通过以下方法在安卓手机上运行 Ollama 及大模型,无需 Root 权限,具体方案如下: 通过 Termux 模拟 Linux 环境运行 核心工具: 安装 (安卓终端模拟器)()]。借助 proot-distro 工具安装 Linux 发行版&#xf…

计算机视觉算法实战——表面缺陷检测(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ 一、领域简介✨✨ 工业表面缺陷检测是智能制造中的核心环节,旨在通过自动化视觉系统替代传统人工质检,快速、精准地识…

Java爬虫获取1688商品搜索API接口的实现指南

在电商数据分析、市场调研以及商品选品等领域,按关键字搜索1688商品并获取相关数据是一项重要的任务。本文将详细介绍如何使用Java爬虫技术,通过1688的API接口按关键字搜索商品,并解析返回的数据。以下是实现的完整步骤和代码示例。 一、前期…

【苍穹外卖】学习

软件开发整体介绍 作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程, 以及软件开发过程中涉及到的岗位角色,角色的分工、职责, 并了解软件开发中涉及到的三种软件环境。那么这一小节,我们将从 软件开发流程、角色…

仿 Sora 之形,借物理模拟之技绘视频之彩

来自麻省理工学院、斯坦福大学、哥伦比亚大学以及康奈尔大学的研究人员携手开源了一款创新的3D交互视频模型——PhysDreamer(以下简称“PD”)。PD与OpenAI旗下的Sora相似,能够借助物理模拟技术来生成视频,这意味着PD所生成的视频蕴…

网络安全:从攻击到防御的全景解析

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 在互联网高度发达的今天,网络安全已成为影响社会稳定、国家安全和企业发展的关键因素。无论是个人用户的数据…

RNN介绍

RNN(循环神经网络,Recurrent Neural Network)是一种专门处理序列数据的神经网络架构,在Transformer出现之前曾是处理文本、时间序列等任务的主流模型。它的核心特点是能够通过循环结构保留历史信息。 RNN的核心机制 循环处理&…

Ubuntu 下创建具有 root 权限用户

一、前言 在 Ubuntu 系统中,创建新的用户,并且为该用户赋予 root 权限。 二、操作步骤 (一)创建新用户 sudo adduser user1(二)为新用户添加 sudo 权限 sudo usermod -aG sudo user1 usermod&#xf…