管道编程模型工作负载特性及数据中心节能构建模块探索
立即解锁
发布时间: 2025-08-20 02:13:38 阅读量: 1 订阅数: 4 


并行化桌面搜索索引生成器的设计与实现
### 管道编程模型工作负载特性及数据中心节能构建模块探索
#### 管道编程模型工作负载特性
管道编程模型具有显著的灵活性,这一优势克服了固定数据方法的缺点。它允许将软件项目细粒度地划分为定义明确、接口良好的模块,能把异步 I/O 的范围限制在一个或少数几个软件模块内,同时实现良好的性能。工程师可以考虑细粒度的处理步骤,充分利用硬件资源。此外,通过在多处理器或多核 CPU 的共享缓存中进行高效的数据共享,还能减少聚合工作集的大小。
不过,该方法也面临挑战。由于整个管道的吞吐量由最慢的管道阶段决定,每个管道阶段必须使用合适数量的线程来创建一个负载均衡的管道,以充分利用目标硬件。特别是在不同系统上,管道阶段的进展速度可能不同,这使得为不同硬件的各个阶段找到固定的资源分配变得困难。在共享内存多处理器系统中,典型的解决方案是为管道阶段过度配置线程,确保在任何时候都有足够的核心分配给每个管道阶段。但这种方法会给系统带来额外的调度开销。
固定代码管道通常会采用一些机制来容忍管道阶段进展速度的波动,常见的做法是在阶段之间添加少量缓冲区,当下一阶段繁忙时,这些缓冲区可以容纳有限数量的工作单元。在共享内存机器上,这通过同步队列实现;如果两个相连的管道阶段位于不同系统,则使用网络缓冲区。需要注意的是,缓冲区只是一种容忍管道阶段进展速度变化的机制,并不能提高管道的最大可能吞吐量。
##### 研究方法
为了研究管道模型的影响,使用了 PARSEC 基准测试套件。选择了一组特征来分析程序的行为,并在特定架构上针对 PARSEC simlarge 输入集进行测量。然后使用主成分分析(PCA)处理数据,自动消除高度相关的数据,得到无冗余的程序行为描述,并通过散点图进行可视化展示。这种分析程序特征的方法是进行相似性分析的常用方法,在理想架构上测量特征有助于关注算法实现本身的属性,而不是架构的特性。PCA 多年来一直被用作量化相似性的客观方法。
##### 工作负载
使用 PARSEC 2.1 研究管道模型的影响,该套件包含实现各种使用场景的工作负载。其中有四个使用管道模型的 PARSEC 工作负载,具体信息如下表所示:
| 工作负载 | 并行性 | 依赖性 | 管道数据 | I/O 建模 |
| ---- | ---- | ---- | ---- | ---- |
| bodytrack | N | Y | Y | N |
| dedup | Y | Y | Y | N |
| ferret | Y | Y | Y | N |
| x264 | Y | N | N | Y |
Dedup 和 ferret 是服务器工作负载,采用固定代码方法实现典型的线性管道。x264 使用管道模型来建模帧之间的依赖关系,在运行时根据编码决策构建复杂的管道,每个帧对应一个管道阶段,管道呈有向无环图形式,由对应 I 帧的管道阶段形成多个根节点,这些 I 帧可以独立编码,不依赖其他管道阶段的输入。bodytrack 工作负载仅使用管道进行异步 I/O,在本研究中被视为数据并行程序,因为它在计算密集部分未利用管道并行性。将其余三个管道工作负载与 PARSEC 套件中的数据并行程序进行比较,以确定管道模型是否对特征有影响。
##### 程序特征
为了分析程序行为,选择了 73 个特征,对 13 个 PARSEC 工作负载进行测量,共得到 949 个样本值。研究重点是与多核处理器(CMP)研究相关的多线程程序的并行行为,所选特征包括:
- **指令混合**:25 个特征描述程序执行的指令类型相对于总指令量的分解情况。
- **工作集**:8 个特征通过给出不同缓存大小的缺失率来编码程序的工作集大小。
- **共享**:40 个特征描述总缓存中有多少行被共享,以及程序读取或写入共享数据的强度。
工作集和共享特征是针对 8 种不同的缓存大小(从 1MB 到 128
0
0
复制全文
相关推荐









