OSDI2008摘要中文翻译
一、AutomatingNetworkApplicationDependencyDiscovery:Experiences,Limitations,andNewSolutions[自动网络应用依赖发现:经验、限制和新的解决方案]
大型的企业网络包含了数以千计的服务和应用。任何特定应用的性能和可靠性可能依赖于多样的服务、生成许多主机和网络组件。当这些依赖知识对于保证这些应用的稳定性和有效性变得没有价值的时候,那么唯一可证明的方式是通过利用人类专家知识来发现这这些复杂的依赖。而这些专家知识是不会随着大型企业的应用数量增加而增加的。
目前,研究者们提出了网络传输的依赖自动发现。本文中,通过和5个占优势的微软应用的基本事实进行比较,我们提出了针对这类依赖发现技术的性能和限制的可以理解的研究(包括我们之前的工作)。我们介绍了一个新的系统——Orion——基于对延迟尖峰的基本分析的新型洞察力,使用网络传输的包头和时序信息。虽然Orion大大提高了艺术的状态,但是仍有一些弊端。为了更进一步,Orion结合外部测试,来减少管理层的错误。我们的实验结果证明了Orion为结合自动发现和简单测试来获得正确性和可验证的依赖性提供了稳定的基础。
二、AvoidingFileSystemMicromanagementwithRangeWrites[使用并行写避免文件系统的微管理]
我们介绍并行写,一个对磁盘接口的简单但是很强大的改变,它将对文件系统的块位置的微管理需求移除了。通过允许文件系统指定可能地址目标的集合,并行写让磁盘选择请求的最终的磁盘上位置。磁盘通过写最近的位置和随后向上层的文件系统报告它的选择来提高性能。结果有很清晰的职责分别,文件系统(作为高层的管理者)提供了粗糙的位置控制,磁盘(作为底层的工作者)做出精细的位置决定来提高写的性能。通过大量的仿真和原型实现我们展示了并行写的好处,在一些情况下在合成和实际负载中能提高性能近3个数量级。
三、BinaryTranslationUsingPeepholeSuper-optimizers[使用窥孔超级优化器的二进制代码的翻译]
我们提出了新的优化二进制代码翻译的设计,它在更少的工程开销下可以产生和已有的二进制翻译器相当甚至更好的代码。并非手工编码一个指令集到另一个指令集的翻译程序,我们的方法使用超级优化器技术自动学习翻译规则。我们实现了一个PowerPC-x86二进制翻译器,并在一个大小不一的计算加强的平台上报告结果。和本地编译器相比,我们翻译的代码在大型平台上获得了67%的平均性能,而在一些小型的压力测试中性能实际上已经超过本地编译器。我们也和开源的二进制翻译器Qemu和一个商业化工具——苹果的Rosetta进行了对比,结果显示我们的翻译器在所有的平台上都要比前者要好,和后者相比,除了一个平台之外,我们的翻译器性能与之相当或者更快。
四、Corey:anoperatingsystemformanycores[Corey:一个多核的操作系统]多处理器操作系统内核一般提供了用锁保护的共享数据结构实现的复杂抽象。在多核系统的中,这种设计可能共享数据和锁的争夺以及核间的TLB刷新的代价使内核产生瓶颈。
Corey是基于这种规则的操作系统——应用程序控制所有的共享:所有的内核数据结构对于处理器应当是本地的除非由应用程序直接访问。Corey是一个类似于exokernel的操作系统,使用底层的抽象(共享、地址树、内核)允许库操作系统和应用控制所有的核间共享。Corey通过允许库操作系统将内核处理特定的功能和数据来充分利用核心。
一个运行在16个核心的AMD和Intel机器上的Corey原型。对MapReduce和Web服务应用的测试说明了Corey能扩展并达到比Linux更好的性能(对于MapReduce提高了9%,对于内核加强的语义网络平台可以提高50%)。微平台和性能计数证实了这些提高主要来源于避免了多核心机器上的高代价操作。
五、CuriOS:ImprovingReliabilitythroughOperatingSystemStructure[通过操作系统结构提高可靠性]
发生在微内核操作系统服务上的错误可能潜在的导致状态冲突和服务崩溃。通过崩溃服务的简单重启并不一直是对于可靠性要求的解决方案。盲目的重启含有用户状态的服务,比如回话信息将导致状态丢失并影响所有使用这个服务的用户。CuriOS代表了一类新型的OS设计,它使用轻量级的分布性、独立性以及OS服务状态的持久性来减轻重启时状态丢失带来的问题。这种设计也大大减少了包含客户相关状态的OS服务的错误传播。这通过只有在需要请求处理时将服务压缩到分离的保护域以及授权访问客户相关的状态中来实现。错误注入实验显示从87%-100%的人工OS服务错误中恢复是可能的,比如文件系统、网络、定时器和调度器。而这带来的性能开销是较低的。
六、DeadlockImmunity:EnablingSystemsToDefendAgainstDeadlocks[死锁避免:让操作系统避免死锁]
死锁免疫是指在程序一旦被特定的死锁所困扰时,开发出能抵制未来偶然发生的类似死锁的能力的特性。我们描述了一种技术能让程序在不需要编程者和用户参与的情况下自动增加免疫的能力。我么为Java和POSIX线程实现了这种技术并在几个实际系统上进行评估,包括MySQL,,JBoss,,SQLite,ApacheActiveMQ,Limewire和JavaJDK。结果显示了它有效的防御了死锁错误,而且只带来了合理的性能开销并能扩展到1024个线程。我们因此得出结论,死锁免疫为编程者和使用者提供了一个诱人的工具来避免难以捉摸的死锁的重复出现。
七、DeviceDriverSafetyThroughaReferenceValidationMechanism[通过参考验证机制的设备驱动安全]
设备驱动一般执行在超级管理员模式,因此必须被完全信任。本文介绍怎么将他们移出可信任计算的平台,不使用超级管理员特权运行它们并约束它们与硬
件设备的交互。通过Nexus操作系统将驱动执行在用户空间实现了这种方法。平衡硬件的独立性并检验它们的行为获得安全规范。这些Nexus驱动在性能上和内核信任驱动相当,并且CPU开销的水平对于大部分应用是可以接受的。比如,Intele1000以太网卡驱动在吞吐量上和Linux下相同硬件的信任驱动基本相当。Inteli810声卡驱动提供了连续的录音回放。磁盘和USB鼠标驱动也在安全规范下被成功移动操作在用户空间下。
八、DifferenceEngine:HarnessingMemoryRedundancyinVirtualMachines