Ratul Mahajan Jitendra Padhye Ramya Raghavendra Brian Zill
Abstract — In contrast to the efﬁciency-centric designs that are more prevalent today, we advocate a view of system design based on a holistic view of available resources. This view is embodied in what we call the Buffet principle: continue using additional resources as long as the marginal beneﬁt is more than the marginal cost of using the resources. We illustrate through several examples how this seemingly obvious principle is not adhered to by many common designs and how its application can lead to qualitatively different and better performing designs. We also discuss the broad considerations that apply to designing systems that use the Buffet principle.
Alice is hungry and walks into a restaurant that is serving an all-you-can-eat buffet. She wants to eat enough food so that she can avoid hunger until the next meal. Should she eat based on expected time until the next meal, or should she eat as much as she can? In this context, the second strategy is clearly superior. With the ﬁrst strategy, any misestimation in the time until the next meal (or a faster than anticipated digestive rate due to increased activity levels) would lead to hunger. The second strategy provides the best possible protection against hunger that is limited only by the space in Alice’s stomach. And it represents no additional cost over the ﬁrst strategy. Surprisingly, system design often follows the ﬁrst strategy today. For instance, consider the task of adding FEC (forward error correction) bits to transmissions over a noisy channel such as wireless. In current designs, the number of added bits tends to be a function of the anticipated bit error rate [2, 4, 18], and independent of the available spectrum resources. This method protects against packet loss as long as the bit error rate is below the anticipated rate, but fails when it is higher or errors are highly bursty. This failure is unfortunate because there may be available spectrum resources in the system to protect against the errors. Worse, left unused, these resources simply go to waste. Underlying the use of the ﬁrst strategy today is the designer’s desire to make efﬁcient use of available resources. In the example above, adding the number of bits as a function of the anticipated bit error rate is perhaps the most efﬁcient way to use the spectrum. Adding more bits might be considered as a wasteful use of re1
sources. But as demonstrated by the two examples above, a singular focus on efﬁciency can lead to poor designs. Such designs can offer poor performance even when there are spare resources in the system that can enable better performance. Instead, designs that aggressively use available resources – respectively, the stomach space and spectrum in the examples – are limited only by the amount of available resource. Based on these observations, we put forth the Buffet principle in this paper. This principle states that we should continue using additional resources as long as the marginal beneﬁt is more than the marginal cost of using the resources. Stated differently, efﬁciency should not be a driving concern in situations where more of a resource can be used at a cost that is lower than the beneﬁt from the additional use. We present several examples of situations where the application of the Buffet principle leads to designs that are qualitatively different and arguably perform significantly better. These examples span a range of applications across a range of resource types. They include erasure coding over lossy channels, replication for reliability, managing control trafﬁc, and speculative execution. The diversity of these examples points to the broad applicability of the principle. We discuss broadly the situations in which the Buffet principle can be naturally applied. These include scenarios where the opportunity cost of greedily using...