Check out the new USENIX Web site. next up previous
Next: Discussion. Up: Agent Morphing Previous: Morphing Concepts.

Application of Morphing to Sample Applications.

Sample morphable agents have been constructed with Java, where specialized (morphed) versions of these agents are also available as native code for SUN Sparc/Solaris machines. The performance benefits of agent morphing have already been presented in tables  1 and  2, when applied to the Isosurface and Azimuth transform agents. In these particular examples, morphing overheads only come from native library loading and minimal application state translating and copying and are thus almost negligible. However, we expect such overheads to be higher when a code repository server is involved and/or when the amount of shared data is significant and morphing is applied more frequently. These agent realizations utilize the adaptors described in this section, using internally generated events. We manually program adaptors in our sample applications, but we believe that such adaptors can be readily generated by a compiler from IDL files.

The conditions under which morphing is applied are straightforward. In each example, when the amount of data being processed by agents increase (e.g., the ISDA application's visualization wishes to view more data or the PSSPS application's image resolution is increased), then the agent implementations of these transformers do not deliver suitable performance. This fact is detected by inspection of internal data buffer fill levelsgif. To speed up data processing, the agent first acquires its native representation, then invokes an application-provided state-checkpointing method (if such a method was defined by the user), then transforms its state using the function set provided either by the system or the application programmer, and finally, initiates execution of its native form from a fixed entry point.



Dong Zhou
Wed Mar 24 00:41:22 EST 1999