NrOS: Effective Replication and Sharing in an Operating System

NrOS: Effective Replication and Sharing in an Operating System
复制标题

DOI:
--
复制
发表时间:
2021
期刊:
--
影响因子:
--
通讯作者:
Ankit Bhardwaj;C. Kulkarni;Reto Achermann;I. Calciu;Sanidhya Kashyap;Ryan Stutsman;Amy Tai;Gerd Zellweger
Ankit Bhardwaj;C. Kulkarni;Reto Achermann;I. Calciu;Sanidhya Kashyap;Ryan Stutsman;Amy Tai;Gerd Zellweger
中科院分区:
其他
文献类型:
--
作者:
Ankit Bhardwaj;C. Kulkarni;Reto Achermann;I. Calciu;Sanidhya Kashyap;Ryan Stutsman;Amy Tai;Gerd Zellweger

文献摘要

被引文献

相似文献

众所周知,编写正确的操作系统内核代码需要手动存储器管理和类型的不安全代码,并且必须有效地处理复杂的异步事件。并依赖于每个内核结构或子系统专门的一次性同步模式,因此,内核开发人员在OS内部不断地重新填充同步,以提高可扩展性,以引入细微的错误。通过运行许多POSIX程序的安全方法,NROS主要构建为简单的,没有并发的顺序内核,使其更容易开发和推理其正确性。在每个NUMA节点上的NROS副本中的启发。在某些情况下以数量级的范围,尺度为96个具有性能的核心,几乎总是在大规模上占主导地位,同时保留了顺序内核的大部分简单性。
Writing a correct operating system kernel is notoriously hard. Kernel code requires manual memory management and type-unsafe code and must efficiently handle complex, asynchronous events. In addition, increasing CPU core counts further complicate kernel development. Typically, monolithic kernels share state across cores and rely on one-off synchronization patterns that are specialized for each kernel structure or subsystem. Hence, kernel developers are constantly refin-ing synchronization within OS kernels to improve scalability at the risk of introducing subtle bugs. We present NrOS, a new OS kernel with a safer approach to synchronization that runs many POSIX programs. NrOS is primarily constructed as a simple, sequential kernel with no concurrency, making it easier to develop and reason about its correctness. This kernel is scaled across NUMA nodes using node replication, a scheme inspired by state machine replication in distributed systems. NrOS replicates kernel state on each NUMA node and uses operation logs to maintain strong consistency between replicas. Cores can safely and concurrently read from their local kernel replica, eliminating remote NUMA accesses. Our evaluation shows that NrOS scales to 96 cores with performance that nearly always dominates Linux at scale, in some cases by orders of magnitude, while retaining much of the simplicity of a sequential kernel.