You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by "Karthick Sankarachary (JIRA)" <ji...@apache.org> on 2009/04/03 22:17:12 UTC

[jira] Created: (ODE-573) Reuse And Reduce Process Resources

Reuse And Reduce Process Resources
----------------------------------

                 Key: ODE-573
                 URL: https://issues.apache.org/jira/browse/ODE-573
             Project: ODE
          Issue Type: Improvement
          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
    Affects Versions: 1.2
            Reporter: Karthick Sankarachary
            Assignee: Karthick Sankarachary
             Fix For: 1.3


This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:

a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.

In the following comment, we will describe a solution for (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (ODE-573) Reuse And Reduce Process Memory

Posted by "Karthick Sankarachary (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karthick Sankarachary resolved ODE-573.
---------------------------------------

    Resolution: Fixed

This issue is being closed so that it can be release noted against 1.3.1.

> Reuse And Reduce Process Memory
> -------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3.1
>
>         Attachments: interning-mechanism-for-processes.patch
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (ODE-573) Reuse And Reduce Process Memory

Posted by "Ciaran Jessup (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12698957#action_12698957 ] 

Ciaran Jessup commented on ODE-573:
-----------------------------------

This patch looks excellent, my profiler had flagged up the NSContext instances, but I hadn't been particularly bothered by them as they were available for GC, and for me at least they didn't take up much space, but it will definately help, I'll test it ASAP ;) 

> Reuse And Reduce Process Memory
> -------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3
>
>         Attachments: interning-mechanism-for-processes.patch
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (ODE-573) Reuse And Reduce Process Memory

Posted by "Karthick Sankarachary (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karthick Sankarachary closed ODE-573.
-------------------------------------


> Reuse And Reduce Process Memory
> -------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3.1
>
>         Attachments: interning-mechanism-for-processes.patch
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (ODE-573) Reuse And Reduce Process Memory

Posted by "Karthick Sankarachary (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12698954#action_12698954 ] 

Karthick Sankarachary commented on ODE-573:
-------------------------------------------

There are a number of immutable objects in the process model, which get instantiated over and over even if they are essentially identical. 

To detect and eliminate duplication of immutable objects that are equivalent, we introduce a pool that simulates Java's interning mechanism. For a given key, this pool keeps track of all the unique values associated with that key. By way of example, let us say that one of the keys denotes the namespace URI of XML nodes. By keeping track of all such URIs, one could replace all occurrences of a given URI value with the corresponding intern'ed value, thereby reducing overall memory usage.

A patch that implements the solution described here has been committed at revision 764966. The interning mechanism may be used anywhere immutable objects are being referenced and known to be duplicated.

> Reuse And Reduce Process Memory
> -------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3
>
>         Attachments: interning-mechanism-for-processes.patch
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (ODE-573) Reuse And Reduce Process Memory

Posted by "Karthick Sankarachary (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karthick Sankarachary updated ODE-573:
--------------------------------------

    Attachment: interning-mechanism-for-processes.patch

> Reuse And Reduce Process Memory
> -------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3
>
>         Attachments: interning-mechanism-for-processes.patch
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (ODE-573) Reuse And Reduce Process Memory

Posted by "Karthick Sankarachary (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karthick Sankarachary updated ODE-573:
--------------------------------------

    Summary: Reuse And Reduce Process Memory  (was: Reuse And Reduce Process Resources)

> Reuse And Reduce Process Memory
> -------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (ODE-573) Reuse And Reduce Process Resources

Posted by "Karthick Sankarachary (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/ODE-573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Karthick Sankarachary updated ODE-573:
--------------------------------------

    Description: 
This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:

a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.

In the following comment, we will describe a solution based on approach (a).

  was:
This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:

a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.

In the following comment, we will describe a solution for (a).


> Reuse And Reduce Process Resources
> ----------------------------------
>
>                 Key: ODE-573
>                 URL: https://issues.apache.org/jira/browse/ODE-573
>             Project: ODE
>          Issue Type: Improvement
>          Components: Axis2 Integration, BPEL Compilation/Parsing, BPEL Runtime
>    Affects Versions: 1.2
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>             Fix For: 1.3
>
>
> This is a meta issue to track all solutions geared towards reducing the footprint of processes. Up until now, memory optimization of processes has been an afterthought, and that calls for a change. There are a number of ways in which we can reduce the in-memory size of processes, including but not limited, to the following:
> a) Employ a flyweight pattern to share identical resources within the process model. This is analogous to the approach taken by string interning, only we want to it to be more generic.
> b) Refactor one or more parts of the process model in terms of a leaner and meaner data structure. Since this may result in a structural change in the serialized bytes of the process, care should be taken to maintain backwards compatibility.
> c) Reuse shared resources across different process models. This involves determining whether or not a resource is shareable, and if so, storing them in a system-wide cache. A reference counting mechanism may be used to manage the lifecycle of the cache.
> In the following comment, we will describe a solution based on approach (a).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.