写点什么

Helios 使用卫星内核处理异构环境

  • 2009-10-25
  • 本文字数:1741 字

    阅读完需:约 6 分钟

Helios 是微软的一个研究性的操作系统项目,它试图通过使用卫星内核来简化为异构的环境编写应用程序的过程。该项目的研究者包括:Edmund B.Nightingale、Orion Hodson、Ross McIlroy、Chris Hawblitzel 和 Galen Hunt,他们还发表了论文《 Helois:带有卫星内核的异构多处理》(PDF)。

这个研究项目开始于这样的一种言论,当系统包含相互交换数据的 CPU 时,这些 CPU 执行相同的一组指令,并提供相同的功能,它们会包含带有强大计算能力的可编程设备,像 NIC GPU ,但它们分别拥有自己的指令集和控制器。此外,操作系统对这样的可编程设备和任何其它不可编程的 IO 设备进行同样的处理,CPU 和 IO 卡之间的通信被限制为通过设备驱动在二者之间传递数据流,而不是提供软件接口,那样应用程序可以用其在这样的卡上执行特定的任务。作者提到的另一个问题是,设备驱动在操作系统中是运行在特权模式中的,但是它们变得越来越复杂。在文章中提到的一个例子是 NVidia 显示驱动,其中包含有 JIT 编译器。

作者的解决方案是 Helios,这个操作系统中包含的不是单一的内核,而是多个卫星内核。这样的内核运行在任何 CPU 或者设备上,具有可计算的能力,输出一个通用的接口和一组能够被所有内核和假定在这样的系统上运行的应用程序所理解的操作系统抽象集。卫星内核是:

微内核。每个卫星内核都是由调度器、内存管理器、命名空间管理器以及协调与其他内核通信的代码所组成的。所有其它传统的操作系统驱动和服务(例如:文件系统)都作为单独的线程执行。第一个用来启动的卫星内核叫做协调内核,它会找到可编程设备,并载入其它卫星内核。

内核通过远程消息传递来与其他内核通信:

Helios 为那些在卫星内核上执行的服务提供了透明的访问,这是通过扩展一种传统的消息传递接口以包含远程消息传递完成的。当位于相同卫星内核上的应用程序或者服务彼此之间进行通信的时候,就会使用一种快速的、零复制的消息传递接口。然而,如果通信发生在两个不同的卫星内核之间,那么远程消息传递会自动配置内核之间的消息,以使通信变得方便。由于应用程序是为消息传递接口而编写的,因此当应用程序运行在可编程的设备上时,不需要任何改变。

Helios 引出了一种亲和度(affinity)度量,它表示的是在内核中运行进程的合适程度。这个度量被用于决定进程应该被安排运行在哪个内核上,如果这个特定的内核在执行那段代码时会表现得更好,内核被绑定到其下的硬件上。好的亲和度说明应在该内核上运行进程,而不好的则说明需要寻找另外的内核。

例如,Helios 网络堆栈说明了对于用来与网络设备驱动通信的通道拥有较好的亲和度。当拥有可编程的网络适配器的时候,网络堆栈和执行在适配器上的驱动之间的好的亲和度,使得 Helios 能够自动将所有网络堆栈卸载到适配器上。卸载网络堆栈并不需要对其源代码做任何的改变。

为了让这个方法起作用,Helios 使用了两步的编译过程。应用程序首先从源代码被编译为中间语言,然后,到了安装的时候,应用程序基于系统的架构,或者更准确的说是找到的处理器(CPU、GPU、NIC 等)的指令集,被编译为机器码。

该团队已经为 XScale 可编程 IO 卡(使用 ARM 架构)和具有缓冲一致性(cache-coherent )的 NUMA 架构编写了内核。他们都申明获得了性能上的改善。

通过将任务卸载到 XScale I/O 卡上,我们的性能得到了 28% 的提升。在邮件服务器的测试评分中,通过自动在多个 NUMA 域中切分应用程序,我们的性能得到了 39% 的提升。

Helios 基于微软的一个研究项目—— Singularity ,该项目试图探索一种新的操作系统的选择。Helios 未来的计划包括:为像 Inter Larabee 显卡这样的 GPU 创建内核;寻找通过在内核之间移动 CPU 和内存来允许进程跨越多个 NUMA 域的方法;以及如何利用 Windows 的设备驱动的扩展驱动集以及它的内核代码来创建卫星内核。

查看英文原文: Helios Uses Satellite Kernels to Deal with Heterogeneous Environments - - - - - -

译者介绍:侯伯薇,生于丹东凤城,学在春城长春,工作在滨城大连;虽已年过而立,但自问童心未泯;对代码热情不减,愿与天下程序员共同修炼,不断提升。译有《学习WCF》、《Expert C# 2008 Business Objets》。InfoQ 中文站内容团队,尤其是架构、SOA 和Ruby 社区需要您的参与,有意者请邮件至 editors【AT】cn.infoq.com

2009-10-25 21:202111
用户头像

发布了 340 篇内容, 共 129.4 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

深究用户模式锁的使用场景(异变结构、互锁、旋转锁)

C++后台开发

数据结构 多线程 linux开发 C++开发

新时代冠军企业成功硬道理:人效管理与可组装式HCM SaaS

ToB行业头条

腾讯云原生容器服务发布三大新能力,创新自研技术助力企业降本增效

科技热闻

8年程序员年初被迫毕业,前后面试30家公司,如今终于上岸

Java永远的神

程序人生 后端 java程序员 java面试 面经分享

互联网企业面试必问Spring源码?搞定Spring源码,看完这篇就够了

钟奕礼

Java java面试 java编程 程序员‘

企业想要高效运营,还需要选择瓴羊Quick BI软件

流量猫猫头

大数据

数字先锋| 一朵云,将温暖传递千家万户

天翼云开发者社区

企业内部统一的移动平台,实现安全高效的业务移动化

WorkPlus

天翼云混合云容灾技术解析

天翼云开发者社区

嘉为科技吴文豪:重塑运维系统,跨越烟囱式建设的陷阱

嘉为蓝鲸

运维 #WeOps

数字产业化的颠覆创新和生态打法

PMO实践

产业数字化 11月月更

基于云原生技术的融合通信是如何实现的?

阿里云视频云

阿里云 云通信

天翼云Serverless边缘容器下沉服务 促进企业聚焦业务创新

天翼云开发者社区

2023 重学 Angular

PingCode研发中心

前端框架

制造业的敏捷分析,还需要使用瓴羊Quick BI

对不起该用户已成仙‖

老板让我在Linux中使用traceroute排查服务器网络问题,幸好我收藏了这篇文章!

wljslmz

Linux 网络故障 11月月更 traceroute

瓴羊Quick BI在商业智能BI发展趋势方面如何?

对不起该用户已成仙‖

蓝鲸研运体系在腾讯内是如何应用实践的?

嘉为蓝鲸

运维 智能运维AIOps

阿里云洛神云网络集中式网关丨技术解读与产品实践

云布道师

云网络

MyBatis resultMap元素的用途是什么呢?

@下一站

技术 mybatis java; 11月月更

图数据技术护航网络安全

Neo4j 图无处不在

网络安全 neo4j 图数据库 知识图谱 图算法

在结构效率不变情况下的降本增效

PMO实践

数字化转型 数字化 数智化 11月月更

嘉为科技宋蕴真:观测不止于监控,让运维不开盲盒

嘉为蓝鲸

运维 智能运维AIOps

三年后端开发:拿下阿里/腾讯/美团等四个大厂的Offer后,总结如下

钟奕礼

Java Java 面试 程序员‘ java 编程

云原生主题学习月|共同学习全球领先的亚马逊云科技云原生课程,组团共学拿奖励~

亚马逊云科技 (Amazon Web Services)

云原生 培训与认证

企业数字营销和运营如何效果更好?瓴羊Quick BI成为了不错的选择

小偏执o

焱融科技为国家重点实验室打造海量高性能存储

焱融科技

云计算 分布式系统 高性能 文件存储

跟误告警说再见,Smart Metrics 帮你用算法配告警

阿里巴巴云原生

阿里云 云原生 Grafana

玩转云端| 数据库安全服务,为数据库资产构建“最后一道防线”!

天翼云开发者社区

Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展

Neo4j 图无处不在

neo4j 图数据库 知识图谱 图可视化引擎 图数据

对话Neo4j首席科学家Jim Webber:图数据库江湖5年后将尘埃落定

Neo4j 图无处不在

neo4j 图数据库 知识图谱 非关系型数据库 图技术

Helios使用卫星内核处理异构环境_微软_Abel Avram_InfoQ精选文章