Superscalar communication: A runtime optimization for distributed applications
Building distributed applications is difficult mostly because of concurrency management. Existing approaches primarily include events and threads. Researchers and developers have been debating for decades to prove which is superior. Although the conclusion is far from obvious, this long debate clearly shows that neither of them is perfect. One of the problems is that they are both complex and error-prone. Both events and threads need the programmers to explicitly manage concurrencies, and we believe it is just the source of difficulties. In this paper, we propose a novel approach—superscalar communication, in which concurrencies are automatically managed by the runtime system. It dynamically analyzes the programs to discover potential concurrency opportunities; and it dynamically schedules the communication and the computation tasks, resulting in automatic concurrent execution. This approach is inspired by the idea of superscalar technology in modern microprocessors, which dynamically exploits instruction-level parallelism. However, hardware superscalar algorithms do not fit software in many aspects, thus we have to design a new scheme completely from scratch. Superscalar communication is a runtime extension with no modification to the language, compiler or byte code, so it is good at backward compatibility. Superscalar communication is likely to begin a brand new research area in systems software, which is characterized by dynamic optimization for networking programs.
Keywordsnetwork programming concurrency event thread superscalar
Unable to display preview. Download preview PDF.
- 5.Adya A, Howell J, Theimer M, et al. Cooperative task management without manual stack management. In: ATEC’02: Proceedings of the General Track of the Annual Conference on USENIX Annual Technical Conference. Berkeley, CA, USA, 2002. 289–302Google Scholar
- 6.von Behren R, Condit J, Brewer E. Why events are a bad idea (for high-concurrency servers). In: HOTOS’03: Proceedings of the 9th Conference on Hot Topics in Operating Systems, Berkeley, CA, USA, 2003. 4–4Google Scholar
- 7.Ousterhout J K. Why threads are a bad idea (for most purposes). In: Presentation given at the 1996 Usenix Annual Technical Conference. Berkely: USENIX Association, 1996Google Scholar
- 9.Krohn M, Kohler E, Kaashoek M F. Events can make sense. In: ATEC’07: Proceedings of the General Track of the Annual Conference on USENIX Annual Technical Conference. Berkely: USENIX Association, 2007Google Scholar
- 10.Fielding R T. Architectural styles and the design of network-based software architectures. PhD thesis, Chair-Taylor, Richard N. 2000Google Scholar
- 14.Cunningham R, Kohler E. Making events less slippery with eel. In: HOTOS’05: Proceedings of the 10th Conference on Hot Topics in Operating Systems. Berkeley: USENIX Association. 2005. 3–3Google Scholar
- 15.Chandrasekaran P, Conway C L, Joy J M, et al. Programming asynchronous layers with clarity. In: ESEC-FSE’ 07: Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. New York: ACM, 2007. 65–74CrossRefGoogle Scholar
- 18.Schmidt D C, Huston S D. C++ Network Programming: Systematic Reuse with ACE and Frameworks. Boston: Addison-Wesley Professional, 2003Google Scholar
- 21.Nightingale E B, Veeraraghavan K, Chen P M, et al. Rethink the sync. In: OSDI’ 06: Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation. Berkeley: USENIX Association, 2006. 1–1Google Scholar