Hi everyone, I was thinking about doing a project on StreamIT, and I need some advice about whether this is the right tool for the job.
Basically, I want to do high-speed packet processing, somewhat like the Click Modular Router does, but with more general-purpose programmability on the reassembled flows. I'd like to be able to take a stream of packets in, reassemble it using a (or several) StreamIT element(s), and then push the reassembled flows off to other elements for further analysis, in a data- dependent way. I'm very interested in this platform due to the amount of backend work that's already been done. In particular, I really like how the compiler and runtime automatically figure out scheduling, and that there's been some work done in optimizing the cache behavior of streaming applications. Both of these can be quite fiddly to get right using native pthreads; it's great to have this handled by the environment. My concerns are several: (1) What type of data can be passed in a stream? I'd like to be able to pass very low-level things, basically thinly-encapsulated void*'s (probably inside a struct) that hold packet/event data. Looking at the 2.1.1 README, I see written that "The compiler does not support passing structures or complex numbers as stream parameters." Is the README accurate? (2) Does the runtime support work-stealing? That is, if I have several copies of an element set up (perhaps in round-robin fashion) and one has too much work, can the runtime migrate work off of one queue to another dynamically? Most of the earlier publications talk about static scheduling due to the predictable nature of the StreamIT computation elements, but I'm not sure this approach is best for a workload characterized by wide variance in compute times (depending on the type of data) and time-varying data rates. (3) Is there any support for per-element affinity when routing data through the element graph? Unfortunately, I'm going to need to keep some state around, and I'm afraid that if I can't "suggest" to the runtime that certain work units should be processed by certain elements, I'm going to tear up my cache performance. Any help would be appreciated. Thanks, DA -- David R. Albrecht Research Assistant, Hatswitch Group U. Illinois Urbana-Champaign +1 (312) 445-0883 [email protected] _______________________________________________ StreamIt-users mailing list [email protected] https://lists.csail.mit.edu/mailman/listinfo/streamit-users
