This paper studies the performance of a large class of scheduling algorithms, and investigates the interaction between the application and the network to improve performance under congestion. The following key ideas are presented in this paper: (a) we show the performance and scalability trade-offs between providing separation and multiplexing among flows; (b) we show that a bounded buffer FIFO scheduler performs approximately as well as a weighted round robin scheduler with per-flow queues in most practical situations, but requires significantly less overhead in terms of per-flow state; and (c) we show how link layer schedulers can use application-level hints in order to increase the perceived goodness of connections at higher layers.
展开▼