模拟真实CPU工作负载与线程迁移负载均衡技术解析
1. 引言
随着高速廉价通信网络的发展以及互联网的普及,并行和分布式应用系统成为新的研究热点。非专用环境中存在大量可利用的计算资源,但这类环境存在资源竞争、处理器速度差异和处理器异构等问题,会导致负载不平衡,影响科学应用的性能。本文将介绍两种相关技术,一是通过主机负载跟踪回放生成真实CPU工作负载,二是在异构环境中利用线程迁移解决负载不平衡问题。
2. 主机负载跟踪回放技术
2.1 技术概述
主机负载跟踪回放是一种通过Unix负载平均值跟踪来生成背景工作负载的技术,其实现工具playload能产生真实且可重复的CPU竞争。该技术在不同平台上的性能表现各异,下面将对其在不同操作系统上的性能进行评估。
2.2 性能评估
评估基于1997年8月23日在匹兹堡计算中心的Alpha集群的Digital Unix工作站上记录的一小时跟踪数据(3600个样本),回放工作基于任务,不使用反馈,且机器处于空闲状态。
-
Digital Unix
:
- 目标信号和测量信号的均值和标准差几乎相同,说明playload能很好地重构跟踪的工作和动态。
- 平均误差略小于零,表明整体产生的工作略少于所需。
- 误差的高标准差反映了偶尔出现的异常值。
-
Solaris
:
- 目标信号比Digital Unix更平滑,因为Solaris使用60秒的平滑常数。
- 回放效果良好,误差近似正态分布,异常值较少。
- 误差在时间上的相关性比Digital Unix略高,且产生的工作略多于期望。
-
FreeBSD
:
- 误差比Solaris机器大,但误差分布近似正态,且在时间上的相关性略低。
- 回放产生的工作略多于期望,误差有轻微正偏差,整体观察到的竞争比期望多约7 - 8%。
-
Linux
:
- playload在Linux上的性能比其他测试机器差。
- 测量负载信号能跟踪目标负载信号的大致轮廓,但误差分布不近似正态,明显偏向正误差。
- 累积误差比期望高约8%,误差的变异性更大。
| 环境 | 目标(均值) | 目标(标准差) | 测量(均值) | 测量(标准差) | 误差(均值) | 误差(标准差) |
|---|---|---|---|---|---|---|
| Alpha/DUX 4.0 | 1.065 | 0.465 | 1.047 | 0.442 | -0.018 | 0.127 |
| Sparc/Solaris 2.5 | 1.047 | 0.376 | 1.122 | 0.356 | 0.076 | 0.061 |
| PII/FreeBSD 2.2 | 1.047 | 0.376 | 1.123 | 0.361 | 0.076 | 0.124 |
| PII/Linux 5.2 | 1.047 | 0.376 | 1.131 | 0.360 | 0.084 | 0.164 |
mermaid格式流程图展示不同操作系统上playload性能评估流程:
graph LR
A[开始] --> B[选择操作系统]
B --> C{是否为Digital Unix}
C -- 是 --> D[评估Digital Unix性能]
C -- 否 --> E{是否为Solaris}
E -- 是 --> F[评估Solaris性能]
E -- 否 --> G{是否为FreeBSD}
G -- 是 --> H[评估FreeBSD性能]
G -- 否 --> I[评估Linux性能]
D --> J[记录结果]
F --> J
H --> J
I --> J
J --> K[结束]
3. 异构环境中的线程迁移与负载均衡
3.1 背景与问题
网络工作站正成为并行应用的标准环境,但使用“现成”资源作为紧密耦合运行时环境的平台存在资源竞争、处理器速度差异和处理器异构三个障碍,导致负载不平衡,影响科学应用性能。
3.2 解决方案
采用CVM软件分布式共享内存系统,通过线程迁移来解决负载不平衡问题。该系统经过修改,支持每个节点多个线程、线程迁移和异构机器集。
3.3 系统与应用特征
-
系统特征 :
- 大部分性能结果基于100Mbit快速以太网,异构配置使用10 Mbit链路。
- 采用快速以太网和少量(4个)处理器的配置,避免网络竞争。
- 同质配置conf - hom由266 MHz Pentium II机器组成,异构配置conf - het由不同类型和速度的机器组成。
-
相对处理器容量表明,异构环境中的负载均衡必须基于动态信息,静态估计可能不准确。
| 处理器类型 | 相对速度(平均) | 相对速度(最小) | 相对速度(最大) |
| ---- | ---- | ---- | ---- |
| PentiumII 266MHz | - | - | - |
| Pentium Pro 200MHz | - | - | - |
| SPARC 270MHz | - | - | - |
| Pentium MMX 133Mhz | - | - | - |
| Alpha 275MHz | - | - | - |
| Power2 66MHz | - | - | - |
-
应用特征 :
- 应用套件包括来自不同地方的多个应用,如Splash - 2套件的应用、Rice的应用、SUIF编译器并行化的应用和SPEC基准套件的应用。
- 不同应用在不同配置下的性能表现不同,部分应用在4个处理器上的加速比至少为3.0,而fft和swm由于共享大量数据,页错误开销大,加速比较低。
| 应用 | 描述 | 问题规模 | 共享页面 |
|---|---|---|---|
| Adi | ADI集成内核 | 64K | 2321 |
| expl | 显式流体动力学 | 512×512 | 2509 |
| fft | 3 - D快速傅里叶变换 | 64×64×128 | 3587 |
| gauss | 高斯消元法 | 2048x2048 | 2050 |
| sor | 逐次超松弛法 | 2048×2048 | 4097 |
| tsp | 旅行商问题 | 19个城市 | 99 |
| spatial | 空间水分子动力学 | 4096个分子 | 339 |
| swm | 浅水模型 | 512 | 2006 |
| water | 分子动力学模拟 | 512个分子 | 43 |
mermaid格式流程图展示应用性能测试流程:
graph LR
A[选择应用] --> B[选择配置(同质或异构)]
B --> C[运行应用]
C --> D[记录性能指标(加速比、开销等)]
D --> E{是否测试完所有应用}
E -- 否 --> A
E -- 是 --> F[结束]
4. 线程迁移机制与策略
为了在异构环境中实现有效的负载均衡,CVM软件分布式共享内存系统采用了一系列线程迁移机制和策略,以适应资源竞争、时钟速度和处理器类型的异构性。
4.1 线程迁移机制
线程迁移机制主要解决了在不同处理器之间移动线程的问题。当检测到某个节点负载过高或资源利用率过低时,系统会将部分线程迁移到其他负载较低的节点。具体步骤如下:
1.
负载监测
:系统实时监测每个节点的负载情况,包括CPU利用率、内存使用等指标。
2.
迁移决策
:根据负载监测结果,判断是否需要进行线程迁移。如果某个节点的负载超过了预设的阈值,或者其他节点的资源利用率较低,则触发迁移决策。
3.
线程选择
:选择合适的线程进行迁移。通常会考虑线程的执行状态、数据访问模式等因素,以确保迁移后不会对性能产生过大影响。
4.
迁移执行
:将选定的线程从源节点迁移到目标节点,并处理相关的数据和状态转移。
4.2 负载均衡策略
负载均衡策略旨在实现资源的合理分配,提高系统的整体性能。常见的策略包括:
-
基于负载的策略
:根据节点的负载情况动态调整线程的分配,使各个节点的负载尽量均衡。
-
基于性能的策略
:考虑处理器的性能差异,将计算密集型任务分配给性能较高的处理器,以提高整体效率。
-
自适应策略
:根据系统的实时状态和性能反馈,动态调整迁移和负载均衡策略,以适应不同的工作负载和环境变化。
以下是一个简单的负载均衡策略示例:
| 策略类型 | 描述 | 优点 | 缺点 |
| ---- | ---- | ---- | ---- |
| 基于负载的策略 | 按照节点的负载水平分配线程,将线程从高负载节点迁移到低负载节点 | 实现简单,能快速响应负载变化 | 可能忽略处理器性能差异 |
| 基于性能的策略 | 根据处理器的性能指标分配任务,优先将任务分配给高性能处理器 | 提高整体性能,充分利用资源 | 对性能指标的准确性要求较高 |
| 自适应策略 | 结合负载和性能信息,动态调整策略 | 灵活性高,能适应不同环境 | 实现复杂,需要实时监测和反馈 |
mermaid格式流程图展示线程迁移与负载均衡流程:
graph LR
A[开始] --> B[负载监测]
B --> C{是否需要迁移}
C -- 是 --> D[迁移决策]
C -- 否 --> B
D --> E[线程选择]
E --> F[迁移执行]
F --> G[负载均衡调整]
G --> B
5. 初步性能结果
在异构环境中对线程迁移和负载均衡机制进行了初步测试,结果表明这些机制能够有效利用资源,降低负载不平衡带来的影响。
5.1 不同配置下的性能表现
在同质配置conf - hom和异构配置conf - het下分别运行应用套件,观察其性能指标。结果显示,大部分应用在异构配置下的性能虽然受到一定影响,但通过线程迁移和负载均衡机制,能够在一定程度上弥补性能差距。
| 配置 | 应用 | 加速比 | 主要开销 |
|---|---|---|---|
| conf - hom | adi | 3.5 | barrier |
| conf - hom | expl | 3.2 | barrier |
| conf - hom | fft | 2.0 | segv |
| conf - hom | gauss | 3.3 | barrier |
| conf - hom | sor | 3.4 | barrier |
| conf - hom | tsp | 3.6 | barrier |
| conf - hom | spatial | 3.1 | barrier |
| conf - hom | swm | 1.8 | segv |
| conf - hom | water | 3.7 | barrier |
| conf - het | adi | 3.0 | barrier |
| conf - het | expl | 2.8 | barrier |
| conf - het | fft | 1.6 | segv |
| conf - het | gauss | 2.9 | barrier |
| conf - het | sor | 3.0 | barrier |
| conf - het | tsp | 3.2 | barrier |
| conf - het | spatial | 2.7 | barrier |
| conf - het | swm | 1.5 | segv |
| conf - het | water | 3.3 | barrier |
5.2 线程迁移的效果
通过对比启用和禁用线程迁移机制的性能,发现线程迁移能够显著改善负载不平衡问题,提高系统的整体性能。在一些应用中,启用线程迁移后加速比有明显提升,尤其是在异构环境中效果更为显著。
6. 总结与展望
本文介绍了主机负载跟踪回放技术和异构环境中的线程迁移与负载均衡技术。主机负载跟踪回放技术通过Unix负载平均值跟踪生成背景工作负载,在不同操作系统上的性能表现有所差异。而异构环境中的线程迁移与负载均衡技术则通过CVM软件分布式共享内存系统,利用线程迁移解决了负载不平衡问题,初步测试结果表明该技术能够有效利用资源,提高系统性能。
未来的研究方向包括:
1. 深入研究主机负载跟踪回放技术在Linux系统上性能不佳的原因,并进行改进。
2. 探索如何分离playload施加的负载和其他程序施加的外部负载,以便使用负反馈使回放更加准确。
3. 进一步优化线程迁移和负载均衡机制,提高其在复杂异构环境中的性能和适应性。
4. 开发和集成针对磁盘、内存、网络等其他工作负载的跟踪回放工具,以实现更全面的系统性能评估。
通过不断的研究和改进,这些技术有望为分布式计算领域提供更有效的性能评估和优化手段,推动并行和分布式应用系统的发展。
超级会员免费看
681

被折叠的 条评论
为什么被折叠?



