%0 Journal Article %T 虚拟内存密集型多线程程序的性能改进方法 %A 张昱 %A 陈健康 %J 中山大学学报(自然科学版) %D 2018 %X 摘要 随着多核处理器的普及,大量基于共享地址空间的虚拟内存密集型多线程程序被开发出来.这类程序的一个重要特征是存在频繁的地址空间操作,例如 page faults 、mmap.为了保证并发地址空间操作的正确性,操作系统使用一个全局读写锁来同步,然而却导致在高并发时因多个线程竞争该锁而使这类程序性能下降.为了解决该问题,本文提出了一个基于隔离地址空间的线程模型PMthreads,可以完全消除线程在该读写锁上的竞争.通过自定义字符设备驱动轻量级更改Linux内核中进程的全局数据区域以及实现IAmalloc堆分配器,PMthreads可以保持线程共享变量.此外,PMthreads采用Pthreads接口以支持现有的Pthreads程序.在32核机器上,本文使用5个应用进行性能评估,实验结果表明:对于虚拟内存密集型应用histogram和dedup,在32线程时PMthreads相对于Pthreads性能提升了2.17倍和3.19倍;在16线程时,非此类应用的linear_regression也因削减假共享带来了8.15倍的性能提升 %K 虚拟内存密集型程序 %K 地址空间 %K 竞争 %K 性能 %K 可扩展性 %U http://xwxt.sict.ac.cn/CN/abstract/abstract4425.shtml