论文部分内容阅读
约50年的并行计算历程中,从处理机内部指令集并行到集群尺度上的并行,都在现有计算能力的基础上,极大的开发了计算的潜能。随着线程应用日益广泛,体系结构、编译技术、编程模型、线程库等层面都在朝向更高并行度、更细并行粒度方向发展。同时,对网络信息服务类海量并发细粒度应用而言,利用传统线程不能如期获得SMP上的加速,而随着CMP和SMT的进展,线程开销的优化更是提上了日程。为此,本文围绕优于传统Posix线程的合适的调度粒度和相应高效低开销的调度切换技术展开讨论,以提高细粒度并行下资源的有效利用率。主要工作如下:基于pthread线程全面分析与开销测试,实验定量分析出pthread线程微秒级开销下同步粒度与多处理机上性能加速的关系:在相当于线程切换开销十倍量级的同步粒度下,执行流在多处理机上很难获得有效的性能提高,进而指出细粒度并行性能一定程度上受制于线程自身开销的问题。针对细粒度并行线程开销敏感问题,提出了资源自封闭体和主动调度机制,设计并开发了独立于操作系统的高效低开销调度模块。该调度模块兼顾核心级线程真正并行、用户级线程开销小的优点,可根据应用特征进行用户级调度,有效地减少了调度和切换开销,可高效实现每秒十万次级别的切换频度。初步达成线程粒度和切换开销的轻化,克服了细粒度并行应用在多处理机上利用标准线程无法有效获得加速的弊端。此外,该调度模块实现不改变操作系统核心的情况下有效利用多处理机,可广泛适用于此类相关度不大的细粒度并行应用。进一步,利用资源自封闭体的构造和该调度模块成功改善了并行模拟器SandFox的实际性能,获得了较标准线程库pthread实现而言几倍的提高。对于建立的高密度访问Web服务器模型,由于在微秒级同步粒度情况下,有至少30%以上的开销浪费于调度切换,应用轻化手段后如期获得CPU有效利用率的大幅提高。从而为网络信息服务类海量并发细粒度应用的性能提高研究提供了新的解决思路。另外,本文还分析了Linpack、NPB等常用并行应用,试图为线程轻化作应用特征准备。作为辅助分析,编写了误差精度在5%以内的Linpack仿真模型。利用该模型获得的详细开销数据表明,Linpack等常用高性能应用不适于轻化,文末给出总结以备后续轻化工作参考。