TwinDrivers: semi-automatic derivation of fast and safe hypervisor network drivers from guest OS drivers

Aravind Menon, Simon Schubert, W. Zwaenepoel
{"title":"TwinDrivers: semi-automatic derivation of fast and safe hypervisor network drivers from guest OS drivers","authors":"Aravind Menon, Simon Schubert, W. Zwaenepoel","doi":"10.1145/1508244.1508279","DOIUrl":null,"url":null,"abstract":"In a virtualized environment, device drivers are often run inside a virtual machine (VM) rather than in the hypervisor, for reasons of safety and reduction in software engineering effort. Unfortunately, this approach results in poor performance for I/O-intensive devices such as network cards. The alternative approach of running device drivers directly in the hypervisor yields better performance, but results in the loss of safety guarantees for the hypervisor and incurs additional software engineering costs.\n In this paper we present TwinDrivers, a framework which allows us to semi-automatically create safe and efficient hypervisor drivers from guest OS drivers. The hypervisor driver runs directly in the hypervisor, but its data resides completely in the driver VM address space. A Software Virtual Memory mechanism allows the driver to access its VM data efficiently from the hypervisor running in any guest context, and also protects the hypervisor from invalid memory accesses from the driver. An upcall mechanism allows the hypervisor to largely reuse the driver support infrastructure present in the VM. The TwinDriver system thus combines most of the performance benefits of hypervisor-based driver approaches with the safety and software engineering benefits of VM-based driver approaches.\n Using the TwinDrivers hypervisor driver, we are able to improve the guest domain networking throughput in Xen by a factor of 2.4 for transmit workloads, and 2.1 for receive workloads, both in CPU-scaled units, and achieve close to 64-67 of native Linux throughput.","PeriodicalId":89892,"journal":{"name":"ASPLOS ... proceedings. International Conference on Architectural Support for Programming Languages and Operating Systems","volume":"2 1","pages":"301-312"},"PeriodicalIF":0.0000,"publicationDate":"2009-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"35","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"ASPLOS ... proceedings. International Conference on Architectural Support for Programming Languages and Operating Systems","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1508244.1508279","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 35

Abstract

In a virtualized environment, device drivers are often run inside a virtual machine (VM) rather than in the hypervisor, for reasons of safety and reduction in software engineering effort. Unfortunately, this approach results in poor performance for I/O-intensive devices such as network cards. The alternative approach of running device drivers directly in the hypervisor yields better performance, but results in the loss of safety guarantees for the hypervisor and incurs additional software engineering costs. In this paper we present TwinDrivers, a framework which allows us to semi-automatically create safe and efficient hypervisor drivers from guest OS drivers. The hypervisor driver runs directly in the hypervisor, but its data resides completely in the driver VM address space. A Software Virtual Memory mechanism allows the driver to access its VM data efficiently from the hypervisor running in any guest context, and also protects the hypervisor from invalid memory accesses from the driver. An upcall mechanism allows the hypervisor to largely reuse the driver support infrastructure present in the VM. The TwinDriver system thus combines most of the performance benefits of hypervisor-based driver approaches with the safety and software engineering benefits of VM-based driver approaches. Using the TwinDrivers hypervisor driver, we are able to improve the guest domain networking throughput in Xen by a factor of 2.4 for transmit workloads, and 2.1 for receive workloads, both in CPU-scaled units, and achieve close to 64-67 of native Linux throughput.
TwinDrivers:从客户操作系统驱动程序中半自动派生快速和安全的hypervisor网络驱动程序
在虚拟化环境中,出于安全和减少软件工程工作量的原因,设备驱动程序通常在虚拟机(VM)中而不是在管理程序中运行。不幸的是,这种方法导致I/ o密集型设备(如网卡)的性能很差。在管理程序中直接运行设备驱动程序的替代方法可以获得更好的性能,但会导致管理程序失去安全保证,并产生额外的软件工程成本。在本文中,我们介绍了TwinDrivers,这是一个框架,它允许我们从客户操作系统驱动程序中半自动地创建安全高效的hypervisor驱动程序。hypervisor驱动程序直接在hypervisor中运行,但其数据完全驻留在驱动虚拟机地址空间中。软件虚拟内存机制允许驱动程序从运行在任何来宾上下文中的管理程序中有效地访问其VM数据,并且还保护管理程序免受来自驱动程序的无效内存访问。upcall机制允许管理程序在很大程度上重用VM中存在的驱动程序支持基础结构。因此,TwinDriver系统将基于管理程序的驱动程序方法的大多数性能优势与基于vm的驱动程序方法的安全性和软件工程优势结合起来。使用TwinDrivers虚拟机管理程序驱动程序,我们能够将Xen中的客户域网络吞吐量提高2.4倍用于传输工作负载,2.1倍用于接收工作负载,都是在cpu扩展的单元中,并实现接近64-67的本地Linux吞吐量。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
CiteScore
15.60
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信
小红书