Haven't looked at it closely yet but it sounds good so far. However I don't
think it has anything to do with lifecycle management and thus should
probably go into excalibur (much like Recyclable/Poolable is in
excalibur).
Just a few questions.
* Does it allow for push and pull?
ie can the component to push the profile data regardless of whether anyone is
listeneing. Can the Profiler actually pull a sample out any time it wants?
* Most things I know about would have components with multiple points. Is
this supported? Also sometimes points are aggregations of other points - is
this supported ? Something that may be useful would be to do something like
//second parameter is the factor that the child point contribts to this point
myProfilePoint.getChildPoint( "some-string-designation", 0.01f );
In this way you could support hierarchies of points
* kinda related to above but is there a way for the container to associate
"context" information with a point. ie a Point may say it is measuring
variable X but the container may prepend this with
"myContainer.myComponentName."
On Thu, 13 Dec 2001 02:26, Berin Loritsch wrote:
> I added a couple of interfaces in the Framework proposal directory that I
> think could be good for debugging and performance monitoring a running
> system.
>
> The new folder is ${framework}/src/proposal/profile
>
> The two new interfaces are Profiler and Profilable. The concept (lifted
> from SEDA) is that all profiling points are integers. For instance the
> types of samples that are taken in a profiling tool are number calls on
> methods (integer results determining coverage), number of milliseconds each
> method takes (integer results determining hotspots), etc.
>
> While it is impractical to determine the traditional Profiling points in a
> running system without modifying the JVM or proxying _everything_, there
> are a number of other profiling points that truly make sense. For
> instance, Number of Active Threads in a Pool, Max Poolable items, Items
> processed per sample, etc.
>
> The concept is simple, and observes IoC in the following manner:
>
> 1) The Profiler is designed to live inside the Container. It is the
> Container's job to register the Profilable elements with the Profiler. The
> Profiler is in control of how often samples are taken, and how the
> information is serialized to the destination file. It is the Container's
> responsibility to determine where that file should be located.
>
> 2) The Profilable objects are designed to return very simple profiling
> points.
>
>
> Possible Issues:
>
> 1) An Component may want to expose multiple profiling points. In this
> case, the profiler would have to be passed to the object that registers
> specialized Profilable objects. We would need a third interface to pass
> the Profiler to the Components.
>
> 2) We might decide that it is a configurable item for the destination of
> the profiling results, so the serialize(File) method might be removed.
>
> 3) We might not want to expose the isRunning() method to all the Components
> in this case.
>
> Purposeful Design Constraints
>
> 1) Profilable only provides a simple integer sample.
>
> 2) The existance of the Profiler must be optional.
>
> 3) The Profiler must be able to be added and removed from a system without
> restarting it.
>
> 4) The Profiling should be done asynchronously so as not to interfere with
> the critical path. That is why the Profiler polls the Profilable
> objects instead of the Profilable objects posting changes.
>
> Let me know what you think.
>
> I believe that Profilable is a core concern area since we want to enable
> the exposing of the internal state in a controlled manner. We want to be
> able to profile object state so we know where excessive work is being
> performed. I also think that a useful Profiler would be better created in
> Excalibur, so there is a dicotomy. The interface should be in Framework so
> that people know how to design their containers to work with a Profiler.
--
Cheers,
Pete
*------------------------------------------------------*
| Despite your efforts to be a romantic hero, you will |
| gradually evolve into a postmodern plot device. |
*------------------------------------------------------*
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>