(HotOS'03 Note) Why Events are a Bad Idea
Why Events are a Bad Idea (for High-concurrency Servers)
Rob von Behren et al.
HotOS 2003
作者认为对于高度并发的服务器应用,设计良好的线程模型要优于事件模型。其一个基本出发点是Lauer和Needham 1978年提出的essage-passing systems and process-based systems are duals.
作者提出的对现有线程库的改进,主要是对合作式调度的有效支持,可以提高线程库在此应用中效率。(线程切换开销主要来源于:a. 为抢占调度保存context;b. kernel crossing。这两点在合作式调度中都可以大大降低。)
作者还强调了编译器和运行时环境结合的作用。通过编译器的全局分析等手段,可以对调度点、栈尺寸等提供优化。
另外,高并发环境下栈分配的问题可能制约scalability,作者提出了动态栈分配、优化跨调度的栈尺寸等解决方法。这让我想起了Art of Computer Programming第一卷中Knuth对多个栈共享空间的分析。当时觉得只有MIX计算机会关注这个问题,现在看来当时的想法太幼稚了。
Rob von Behren et al.
HotOS 2003
作者认为对于高度并发的服务器应用,设计良好的线程模型要优于事件模型。其一个基本出发点是Lauer和Needham 1978年提出的essage-passing systems and process-based systems are duals.
作者提出的对现有线程库的改进,主要是对合作式调度的有效支持,可以提高线程库在此应用中效率。(线程切换开销主要来源于:a. 为抢占调度保存context;b. kernel crossing。这两点在合作式调度中都可以大大降低。)
作者还强调了编译器和运行时环境结合的作用。通过编译器的全局分析等手段,可以对调度点、栈尺寸等提供优化。
另外,高并发环境下栈分配的问题可能制约scalability,作者提出了动态栈分配、优化跨调度的栈尺寸等解决方法。这让我想起了Art of Computer Programming第一卷中Knuth对多个栈共享空间的分析。当时觉得只有MIX计算机会关注这个问题,现在看来当时的想法太幼稚了。

Post a Comment