
than 40 years ago in terms of both throughput and latency, as thousands of services must
communicate to respond in near real-time to a user’s click [21, 5].
Forty years ago, there was little thought about parallelism. After all, there was only one
processor. Now it is not unusual to run Map-Reduce or Apache Spark jobs with thousands of
processes using millions of threads [13]. Stragglers creating long-tails inevitably result from sub-
stantial parallelism and are the bane of modern systems: incredibly costly and nearly impossible
to debug [21].
Forty years ago programmers typically wrote monolithic programs that ran to completion and
exited. Now, programs may be coded in multiple languages, make use of libraries of services (like
search, communications, databases, ML, and others), and may run continuously with varying
load. As a result, debugging has become much more complex and involves a flow of control in
multiple environments. Debugging such a network of tasks is a real challenge, not considered
forty years ago.
Forty years ago there was little-to-no-thought about privacy and fraud. Now, GDPR [73]
dictates system behavior for Personally Identifiable Information (PII) on systems that are under
continuous attack. Future systems should build in support for such constructs. Moreover, there
are many cases of bad actors doctoring photos or videos, and there is no chain of provenance to
automatically record and facilitate exposure of such activity.
Machine learning (ML) is quickly becoming central to all large software systems. However,
ML is typically bolted onto the top of most systems as an after thought. Application and system
developers struggle to identify the right data for ML analysis and to manage synchronization,
ordering, freshness, privacy, provenance, and performance concerns. Future systems should
directly support and enable AI applications and AI introspection, including first-order support
for declarative semantics for AI operations on system data.
In our opinion, serverless computing will become the dominant cloud architecture. One
does not need to spin up a virtual machine (VM), which will sit idle when there is no work
to do. Instead, one should use an execution environment like Amazon Lambda. Lambda is an
efficient task manager that encourages one to divide up a user task into a pipeline of several-
to-many subtasks
1
. Resources are allocated to a task when it is running, and no resources are
consumed at other times. In this way, there are no dedicated VMs; instead there is a collection
of short-running subtasks. As such, users only pay for the resources that they consume and
their applications can scale to thousands of functions when needed. We expect that Lambda
will become the dominant cloud environment unless the cloud vendors radically modify their
pricing algorithms. Lambda will cause many more tasks to exist, creating a more expansive
task management problem.
Lastly, “bloat” has wrecked havoc on elderly OSs, and the pathlength of common operations
such as sending a message and reading bytes from a file are now uncompetitively expensive. One
key reason for the bloat is the uncontrolled layering of abstractions. Having a clean, declarative
way of capturing and operating on operating system state can help reduce that layering.
These changed circumstances dictate that system software should be reconsidered. In this
proposal, we explore a radically different design for operating systems that we believe will
scale to support the performance, management and security challenges of modern computing
workloads: a data-centric architecture for operating systems built around clean separation of
1
In this paper, we will use Lambda as an exemplar of any resource allocation system that supports “pay only for
what you use.”
2
文档被以下合辑收录
评论