I thought this had been long forgotten, but I guess not. It's been about 10 years since I did the bulk of that work the major paper was published in SOSPso I thought it would be interesting to think back on what we got right and what we got wrong.
I thought this had been long forgotten, but I guess not. Just to summarize, SEDA is a design for highly-concurrent servers based on a hybrid of event-driven and thread-driven concurrency.
The idea is to break the server logic into a Seda thesis of stages connected with queues; each stage has a small and dynamically-sized thread pool to process incoming events, and passes events to other stages.
The advantages of the design include modularity, the ability to scale to large numbers of concurrent requests, and most importantly, I think explicit control of overload, through the queues.
Apparently quite a few systems have been influenced by SEDA, including some major components that drive Google and Amazon. I occasionally hear war stories from folks that tried the SEDA design and abandoned it when the performance did not meet up with expectations.
The events-versus-threads debate continues to rage on. See, for example, this recent post comparing the performance of Node. At the time, the server landscape looked pretty different than it does now.
Linux threads were suffering a lot of scalability problems, so it was best to avoid using too many of them. Multicore machines were rare. Finally, at the time nearly all papers about Web server performance focused on bulk throughput for serving static Web pages, without regard for end-to-end request latency.
These days, things are pretty different. Linux threading implementations have vastly improved. Multicores are the norm. Before we start splitting hairs, I want to emphasize that the SEDA work is about a server architecture, not an implementation.
I spent an incredible amount of time trying to get gcj to be robust enough to run my code, but eventually gave up after around six months of hacking on it. Probably the best head-to-head comparison I have seen is David Pariag et al.
The most critical is the idea of connecting stages through event queues, with each stage having its own separate thread pool.
As a request passes through the stage graph, it experiences multiple context switches, and potentially long queueing at busy stages. This can lead to poor cache behavior and greatly increase response time. Note that under reasonably heavy load, the context switch overhead is amortized across a batch of requests processed at each stage, but on a lightly or moderately loaded server, the worst case context switching overhead can dominate.
Stages are still useful as a structuring primitive, but it is probably best to group multiple stages within a single "thread pool domain" where latency is critical.
Most stages should be connected via direct function call. This approach harkens back to the original Flash event-driven server design that SEDA was inspired by.
This is essentially the design we used in the Pixie operating system. I was also one of the members of the Java Community Process group that defined the java. However, layering the SEDA stage abstraction on top proved to be a real pain; there are multiple threads responsible for polling for request completion, incoming sockets, and so forth, and performance is highly sensitive to the timing of these threads.
I probably spent more time tuning the sockets library than any other part of the design. It did not surprise me to learn that people trying to run Sandstorm on different JVMs and threading libraries had trouble getting the same performance: I found those parameters through trial-and-error.
It turned out that my Java code was beating servers implemented in C, so I saw no reason to switch languages.scope and in quality, as a thesis for the degree of Master of Arts in International Relations.
Prof. Dr. Yüksel İnan Examining Committee Member I certify that I have read this thesis and have found that it is fully adequate, in scope and in quality, as a thesis for the degree of .
seda-reeder, maria "the writing on the wall: - , new york graffiti artists, jenny holzer and swoon." Electronic Thesis or Dissertation.
University of Cincinnati, barnweddingvt.com Understanding your products and the people who use them is the key to developing effective packaging solutions.
That's why, before designing any package, Seda does its homework. We examine how a product is shipped, stored, displayed, sold, consumed and used. THIN FILM COATING OF SILVER ON FIBERS BY ROLL TO ROLL INVERTED CYLINDRICAL MAGNETRON SPUTTERING A Thesis Submitted to the Graduate School of Engineering and Sciences of.
Nov 26, · How to grow mushroom farm logistics thesis example voice over business plan how to practice awa for gre social services courses, archetype thesis statement hot topics in the hospitality industry maths puzzles with answers.
a new framework seda . Aslan, Seda, "A Computational Fluid Dynamics Study on Bidirectional Glenn Shunt Flow with an Additional Pulsatile Flow Through a modified Blalock-Taussig Shunt" (). University of New Orleans Theses and Dissertations.