总结:本质问题是消息传递由硬件完成还是软件完成。(多核共享内存其实是由硬件完成消息传递。)文章纲要性叙述多,详细得看后续文章、看代码。
We argue that the challenge of future multicore hardware is best met by embracing the networked nature of the machine, rethinking OS architecture using ideas from distributed systems.
Introduction
传统OS的优化在异构ISA OS中不适用比如:
- cache层次
- 内存一致性模型
- 本地/远端cache访问差异
上述技术问题的根因shared-memory kernel。
设计multikernel的3个宗旨:
- 跨核通讯都是显式的
- OS结构和硬件无关
- 状态并非共享而是副本
Motivations
本节列举到诸多相关工作
Systems are increasingly diverse
Cores are increasingly diverse
The interconnect matters
cache-coherent多处理器在硬件上已是消息传递,而不是共享互联。文章引用了AMD的Opteron北桥架构和Intel的QuickPath架构。
硬件上各个处理器更像是网络。消息路由由硬件完成,操作系统仍然看到各个处理器访问统一的内存。
未来的趋势是一个设备中芯片更少,更多处理器集中在一个芯片中。因此芯片中便会出现一个网络。
Messages cost less than shared memory
竟然引经据典,提到了1978年关于操作系统两个对立模型的理论。
Cache coherence is not a panacea
引用多个例子说明cache一致性在多核并不是万灵药。
Messages are getting easier
Discussion
The multikernel model
Make inter-core communication explicit
Make OS structure hardware-neutral
分成2部分:
- 硬件相关:消息传递硬件机制、硬件接口,我觉得可以统一为ISA
- 硬件无关
View state as replicated
处理器热插拔!有意思!
Applying the model
Implementation
Test platforms
4个电脑,配置参数暂时还不太看得出啥门道。
System structure
CPU drivers
CPU driver的特性
- event-driven
- single-threaded(大概是为了做实验简单)
- non-preemptable(大概是为了做实验简单)
Monitors
特性
- single-core
- user-space processes (schedulable)
功能
- 同步各个核的信息:内存分配表,地址空间映射表
- 建立跨进程通讯
- 管理各个核的功耗
Process structure
dispatcher是啥?
Inter-core communication
最底层抽象为消息传递,在x86-64平台使用cache-coherent内存实现。
注:URPC是核间通讯,IPC是核内通讯(同一个核的进程间),有关于这俩方法的引用文献
Memory management
内存数据类型和归属(Unix用file descriptor,Windows用object handler),barrelfish使用seL4模型(有引用文献)。
提到了他们的试错经验(这个大概是MicroSoft Research看重的吧)hindsight——capability复杂且多余。
需要核有相同的访存顺序强度?
Shared address spaces
- 共享页表
- 共用一个页表:快
- 复制多份,靠消息同步:可以适用于各个核的页表格式不同
capability和dispatcher是啥?文章似乎没有说明。
Knowledge and policy engine
根据数据和测试对网络配置进行调整。
Experiences
- CPU driver和monitor分离使得系统调用先要经过RPC到CPU driver然后才是真正的系统调用。优点是设计方便,缺点是额外RPC开销。
- 网络栈还不够高效,只是因为还未深入设计,有参考文献。
- multikernel与当前OS设计的区别在于,在multikernel设计里很多数据并不共享。
Evaluation
测评方向
- baseline perfermance
- scalability with cores
- adaptability to different hardware
- 探索高效的消息传递抽象
- 高效的模块化设计 以应对不同拓扑的网络
从一些小例子测试