High-Performance User-Level Threading
高性能用户级线程
基本信息
- 批准号:RGPIN-2014-04873
- 负责人:
- 金额:$ 1.46万
- 依托单位:
- 依托单位国家:加拿大
- 项目类别:Discovery Grants Program - Individual
- 财政年份:2016
- 资助国家:加拿大
- 起止时间:2016-01-01 至 2017-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内核线程(M>>N)复用M个用户线程,每个用户级线程被绑定到一个内核线程。然而,1:1线程系统开始饱和与增加的处理器和斗争,以支持并发方法与大量的线程。
因此,用户级M:N线程的概念正在被重新审视,期望从低成本中获得未开发的性能潜力:线程创建/删除,上下文切换,同步,互斥和抢占。其结果是在应用程序中创建和管理大量线程方面重新激活了程序语言和操作系统的交互。例如,Erlang、Haskell和Google的新Go语言都采用了M:N线程模型,提供了简单的机制来创建和管理大量的用户级线程。不幸的是,内核级的1:1线程模型通过内核/应用程序边界的限制显著地约束了M:N线程模型。这项研究计划的目的是重新审视M:N线程的主要问题领域,例如,调度、阻塞、垃圾收集和抢占,看看是否可以设计新的解决方案。目前的M:N系统无法处理其中的一些问题,因此是脆弱的或限制性的,或者通过采用封闭的环境(没有外部交互)来忽略它们。虽然用户级线程已经得到了广泛的研究,但它仍然是一个具有挑战性的问题,有许多悬而未决的问题,例如,由于内核不知道用户线程,因此发生冲突的交互。
该研究计划的重点是尽可能地利用现有机制来生成用户级线程的概念证明。科学的方法是扩展C++和Go(可能还有Java)的运行时,以识别基本的用户级线程问题并测试不同的解决方案。接下来是构建性能实验来比较方法。最后,需要对结果进行广泛的分析,以了解时间在哪里损失或获得。成功与否将通过使用M:N线程与1:1线程(例如,每连接线程网络服务器)。主要的新奇和预期的意义的工作是在编程语言的运行时支持高性能调度使用现有的操作系统机制。第二个意义是与操作系统研究人员和硬件设计人员合作,探索跨应用程序/操作系统边界进行高性能交互的一些方法。结果直接重新解决了M:N线程是否是未来编程语言和操作系统开发的可行方向的问题。解决这个问题,对于这两个领域未来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 - 财政年份:2018
- 资助金额:
$ 1.46万 - 项目类别:
Discovery Grants Program - Individual
High-Performance User-Level Threading
高性能用户级线程
- 批准号:
RGPIN-2014-04873 - 财政年份:2017
- 资助金额:
$ 1.46万 - 项目类别:
Discovery Grants Program - Individual
High-Performance User-Level Threading
高性能用户级线程
- 批准号:
RGPIN-2014-04873 - 财政年份:2015
- 资助金额:
$ 1.46万 - 项目类别:
Discovery Grants Program - Individual
相似海外基金
CRII: SHF: An Automated and User-centered Framework for Reproducing System-level Concurrency Bugs by Analyzing Bug Reports
CRII:SHF:通过分析错误报告来重现系统级并发错误的自动化且以用户为中心的框架
- 批准号:
2348277 - 财政年份:2024
- 资助金额:
$ 1.46万 - 项目类别:
Standard Grant
User-Level Behavioral Analytics
用户级行为分析
- 批准号:
533204-2018 - 财政年份:2020
- 资助金额:
$ 1.46万 - 项目类别:
Collaborative Research and Development Grants
A multi-user access laser tweezers, fluorescence and interference microscopy facility for understanding force at the molecular level
多用户访问激光镊子、荧光和干涉显微镜设备,用于了解分子水平的力
- 批准号:
BB/T017767/1 - 财政年份:2020
- 资助金额:
$ 1.46万 - 项目类别:
Research Grant
User-Level Behavioral Analytics
用户级行为分析
- 批准号:
533204-2018 - 财政年份:2019
- 资助金额:
$ 1.46万 - 项目类别:
Collaborative Research and Development Grants
CSSI Elements: DataSwarm: A User-Level Framework for Data Intensive Scientific Applications
CSSI 元素:DataSwarm:数据密集型科学应用程序的用户级框架
- 批准号:
1931348 - 财政年份:2019
- 资助金额:
$ 1.46万 - 项目类别:
Standard Grant
User-Level Behavioral Analytics**
用户级行为分析**
- 批准号:
533204-2018 - 财政年份:2018
- 资助金额:
$ 1.46万 - 项目类别:
Collaborative Research and Development Grants
High-Performance User-Level Threading
高性能用户级线程
- 批准号:
RGPIN-2014-04873 - 财政年份:2018
- 资助金额:
$ 1.46万 - 项目类别:
Discovery Grants Program - Individual
High-Performance User-Level Threading
高性能用户级线程
- 批准号:
RGPIN-2014-04873 - 财政年份:2017
- 资助金额:
$ 1.46万 - 项目类别:
Discovery Grants Program - Individual
High-Performance User-Level Threading
高性能用户级线程
- 批准号:
RGPIN-2014-04873 - 财政年份:2015
- 资助金额:
$ 1.46万 - 项目类别:
Discovery Grants Program - Individual














{{item.name}}会员




