首页> 中文学位 >多核下可伸缩的多线程模型
【6h】

多核下可伸缩的多线程模型

代理获取

目录

声明

摘要

第1章 绪论

1.1 研究背景

1.2 相关工作

1.2.1 内核地址空间竞争研究

1.2.2 高并发共享队列研究

1.2.3 生产者消费者编程模型

1.3 研究内容

1.4 论文组织

第2章 基本知识与问题研究

2.1.1 Linux地址空间组织

2.1.2 地址空间操作及其同步

2.1.3 虚拟内存密集型程序性能分析

2.2 多线程共享队列的特征与问题

2.2.1 细粒度锁对FIFO队列的影响

2.3.1 SPMC虚拟内存模型

2.3.2 DetMP编程模型及其局限性

2.4 Pthreads线程库介绍

2.4.1 Pthreads介绍

2.4.2 线程管理

2.4.3 互斥量

2.4.4 条件变量与同步

2.5 本章小结

第3章 PMthreads设计和实现

3.1 概述

3.2 Pthreads线程模型特征

3.3 PMthreads线程模型特征

3.3.1 地址空间隔离

3.3.2 共享变量特征

3.3.3 堆分配器特征

3.3.4 私有栈特征

3.4 地址空间隔离引起的问题

3.4.1 无法保持共享变量语义

3.4.2 现有堆分配器无法适用

3.4.3 无法支持Pthreads接口

3.5.1 设备驱动实现

3.5.2 全局数据共享过程

3.6 堆分配器实现

3.6.2 堆分配效率提升

3.6.3 子堆空间组织与分配释放

3.7 Pthreads接口与同步算法

3.7.1 线程管理

3.7.2 互斥量管理

3.7.3 条件变量管理

3.7.4 barrier管理

3.8 线程模型的优势

3.9 本章小结

第4章 基于PMthreads的流式编程模型-PMPL

4.1 概述

4.2 PMPL的设计实现

4.2.1 space提前分配

4.2.2 通道池建立

4.2.3 通道的生产者消费者设定

4.2.4 PMPL接口及其使用

4.2.5 PMPL的可编程性

4.3 本章小结

第5章 实验与评估

5.1 实验配置和测试应用

5.2 PMthreads性能评估

5.2.1 时间性能评估

5.2.2 可伸缩性评估

5.2.3 虚拟内存密集型应用性能分析

5.2.4 IAmalloc性能评估

5.2.5 perf数据分析

5.2.6 PMthreads对NUMA访问的影响

5.2.7 PMthreads缺陷分析

5.3 PMPL性能评估

5.3.1 测试程序介绍

5.3.2 支持现有应用的可行性

5.3.3 几种版本下的性能比较

5.4 本章小结

第6章 总结与展望

参考文献

致谢

在读期间发表的学术论文与取得的研究成果

展开▼

摘要

基于共享地址空间的多线程是有效利用多核资源的重要方式。并发线程对一些共享数据的竞争,成为影响应用性能瓶颈之一。严重的共享地址空间竞争,限制了大量的多线程程序的性能。此外,在一些多线程的流处理应用中,共享队列的同步方式也极大地限制了此类应用的可伸缩性和性能。
  本文提出了一个线程模型PMthreads(private virtual memory threads),旨在完全消除线程间的地址空间竞争。基于课题组已有的生产-消费共享内存模型,本文在PMthreads中设计和实现了多线程流式编程模型PMPL(PMthreads Pipeline),旨在解决流式应用可伸缩性差的问题。本文的主要贡献如下:
  1、详细分析了地址空间竞争影响应用性能的原因,以及共享队列同步方式的缺陷。本文通过实验以及性能分析工具发现,保护共享地址空间的全局读写锁是导致多线程程序性能下降的主要原因。本文进一步分析了粗粒度锁、细粒度锁、原子指令以及无锁化在同步共享队列上的各自缺陷。
  2、提出了一个基于隔离地址空间的线程模型,并且在Linux上实现了一个保持共享变量语义的原型系统PMthreads。为了完全消除线程间的地址空间竞争,PMthreads给每一个线程一个隔离的地址空间。通过自定义字符设备驱动和开发IAmalloc(isolated address space malloc)堆分配器,PMthreads保持了线程共享变量语义,并且PMthreads采用Pthreads接口以支持现有的Pthreads程序。
  3、在PMthreads上,本文设计和实现了线程之间可以高效传递数据的流式编程模型PMPL。基于生产-消费共享内存模型,本文在PMthreads上设计和实现了PMPL,并且设计和实现了简单易用的发送和接收接口。
  4、在32核机器上对PMthreads和PMPL分别进行了性能评估。本文使用了Phoenix和PARSEC中的10个测试程序评估了PMthreads的性能。在32核下,实验结果表明:对于虚拟内存密集型应用,PMthreads相对于Pthreads性能提升了2.17倍~3.19倍;PMthreads对NUMA的亲和性要优于Pthreads;以dedup流式应用为例,PMPL相对于使用共享队列的方式性能提升了7.51倍。
  本文提出的PMthreads可以提升虚拟内存密集型多线程应用的可伸缩性和性能,并且Pthreads多线程程序可以无修改地调用PMthreads。同时本文提出的PMPL为程序员提供了一种简单高效的方式在线程之间传递数据,也使得流式多线程应用可以高可伸缩地执行。

著录项

  • 作者

    陈健康;

  • 作者单位

    中国科学技术大学;

  • 授予单位 中国科学技术大学;
  • 学科 计算机软件与理论
  • 授予学位 硕士
  • 导师姓名 张昱;
  • 年度 2017
  • 页码
  • 总页数
  • 原文格式 PDF
  • 正文语种 中文
  • 中图分类 TP311.11;
  • 关键词

    地址空间; 共享队列; 可扩展性; 多线程模型;

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号