
我想谈论一下文章“ I / O比CPU快-我们来划分资源
和消除(大多数)OS抽象” ,在ScyllaDB的一位开发人员Pekka Enberg的个人页面上发布。我从视频中找到了有关信息。
本文的作者应该在2019年5月12日至15日的HOTOS17 (操作系统中的热门话题)研讨会上进行演讲 。据我了解,他们正在讨论他们生命早期的发展情况。
我的文章是新闻,目的是引起好奇的人们思考这个话题并在评论中思考。
一般点
具有快速可编程网卡和非易失性存储器的服务器上的I / O接近易失性RAM的速度,并且一个处理器内核的速度保持不变。 应用程序无法利用现代硬件,因为 被迫使用建立在涉及慢I / O系统的抽象上的接口。
作者提出了他们自己的OS结构,称为parakernel ,它消除了大多数OS的抽象,并为应用程序提供了接口,以便他们可以充分利用设备的潜力。 Parakernel通过安全共享资源和复用共享资源来促进应用程序级并发。
当I / O速度大大降低并且应用程序正在等待I / O时,就发明了现代操作系统的体系结构。 当前,I / O设备可以轻松使处理器饱和。
这组作者说,现代网络堆栈每个程序包的工作量太大。 此外,操作系统通常会实现POSIX套接字API,这会带来上下文切换和CPU缓存污染的高昂成本。
硬件先决条件
现代的40Gbps网卡可以每5 ns接收与高速缓存行相对应的数据包,并且访问LLC(最后一级高速缓存)处理器的延迟约为15 ns。
例如,Linux开发了POSIX AIO接口,该接口应提供一个简单而有效的异步I / O接口。 事实证明,保留POSIX语义的这种接口的实现,支持和应用非常困难,为支持新的io_uring而被放弃了。
建议的解决方案是什么
作者称其为parakernel的新OS结构旨在简化任务并行化。 资源被分配给应用程序,并且它们具有对它们的完全控制权,无法共享的资源由内核多路复用。
多核系统中的资源共享需要处理器核之间的同步,这会阻止应用程序级别的并发。 可以通过在处理器内核之间分配资源来减少此障碍。
总结
一些操作系统抽象限制了I / O性能。 作者提出了一种共享共享资源并复用共享资源的OS结构。 Parakernel简化了应用程序级的并发性,并补充了线程到核心的设计。
Parakernel原型是用Rust编写的,目前正在开发中。 在文章中,我没有看到操作系统的名称,但是我从Manticore操作系统的一位作者那里找到了其他资料,因此得出结论, 这是此开发的存储库。
世界其他地方
事实证明,处理器制造商没有沉睡,也试图解决他们的产品和消费者之间的慢层问题。 因此,许多人不喜欢操作系统内核形式的性能瓶颈。
英特尔的有趣创新,更多相关信息可以在本文中找到。 以下是摘录:
- 英特尔卷管理设备(Intel VMD)-允许您直接使用NVM Express驱动器,将设备直接“提供”到存储系统。 因此,可以实现成熟的热插拔SSD,状态指示以及使用Intel VROC技术。
- CPU上的Intel虚拟RAID(Intel VROC)。 允许您使用处理器从NVMe驱动器创建RAID,使用它您可以拒绝软件解决方案或其他适配器来创建高速PCIe SSD阵列。
- Internet广域RDMA协议(iWARP)。 英特尔X722集成网络适配器现在支持RDMA扩展,因为该处理器支持四个10千兆(或千兆)以太网端口。 让我提醒您,RDMA绕过内核和操作系统,直接从内存通过网络访问数据。
了解已经扎根的系统中的新概念总是非常有趣。
请写下有关错误和必要补充的内容。
UPD : 社区正在对本文进行修订。
感谢您的帮助:
Zinc Prod播客的广告系列,我们将在逐个主题的基础上讨论本文。