Re: seda3 improvements

[email protected] Fri, 25 Mar 2005 12:33:58 -0500
Newsgroups gmane.comp.java.seda.user
Message-ID <[email protected]>
Le 25 Mars 2005 04:00, Justin Johnson a =E9crit=A0:
> What are the current improvements over seda?

There is a lot of performance improvements. =20

By exemple, you can see our 2 new queue implementations,=20
DynamicArrayBlockingQueue and LinkedBlockingQueue.  These queues are much=20
more scalable and performant than the old FiniteQueue.

Also, we now support bulk enqueue and dequeue operations based on list inst=
ead=20
of array.  So, we can reuse the list instead of creating each time a new=20
array.  Thus, we don't waste cpu time for array memory allocation and GC.

We now support blocking enqueue operations, so events cannot be lost anymor=
e. =20
This is great but, for performance reason, we need to develop a backpressur=
e=20
mecanism, that will notify the ThreadManager to not allocate a thread to a=
=20
stage that is waiting to enqueue an event to another stage.  This is really=
=20
the most important feature to develop before releasing seda3.

Also, stages are now lifecycled.  This means, by exemple, that we can reini=
t=20
(stop -> destroy -> init -> start) a stage with new configuration parameter=
s. =20
The [program/deprogram] lifecycle level can be used to change on the fly th=
e=20
implementation/version of your event handler.  So, it's possible to update =
an=20
application without shuting down Sandstorm.  Note that this functionnality =
is=20
not completed yet; I need to develop a custom ClassLoader.

Also, our xml-like configuration file now support special properties like=20
${user.home} and ${config.home}, so the programmer don't need to write=20
absolute path name.

Also, we have a new Transactional Queue API.  This API is more easy to use =
and=20
protects againts dandling prepare (memory leak).

We have a new ProfilerHandlerIF api that is used to receives values from th=
e=20
ProfilerIF and exports them.  It might for example, show them graphically o=
n=20
the screen or write them to a file.

Load shedding code is now separated from the real queue code.  Indeed, we u=
se=20
a queue proxy, AdmissionControlledSinkIF.  This give us the possibility to=
=20
change the queue implementation without changing the sink proxy and=20
vice-versa.  Also, code is not duplicated.

We now have a new Signaling API.  Here is what I have already said about it=
 on=20
the mailling list:

"I see the SignalMgr like an interrupt bus in CPU/OS.  Conceptually, a=20
 signal should be like an interrupt, that is, it should preempt all queue=20
 events and lower priority signals.  A signal should be enqueued=20
 unconditionally, so it must bypass load-conditioning policies like queue=20
 capacity.  We could have two kinds of signal: user and system.  A=20
 system-signal is when the source of the signal is Sandstorm.  So,=20
 handlers cannot send system-signal, only user-signal.  Signals should be=20
 handled by the EventHandler.handleEvent() method, like others kind of=20
 events.  By exemple, I would like to use this new SignalMgr to advertize a=
ll=20
 handlers that Sandstorm is shutting down."

After some discussions with users, we have decided to implement it a little=
=20
bit differently.  Our current api must probably be reviewed before the next=
=20
release however.  Indeed, I have a new idea to implement very efficiently=20
signal preemption over normal events and I would like to give it a try.

Also, synchronization overhead has been reduced.

Also, a major refactoring in SandstormConfig has been done, so it would be=
=20
easy to use a new configuration file format.  I would like to have pure xml=
=20
instead of our current .cfg.

Also, we have a new UI Profiler.

Support Object type in SandstormConfigIF and ConfigDataIF.


> Is there a roadmap for seda3?

Sure.=20

=2D Backpressure stuff is really important.

=2D Remove singleton in SS.

=2D All internals components should also be lifecycled, by exemple ManagerI=
=46,=20
ProfilerIF, SignalMgrIF, ThreadManagerIF should have a start() and stop()=20
method.


Optional features for seda3:

=2D A custom ClassLoader for reprogramming a stage (update a stage on the f=
ly).

=2D Partial event processing to increase responsiveness when we stop a stag=
e.


Big feature:

=2D Be able to deploy Sandstorm on a cluster of workstations with load-bala=
ncing=20
and fault-tolerance capability.  This should be another sub-project on top =
of=20
Sandstorm to keep Sandstorm lightweight and easy to use.  So, only users th=
at=20
really need this functionnality will use this sub-project.


Cheers,
=2DJean



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click