写点什么

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:202411
用户头像

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

关注

评论

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

Spring Boot「21」JPA 中的 Entity

Samson

Java hibernate Spring Boot 学习笔记 11月月更

AI为方,产业为向:京东云数字人的技术攀爬

脑极体

人工智能’

Baklib知识分享|企业知识管理难,该如何解决?

Baklib

真正的高效能RPC框架Focus

dinstone

json RPC 高性能 protobuf 跨语言

TOGAF企业架构框架5-企业连续统一体

马说IT

TOGAF 企业架构框架 架构分区 企业连续统一体 架构存储库

python小知识-set妙用

AIWeker

Python 人工智能 python小知识 11月月更

跟着卷卷龙一起学Camera--延迟04

卷卷龙

ISP camera 11月月更

TOGAF企业架构框架4-内容框架

马说IT

架构 TOGAF 企业架构框架 内容框架

Nginx配置中root和alias分不清?本文3分钟帮你解惑!

wljslmz

nginx 服务器 root 11月月更 alias

软件测试面试真题 | 讲讲 OSI 七层模型,每层模型具体干嘛的?

测试人

鱼骨图还能做需求优先级分析?

产品海豚湾

产品经理 产品设计 产品开发 需求分析 11月月更

官宣 | 袋鼠云获过亿元 C + 轮融资,深耕国产自研数字化技术与服务

袋鼠云数栈

2022-11-01:给定一个只由小写字母和数字字符组成的字符串str。 要求子串必须只含有一个小写字母,数字字符数量随意。 求这样的子串最大长度是多少?

福大大架构师每日一题

算法 rust 福大大

Spark SQL基本架构

穿过生命散发芬芳

spark SQL 11月月更

Baklib经验分享 | 一些搭建帮助中心的攻略

Baklib

帮助中心

物联网数据分析(上篇)——业务系统架构类

阿里云AIoT

阿里云 数据分析 物联网 业务架构 数据存储

MongoDB源码学习:mongod如何处理请求

云里有只猫

mongodb 源码学习

研发效能|DevOps 已死平台工程永存带来的焦虑

laofo

DevOps 研发效能 持续交付 工程效率 平台工程

iofod 支持生成 Electron 桌面应用

iofod jude

前端 低代码平台 iofod

Java | IO流介绍

陌上

Java 编程 11月月更

SAP UI5 和 Angular 的函数防抖(Debounce)和函数节流(Throttle)实现原理介绍

汪子熙

前端开发 angular Fiori ui5 11月月更

数据的分组与计算

芯动大师

Python pandas 11月月更

盘点具备盈利潜力的几大加密板块,以及潜在的投资机会

BlockChain先知

防守体系建设三部曲

阿泽🧸

11月月更 防守体系

融云钜惠来袭,新客尝鲜首月 2.7 折起,超值套餐 6 折起

融云 RongCloud

产品

SAP UI5 BarcodeScannerButton 的初始化逻辑 - feature 检测,Cordova API 检测等逻辑

汪子熙

前端开发 Fiori SAP UI5 ui5 11月月更

基于 Grafana LGTM 可观测性平台的快速构建

Grafana 爱好者

可观测性 Observability

安全左中右·2022 XDR 网络安全运营新理念峰会圆满落幕

未来智安XDR SEC

网络安全 XDR扩展威胁检测响应

跟着卷卷龙一起学Camera--Rolling Shutter

卷卷龙

ISP camera 11月月更

EDAS 流量入口网关最佳实践

阿里巴巴云原生

阿里云 分布式 云原生 网关

以开发之名|线上家装新美学——梦想之家,由你来定

HarmonyOS SDK

AR HMS Core

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