You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Drone42 <ge...@logica.com> on 2008/10/24 17:53:14 UTC

Performance Optimization through Collocation

I'm new to JBI and ServiceMIx, but looking into it with great interest...
however performance is an issue in the system I'm architecting and looking
around the net I see that ServiceMix is fast, but not ammazingly fast.

Typical deployments of the system I develop will contain choices on which
components to group together on the same node, to improve performance and
tradeoff with resource usage.

Other middlewares, such as CORBA, provides performance optimizations by
detecting collocations (i.e. that a consumer and a provider is running in
the same component server / process). In this case the midleware will
automatically replace any remote calls with a direct call, thereby removing
the overhead of writing to and reading from the transport.

Why doesn't ServiceSix do the same? I see that JBI even directly mention
that two component instances will always run in separate processes. Why
force this?

I know; I can write a wrapper of the ServiceMix API myself and handle it.
But I was thinking that there must be an excellent reason why this is not
already done... or?
-- 
View this message in context: http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20152693.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: Performance Optimization through Collocation

Posted by Guillaume Nodet <gn...@gmail.com>.
I don't have any figures for that, because usually the overhead is
very low compared to the cost of actually processing the exchanges.

On Mon, Oct 27, 2008 at 11:23 AM, Drone42 <ge...@logica.com> wrote:
>
> Excellent. Glad to see that this was a mis conception on my side.
>
> I have seen different performance figures on ServiceMix, but all related to
> HTTP proxies. Do you know of any performance measurements for collocated
> service units running within the same container?
>
>
>
>
> gnodet wrote:
>>
>> Right.  There are a single process and multiple threads.
>>
>> On Mon, Oct 27, 2008 at 10:41 AM, Drone42 <ge...@logica.com>
>> wrote:
>>>
>>> Thanks for the reply.
>>>
>>> Thats what I mean with collocation; if running in the same container,
>>> then
>>> exchange should be direct and therefore very fast.
>>>
>>> The JBI standard says 'Note also that this processing is inherently
>>> asynchronous; provider and consumer never share a thread. This also helps
>>> keep components decoupled.' (page 6)
>>>
>>> But of cause this doesnt mean they cant share a process. I guess that
>>> then
>>> only thread switch is needed if running in the same container.
>>>
>>>
>>>
>>>
>>>
>>> gnodet wrote:
>>>>
>>>> Not sure where you read such things about two component instances
>>>> running in different processes.  ServiceMix uses only one process and
>>>> the JBI makes no mention of processes, I guess you misunderstood
>>>> something here.
>>>> Not sure also where you grab your performance figures.
>>>>
>>>> Performances really depends on your use case: if you put two services
>>>> in the bus on the same ServiceMix container, inter-component
>>>> invocation will be amazingly fast (it's just about passing an object
>>>> from one component to the other without any serialization or such).
>>>> If one service invokes the other one by mean of HTTP or JMS or any
>>>> other protocol, the performances will surely drop by a big amount of
>>>> course.
>>>> So unless your services are deployed on two different containers, they
>>>> should use in-VM communication, so it will be fast enough.
>>>>
>>>> On Fri, Oct 24, 2008 at 5:53 PM, Drone42 <ge...@logica.com>
>>>> wrote:
>>>>>
>>>>> I'm new to JBI and ServiceMIx, but looking into it with great
>>>>> interest...
>>>>> however performance is an issue in the system I'm architecting and
>>>>> looking
>>>>> around the net I see that ServiceMix is fast, but not ammazingly fast.
>>>>>
>>>>> Typical deployments of the system I develop will contain choices on
>>>>> which
>>>>> components to group together on the same node, to improve performance
>>>>> and
>>>>> tradeoff with resource usage.
>>>>>
>>>>> Other middlewares, such as CORBA, provides performance optimizations by
>>>>> detecting collocations (i.e. that a consumer and a provider is running
>>>>> in
>>>>> the same component server / process). In this case the midleware will
>>>>> automatically replace any remote calls with a direct call, thereby
>>>>> removing
>>>>> the overhead of writing to and reading from the transport.
>>>>>
>>>>> Why doesn't ServiceSix do the same? I see that JBI even directly
>>>>> mention
>>>>> that two component instances will always run in separate processes. Why
>>>>> force this?
>>>>>
>>>>> I know; I can write a wrapper of the ServiceMix API myself and handle
>>>>> it.
>>>>> But I was thinking that there must be an excellent reason why this is
>>>>> not
>>>>> already done... or?
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20152693.html
>>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Cheers,
>>>> Guillaume Nodet
>>>> ------------------------
>>>> Blog: http://gnodet.blogspot.com/
>>>> ------------------------
>>>> Open Source SOA
>>>> http://fusesource.com
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20184426.html
>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Cheers,
>> Guillaume Nodet
>> ------------------------
>> Blog: http://gnodet.blogspot.com/
>> ------------------------
>> Open Source SOA
>> http://fusesource.com
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20184962.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Re: Performance Optimization through Collocation

Posted by Drone42 <ge...@logica.com>.
Excellent. Glad to see that this was a mis conception on my side.

I have seen different performance figures on ServiceMix, but all related to
HTTP proxies. Do you know of any performance measurements for collocated
service units running within the same container?




gnodet wrote:
> 
> Right.  There are a single process and multiple threads.
> 
> On Mon, Oct 27, 2008 at 10:41 AM, Drone42 <ge...@logica.com>
> wrote:
>>
>> Thanks for the reply.
>>
>> Thats what I mean with collocation; if running in the same container,
>> then
>> exchange should be direct and therefore very fast.
>>
>> The JBI standard says 'Note also that this processing is inherently
>> asynchronous; provider and consumer never share a thread. This also helps
>> keep components decoupled.' (page 6)
>>
>> But of cause this doesnt mean they cant share a process. I guess that
>> then
>> only thread switch is needed if running in the same container.
>>
>>
>>
>>
>>
>> gnodet wrote:
>>>
>>> Not sure where you read such things about two component instances
>>> running in different processes.  ServiceMix uses only one process and
>>> the JBI makes no mention of processes, I guess you misunderstood
>>> something here.
>>> Not sure also where you grab your performance figures.
>>>
>>> Performances really depends on your use case: if you put two services
>>> in the bus on the same ServiceMix container, inter-component
>>> invocation will be amazingly fast (it's just about passing an object
>>> from one component to the other without any serialization or such).
>>> If one service invokes the other one by mean of HTTP or JMS or any
>>> other protocol, the performances will surely drop by a big amount of
>>> course.
>>> So unless your services are deployed on two different containers, they
>>> should use in-VM communication, so it will be fast enough.
>>>
>>> On Fri, Oct 24, 2008 at 5:53 PM, Drone42 <ge...@logica.com>
>>> wrote:
>>>>
>>>> I'm new to JBI and ServiceMIx, but looking into it with great
>>>> interest...
>>>> however performance is an issue in the system I'm architecting and
>>>> looking
>>>> around the net I see that ServiceMix is fast, but not ammazingly fast.
>>>>
>>>> Typical deployments of the system I develop will contain choices on
>>>> which
>>>> components to group together on the same node, to improve performance
>>>> and
>>>> tradeoff with resource usage.
>>>>
>>>> Other middlewares, such as CORBA, provides performance optimizations by
>>>> detecting collocations (i.e. that a consumer and a provider is running
>>>> in
>>>> the same component server / process). In this case the midleware will
>>>> automatically replace any remote calls with a direct call, thereby
>>>> removing
>>>> the overhead of writing to and reading from the transport.
>>>>
>>>> Why doesn't ServiceSix do the same? I see that JBI even directly
>>>> mention
>>>> that two component instances will always run in separate processes. Why
>>>> force this?
>>>>
>>>> I know; I can write a wrapper of the ServiceMix API myself and handle
>>>> it.
>>>> But I was thinking that there must be an excellent reason why this is
>>>> not
>>>> already done... or?
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20152693.html
>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Cheers,
>>> Guillaume Nodet
>>> ------------------------
>>> Blog: http://gnodet.blogspot.com/
>>> ------------------------
>>> Open Source SOA
>>> http://fusesource.com
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20184426.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
> 
> 

-- 
View this message in context: http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20184962.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: Performance Optimization through Collocation

Posted by Guillaume Nodet <gn...@gmail.com>.
Right.  There are a single process and multiple threads.

On Mon, Oct 27, 2008 at 10:41 AM, Drone42 <ge...@logica.com> wrote:
>
> Thanks for the reply.
>
> Thats what I mean with collocation; if running in the same container, then
> exchange should be direct and therefore very fast.
>
> The JBI standard says 'Note also that this processing is inherently
> asynchronous; provider and consumer never share a thread. This also helps
> keep components decoupled.' (page 6)
>
> But of cause this doesnt mean they cant share a process. I guess that then
> only thread switch is needed if running in the same container.
>
>
>
>
>
> gnodet wrote:
>>
>> Not sure where you read such things about two component instances
>> running in different processes.  ServiceMix uses only one process and
>> the JBI makes no mention of processes, I guess you misunderstood
>> something here.
>> Not sure also where you grab your performance figures.
>>
>> Performances really depends on your use case: if you put two services
>> in the bus on the same ServiceMix container, inter-component
>> invocation will be amazingly fast (it's just about passing an object
>> from one component to the other without any serialization or such).
>> If one service invokes the other one by mean of HTTP or JMS or any
>> other protocol, the performances will surely drop by a big amount of
>> course.
>> So unless your services are deployed on two different containers, they
>> should use in-VM communication, so it will be fast enough.
>>
>> On Fri, Oct 24, 2008 at 5:53 PM, Drone42 <ge...@logica.com> wrote:
>>>
>>> I'm new to JBI and ServiceMIx, but looking into it with great interest...
>>> however performance is an issue in the system I'm architecting and
>>> looking
>>> around the net I see that ServiceMix is fast, but not ammazingly fast.
>>>
>>> Typical deployments of the system I develop will contain choices on which
>>> components to group together on the same node, to improve performance and
>>> tradeoff with resource usage.
>>>
>>> Other middlewares, such as CORBA, provides performance optimizations by
>>> detecting collocations (i.e. that a consumer and a provider is running in
>>> the same component server / process). In this case the midleware will
>>> automatically replace any remote calls with a direct call, thereby
>>> removing
>>> the overhead of writing to and reading from the transport.
>>>
>>> Why doesn't ServiceSix do the same? I see that JBI even directly mention
>>> that two component instances will always run in separate processes. Why
>>> force this?
>>>
>>> I know; I can write a wrapper of the ServiceMix API myself and handle it.
>>> But I was thinking that there must be an excellent reason why this is not
>>> already done... or?
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20152693.html
>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>>
>> --
>> Cheers,
>> Guillaume Nodet
>> ------------------------
>> Blog: http://gnodet.blogspot.com/
>> ------------------------
>> Open Source SOA
>> http://fusesource.com
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20184426.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com

Re: Performance Optimization through Collocation

Posted by Drone42 <ge...@logica.com>.
Thanks for the reply.

Thats what I mean with collocation; if running in the same container, then
exchange should be direct and therefore very fast.

The JBI standard says 'Note also that this processing is inherently
asynchronous; provider and consumer never share a thread. This also helps
keep components decoupled.' (page 6)

But of cause this doesnt mean they cant share a process. I guess that then
only thread switch is needed if running in the same container.





gnodet wrote:
> 
> Not sure where you read such things about two component instances
> running in different processes.  ServiceMix uses only one process and
> the JBI makes no mention of processes, I guess you misunderstood
> something here.
> Not sure also where you grab your performance figures.
> 
> Performances really depends on your use case: if you put two services
> in the bus on the same ServiceMix container, inter-component
> invocation will be amazingly fast (it's just about passing an object
> from one component to the other without any serialization or such).
> If one service invokes the other one by mean of HTTP or JMS or any
> other protocol, the performances will surely drop by a big amount of
> course.
> So unless your services are deployed on two different containers, they
> should use in-VM communication, so it will be fast enough.
> 
> On Fri, Oct 24, 2008 at 5:53 PM, Drone42 <ge...@logica.com> wrote:
>>
>> I'm new to JBI and ServiceMIx, but looking into it with great interest...
>> however performance is an issue in the system I'm architecting and
>> looking
>> around the net I see that ServiceMix is fast, but not ammazingly fast.
>>
>> Typical deployments of the system I develop will contain choices on which
>> components to group together on the same node, to improve performance and
>> tradeoff with resource usage.
>>
>> Other middlewares, such as CORBA, provides performance optimizations by
>> detecting collocations (i.e. that a consumer and a provider is running in
>> the same component server / process). In this case the midleware will
>> automatically replace any remote calls with a direct call, thereby
>> removing
>> the overhead of writing to and reading from the transport.
>>
>> Why doesn't ServiceSix do the same? I see that JBI even directly mention
>> that two component instances will always run in separate processes. Why
>> force this?
>>
>> I know; I can write a wrapper of the ServiceMix API myself and handle it.
>> But I was thinking that there must be an excellent reason why this is not
>> already done... or?
>> --
>> View this message in context:
>> http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20152693.html
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> 
> -- 
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
> ------------------------
> Open Source SOA
> http://fusesource.com
> 
> 

-- 
View this message in context: http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20184426.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: Performance Optimization through Collocation

Posted by Guillaume Nodet <gn...@gmail.com>.
Not sure where you read such things about two component instances
running in different processes.  ServiceMix uses only one process and
the JBI makes no mention of processes, I guess you misunderstood
something here.
Not sure also where you grab your performance figures.

Performances really depends on your use case: if you put two services
in the bus on the same ServiceMix container, inter-component
invocation will be amazingly fast (it's just about passing an object
from one component to the other without any serialization or such).
If one service invokes the other one by mean of HTTP or JMS or any
other protocol, the performances will surely drop by a big amount of
course.
So unless your services are deployed on two different containers, they
should use in-VM communication, so it will be fast enough.

On Fri, Oct 24, 2008 at 5:53 PM, Drone42 <ge...@logica.com> wrote:
>
> I'm new to JBI and ServiceMIx, but looking into it with great interest...
> however performance is an issue in the system I'm architecting and looking
> around the net I see that ServiceMix is fast, but not ammazingly fast.
>
> Typical deployments of the system I develop will contain choices on which
> components to group together on the same node, to improve performance and
> tradeoff with resource usage.
>
> Other middlewares, such as CORBA, provides performance optimizations by
> detecting collocations (i.e. that a consumer and a provider is running in
> the same component server / process). In this case the midleware will
> automatically replace any remote calls with a direct call, thereby removing
> the overhead of writing to and reading from the transport.
>
> Why doesn't ServiceSix do the same? I see that JBI even directly mention
> that two component instances will always run in separate processes. Why
> force this?
>
> I know; I can write a wrapper of the ServiceMix API myself and handle it.
> But I was thinking that there must be an excellent reason why this is not
> already done... or?
> --
> View this message in context: http://www.nabble.com/Performance-Optimization-through-Collocation-tp20152693p20152693.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>



-- 
Cheers,
Guillaume Nodet
------------------------
Blog: http://gnodet.blogspot.com/
------------------------
Open Source SOA
http://fusesource.com