High-Performance User-Level Threading

高性能用户级线程

基本信息

  • 批准号:
    RGPIN-2014-04873
  • 负责人:
  • 金额:
    $ 1.46万
  • 依托单位:
  • 依托单位国家:
    加拿大
  • 项目类别:
    Discovery Grants Program - Individual
  • 财政年份:
    2018
  • 资助国家:
    加拿大
  • 起止时间:
    2018-01-01 至 2019-12-31
  • 项目状态:
    已结题

项目摘要

The purpose of this research program is to examine the abstract notion of threads and the mechanisms for their interaction in a programming language. The goal is to provide programmers with the ability to choose the amount of concurrency that best fits the problem, while still achieving good performance. The mechanism to accomplish this goal is user-level threading, which can scale to 10,000-100,000 threads, and can work with threading models in any programming language. The primary benefit from large numbers of threads is over-partitioning into small work-units to facilitate load balancing by the runtime. The secondary benefit is simpler concurrent program-construction using thread objects, leveraging normal object-construction in object-oriented programming. After experimenting with the user-level M:N threading model 15 years ago, the UNIX community adopted the 1:1 threading model. Hence, instead of M user threads multiplexing across N OS kernel-threads (M>>N), each user-level thread is bound to one kernel thread. However, 1:1 threading systems are beginning to saturate with increased processors and struggle to support concurrency approaches with large numbers of threads.**As a result, the notion of user-level M:N threading is being revisited with the expectation of untapped performance potential from low-cost: thread creation/deletion, context switching, synchronization, mutual exclusion, and preemption. The results are reinvigorating program-language and OS interaction with respect to creating and managing large numbers of threads in an application. For example, the languages Erlang, Haskell, and the new Go language from Google adopt the M:N threading model, providing simple mechanisms to create, and manage large numbers of user-level threads. Unfortunately, the 1:1 threading-model at the kernel level significantly constrains the M:N threading-model through restrictions at the kernel/application boundary. The objective of this research program is to reexamine the major problem areas of M:N threading, e.g., scheduling, blocking, garbage collection, and preemption, to see if new solutions can be engineered. Current M:N systems do not handle some of these problems, and hence are fragile or restrictive, or ignore them by adopting a closed environment (no outside interaction). While user-level threading has been worked on extensively, it still remains a challenging problem with many open issues, e.g., as the kernel is unaware of user threads, conflicting interactions occur.**The focus of this research program is leveraging existing mechanisms as much as possible to generate proof-of-concepts for user-level threading. The scientific approach is extending the runtime for C++ and Go (and possibly Java) to identify fundamental user-level threading problems and test different solutions. Next is building performance experiments to compare approaches. Finally, extensive analysis of the results is required to understand where time is being lost or gained. Success will be measured by demonstrating a significant performance gain in a few key areas using M:N threading versus 1:1 threading (e.g., thread-per-connection web-server). The primary novelty and expected significance of the work is in programming-language runtime-support with respect to high-performance scheduling using available OS mechanisms. The secondary significance is to work with OS researchers and hardware designers to explore a few approaches for high-performance interactions across the application/OS boundary. The results directly re-address the question of whether M:N threading is a viable direction for future programming-language and OS development. Answering this question is crucial to the development direction of both these areas over the next 5 years.
该研究计划的目的是检查线程的抽象概念及其在编程语言中相互作用的机制。目的是为程序员提供最适合问题的并发量,同时仍然达到良好的性能。实现此目标的机制是用户级线程,可以扩展到10,000-100,000个线程,并且可以使用任何编程语言的线程模型。大量线程的主要好处是将过度分配到小型工作单元中,以促进运行时的负载平衡。次要好处是使用线程对象更简单的程序 - 构建,从而利用面向对象的编程中的正常对象构造。在15年前尝试了用户级M:N线程模型之后,UNIX社区采用了1:1线程模型。因此,每个用户级线程绑定到一个内核线程,而不是在n os内核线程中多路复用的用户线程。但是,1:1线程系统开始随增加的处理器而饱和,并难以支持大量线程的并发方法。低成本的性能潜力:线程创建/删除,上下文切换,同步,相互排斥和抢先。对于创建和管理应用程序中的大量线程,结果是重新引起的程序语言和OS交互。例如,Erlang,Haskell和Google的新GO语言采用M:N线程模型,提供简单的机制来创建和管理大量用户级线程。不幸的是,在内核级别的1:1螺纹模型通过内核/应用边界的限制显着限制了M:N螺纹模型。该研究计划的目的是重新审查M:N线程的主要问题领域,例如调度,阻塞,垃圾收集和先发制人,以查看是否可以设计新的解决方案。当前的M:N系统无法解决其中的某些问题,因此是脆弱或限制性的,或者通过采用封闭的环境(没有外部互动)来忽略它们。尽管用户级的线程已经进行了广泛的处理,但许多开放问题仍然是一个具有挑战性的问题,例如,由于内核没有意识到用户线程,因此发生了冲突的交互。尽可能为用户级线程生成概念验证。科学方法正在延长C ++和GO(可能是Java)的运行时,以识别基本的用户级穿线问题并测试不同的解决方案。接下来是建立性能实验以比较方法。最后,需要对结果进行广泛的分析,以了解浪费时间或获得的时间。通过使用M:N线程与1:1线程(例如,每个连接网络服务器)在一些关键领域中证明在几个关键领域的显着性能增益来衡量成功。这项工作的主要新颖性和预期意义在于使用可用的OS机制进行高性能调度方面的编程运行时支持。次要意义是与OS研究人员和硬件设计人员合作,探索在应用程序/OS边界上进行高性能相互作用的几种方法。结果直接重新调整了M:N线程是否是未来编程语言和OS开发的可行方向的问题。回答这个问题对于未来5年的这两个领域的发展方向至关重要。

项目成果

期刊论文数量(0)
专著数量(0)
科研奖励数量(0)
会议论文数量(0)
专利数量(0)

数据更新时间:{{ journalArticles.updateTime }}

{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

数据更新时间:{{ journalArticles.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ monograph.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ sciAawards.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ conferencePapers.updateTime }}

{{ item.title }}
  • 作者:
    {{ item.author }}

数据更新时间:{{ patent.updateTime }}

Buhr, Peter其他文献

Buhr, Peter的其他文献

{{ item.title }}
{{ item.translation_title }}
  • DOI:
    {{ item.doi }}
  • 发表时间:
    {{ item.publish_year }}
  • 期刊:
  • 影响因子:
    {{ item.factor }}
  • 作者:
    {{ item.authors }}
  • 通讯作者:
    {{ item.author }}

{{ truncateString('Buhr, Peter', 18)}}的其他基金

Programming Language Type Systems and Concurrency
编程语言类型系统和并发性
  • 批准号:
    RGPIN-2020-03908
  • 财政年份:
    2022
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Discovery Grants Program - Individual
New Programming Language and Runtime System
新的编程语言和运行时系统
  • 批准号:
    537903-2018
  • 财政年份:
    2021
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Collaborative Research and Development Grants
Parallel Client/Server System for Programming Language Research
用于编程语言研究的并行客户端/服务器系统
  • 批准号:
    RTI-2022-00004
  • 财政年份:
    2021
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Research Tools and Instruments
Programming Language Type Systems and Concurrency
编程语言类型系统和并发性
  • 批准号:
    RGPIN-2020-03908
  • 财政年份:
    2021
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Discovery Grants Program - Individual
New Programming Language and Runtime System
新的编程语言和运行时系统
  • 批准号:
    537903-2018
  • 财政年份:
    2020
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Collaborative Research and Development Grants
Programming Language Type Systems and Concurrency
编程语言类型系统和并发性
  • 批准号:
    RGPIN-2020-03908
  • 财政年份:
    2020
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Discovery Grants Program - Individual
New Programming Language and Runtime System
新的编程语言和运行时系统
  • 批准号:
    537903-2018
  • 财政年份:
    2019
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Collaborative Research and Development Grants
High-Performance User-Level Threading
高性能用户级线程
  • 批准号:
    RGPIN-2014-04873
  • 财政年份:
    2017
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Discovery Grants Program - Individual
High-Performance User-Level Threading
高性能用户级线程
  • 批准号:
    RGPIN-2014-04873
  • 财政年份:
    2016
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Discovery Grants Program - Individual
High-Performance User-Level Threading
高性能用户级线程
  • 批准号:
    RGPIN-2014-04873
  • 财政年份:
    2015
  • 资助金额:
    $ 1.46万
  • 项目类别:
    Discovery Grants Program - Individual

相似国自然基金

用户群体价值最大化的在线服务信誉度量机制研究
  • 批准号:
    62362043
  • 批准年份:
    2023
  • 资助金额:
    32 万元
  • 项目类别:
    地区科学基金项目
用户多样化需求驱动下软件即服务厂商定制化策略研究
  • 批准号:
    72301254
  • 批准年份:
    2023
  • 资助金额:
    30 万元
  • 项目类别:
    青年科学基金项目
用户视角下AIGC应用中的AI伦理研究:测量模型、影响机制与应对策略
  • 批准号:
    72371112
  • 批准年份:
    2023
  • 资助金额:
    40 万元
  • 项目类别:
    面上项目
面向用户生成内容的流媒体视频体验质量评价研究
  • 批准号:
  • 批准年份:
    2023
  • 资助金额:
    30 万元
  • 项目类别:
用户为中心的流数据密文访问控制关键技术研究
  • 批准号:
    62372096
  • 批准年份:
    2023
  • 资助金额:
    50 万元
  • 项目类别:
    面上项目

相似海外基金

SORDINO-fMRI for mouse brain applications
用于小鼠大脑应用的 SORDINO-fMRI
  • 批准号:
    10737308
  • 财政年份:
    2023
  • 资助金额:
    $ 1.46万
  • 项目类别:
A web-based platform for robust single-cell analysis, bulk data deconvolution and system-level analysis
基于网络的平台,用于强大的单细胞分析、批量数据反卷积和系统级分析
  • 批准号:
    10766073
  • 财政年份:
    2023
  • 资助金额:
    $ 1.46万
  • 项目类别:
Multiparametric transrectal ultrasound and photoacoustic imaging of human prostate
人前列腺多参数经直肠超声和光声成像
  • 批准号:
    10651397
  • 财政年份:
    2022
  • 资助金额:
    $ 1.46万
  • 项目类别:
Innovative biostatistical approaches to network level analyses of connectome-behavior relationships
连接组-行为关系网络级分析的创新生物统计方法
  • 批准号:
    10700129
  • 财政年份:
    2022
  • 资助金额:
    $ 1.46万
  • 项目类别:
Unified group sequential designs for clustered data (eye level) in randomized eye trials
随机眼科试验中聚类数据(眼水平)的统一组序贯设计
  • 批准号:
    10527031
  • 财政年份:
    2022
  • 资助金额:
    $ 1.46万
  • 项目类别:
{{ showInfoDetail.title }}

作者:{{ showInfoDetail.author }}

知道了