[sip-comm-dev] Now using Felix 1.4.0


#1

Hey folks,

Just wanted to let you all know that we are now using Felix 1.4.0 to run
SIP Communicator. This should give us better performance and lower
memory consumption although we don't currently have the exact numbers. I
believe Lubo would probably give us something more specific on this
later on so stay tuned.

I want to thank Richard Hall (the founder of Felix), for his help during
the migration. He actually did most of the debugging and problem solving
so all kudos go to him! Thanks Richard!

(ack-ed on team and contributors)

Cheers
Emil

···

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#2

No problem. I'm just glad to have you on 1.4.0!

-> richard

Emil Ivov wrote:

···

Hey folks,

Just wanted to let you all know that we are now using Felix 1.4.0 to run
SIP Communicator. This should give us better performance and lower
memory consumption although we don't currently have the exact numbers. I
believe Lubo would probably give us something more specific on this
later on so stay tuned.

I want to thank Richard Hall (the founder of Felix), for his help during
the migration. He actually did most of the debugging and problem solving
so all kudos go to him! Thanks Richard!

(ack-ed on team and contributors)

Cheers
Emil

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#3

Werner Dittmann wrote:

During my test it seems to start much faster while loading
the bundles. A much reduced startup time.

Good to hear.

In a future version of Felix, we will look into caching the wiring among bundles so it can be reloaded, not recalculated on subsequent restarts, so that might help a little bit more too.

-> richard

···

Regards,
Werner

Emil Ivov schrieb:

Hey folks,

Just wanted to let you all know that we are now using Felix 1.4.0 to run
SIP Communicator. This should give us better performance and lower
memory consumption although we don't currently have the exact numbers. I
believe Lubo would probably give us something more specific on this
later on so stay tuned.

I want to thank Richard Hall (the founder of Felix), for his help during
the migration. He actually did most of the debugging and problem solving
so all kudos go to him! Thanks Richard!

(ack-ed on team and contributors)

Cheers
Emil

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#4

During my test it seems to start much faster while loading
the bundles. A much reduced startup time.

Regards,
Werner

Emil Ivov schrieb:

···

Hey folks,

Just wanted to let you all know that we are now using Felix 1.4.0 to run
SIP Communicator. This should give us better performance and lower
memory consumption although we don't currently have the exact numbers. I
believe Lubo would probably give us something more specific on this
later on so stay tuned.

I want to thank Richard Hall (the founder of Felix), for his help during
the migration. He actually did most of the debugging and problem solving
so all kudos go to him! Thanks Richard!

(ack-ed on team and contributors)

Cheers
Emil

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#5

Disclaimer: The opinion expressed below is strictly personal. The
described tests and the obtained results, as well as the conclusions
drawn from them, don't imply thoroughness, accuracy. I'm sharing them
because Emil asked me to take a look and then mentioned on this
mailing list I might be providing my observations. Otherwise, I
wouldn't dare bother everyone.

Without taking any measurements and just running r4859, I thought the
startup time was noticeably shortened. In a chat conversation, Emil
told me he felt the same way about it. Then the messages in this
thread confirmed this positive gain. I find such an improvement worthy
because it's obvious to the naked eye and it doesn't need profiling to
be assessed. I'd like to thank Richard Hall and the Felix community
for the excellent development, repeat Emil's gratitude to Richard for
his help with the update and thank Emil for taking the decision to go
with the update in the first place and for steering it to its
successful completion.

I compared r4858 and r4859 when starting SIP Communicator with no
accounts, waiting for the meebo.com-like "Sign in" dialog to appear
and for the capture device detection to complete (noticeable by the
flashing of the Apple iSight camera light and the debug output of the
media service in Command Prompt). With respect to memory consumption,
I'd say there's no difference. Execution speed, as stated above, is
noticeably better.

I ran my tests on 32-bit Windows Vista 6.0.6001, Java 1.6.0_11-b03,
MacBook with Intel Core 2 Duo CPU T8300 @ 2.40 GHz, 4GB RAM, FUJITSU
MHY2250BH ATA 232.88GB disk drive.

I ran each test 5 times on each of r4858 and r4859 in the manner
r4858, r4859, r4858, r4859, etc. Then I compared the results from the
5 runs on r4858 to make sure they were "equal" i.e. had no major
differences. And I did the same for r4859. Once I thought the samples
weren't flawed, I compared the ones obtained from r4858 with the r4859
ones to draw my conclusions.

1. Live heap

At an average of 5.5MBytes for r4858, r4859 seems to reproducibly
require roughly 90Kbytes more. Part of it is traceable to Felix
.manifestparser but I couldn't really figure out whether it wasn't
because the SC manifests got modified in the same revision as the
Felix update.

Starting the application with previous state (i.e. %APPDATA%\SIP
Communicator exists) seems to retain an average of 100KBytes more than
starting it with no previous state. Felix doesn't seem to be the one
to blame here because most of this memory is in
net.java.sip.communicator.* packages (e.g. the configuration service
with its XML nature is the primary suspect).

Tools: jmap to dump the heap in HPROF format, YourKit Java Profiler
and jvisualvm/NetBeans Profiler to browse the dumps

2. Memory usage telemetry

Allocations (i.e. live and garbage-collected heap) in the above two
tests repeat the results of "1. Live heap" (with an average of almost
1MByte in collected objects added, of course).

The garbage collector seems to be running at the same levels while not
causing heap growth. Felix is still causing an average of 17 minor
collections per second at the very beginning of the application and
the device detection is still the next in line with an average of 7
minor collections.

Not worsening dramatically isn't surprising given the awesome speed up
but at the very least we know we've gained a lot by paying nothing in
practice.

Tools: YourKit Java Profiler and NetBeans Profiler

3. System.currentTimeMillis()

In r4858 the application is ready to display the meebo.com-like "Sign
in" dialog (which is displayed after the MainFrame in most of the
cases) in an average of 5029.4 milliseconds after entering its main().
r4959 does it in an average of 2397.4 milliseconds.

When starting from existing state, r4858 takes 4788.2 milliseconds on
average and r4859 takes only 2204.

4. CPU usage telemetry

The r4858 and r4859 profiles show quite some differences in
org.apache.felix.* packages. If I have to single out an improvement
which noticeably affects the startup time for SIP Communicator and
accounts for a fair chunk of the spared time, I'd go with the class
loading in general (i.e. both classes and resources which we're heavy
on). A very rough estimate of the gains there is that its almost twice
as fast in r4859 in comparison to r4858. The .searchpolicy and
.util.manifest packages seem to be involved there and gains in them
contribute to the mentioned speed up.

Tools: YourKit Java Profiler and NetBeans Profiler

Best regards,
Lubo

···

On Tue, Dec 16, 2008 at 8:01 PM, Emil Ivov <emcho@sip-communicator.org> wrote:

Hey folks,

Just wanted to let you all know that we are now using Felix 1.4.0 to run
SIP Communicator. This should give us better performance and lower
memory consumption although we don't currently have the exact numbers. I
believe Lubo would probably give us something more specific on this
later on so stay tuned.

I want to thank Richard Hall (the founder of Felix), for his help during
the migration. He actually did most of the debugging and problem solving
so all kudos go to him! Thanks Richard!

(ack-ed on team and contributors)

Cheers
Emil

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#6

Well, make sure everything is working correctly, we don't want to get too big of a head unless we know there are no regressions! :wink:

Excellent news if it holds to be true. I cannot remember which version of Felix you were using, so it is hard to say what is actually causing the improvement, but I guess we should not look a gift horse in the mouth!

I will forward this message to the dev@felix list...

-> richard

Lubomir Marinov wrote:

···

Disclaimer: The opinion expressed below is strictly personal. The
described tests and the obtained results, as well as the conclusions
drawn from them, don't imply thoroughness, accuracy. I'm sharing them
because Emil asked me to take a look and then mentioned on this
mailing list I might be providing my observations. Otherwise, I
wouldn't dare bother everyone.

Without taking any measurements and just running r4859, I thought the
startup time was noticeably shortened. In a chat conversation, Emil
told me he felt the same way about it. Then the messages in this
thread confirmed this positive gain. I find such an improvement worthy
because it's obvious to the naked eye and it doesn't need profiling to
be assessed. I'd like to thank Richard Hall and the Felix community
for the excellent development, repeat Emil's gratitude to Richard for
his help with the update and thank Emil for taking the decision to go
with the update in the first place and for steering it to its
successful completion.

I compared r4858 and r4859 when starting SIP Communicator with no
accounts, waiting for the meebo.com-like "Sign in" dialog to appear
and for the capture device detection to complete (noticeable by the
flashing of the Apple iSight camera light and the debug output of the
media service in Command Prompt). With respect to memory consumption,
I'd say there's no difference. Execution speed, as stated above, is
noticeably better.

I ran my tests on 32-bit Windows Vista 6.0.6001, Java 1.6.0_11-b03,
MacBook with Intel Core 2 Duo CPU T8300 @ 2.40 GHz, 4GB RAM, FUJITSU
MHY2250BH ATA 232.88GB disk drive.

I ran each test 5 times on each of r4858 and r4859 in the manner
r4858, r4859, r4858, r4859, etc. Then I compared the results from the
5 runs on r4858 to make sure they were "equal" i.e. had no major
differences. And I did the same for r4859. Once I thought the samples
weren't flawed, I compared the ones obtained from r4858 with the r4859
ones to draw my conclusions.

1. Live heap

At an average of 5.5MBytes for r4858, r4859 seems to reproducibly
require roughly 90Kbytes more. Part of it is traceable to Felix
.manifestparser but I couldn't really figure out whether it wasn't
because the SC manifests got modified in the same revision as the
Felix update.

Starting the application with previous state (i.e. %APPDATA%\SIP
Communicator exists) seems to retain an average of 100KBytes more than
starting it with no previous state. Felix doesn't seem to be the one
to blame here because most of this memory is in
net.java.sip.communicator.* packages (e.g. the configuration service
with its XML nature is the primary suspect).

Tools: jmap to dump the heap in HPROF format, YourKit Java Profiler
and jvisualvm/NetBeans Profiler to browse the dumps

2. Memory usage telemetry

Allocations (i.e. live and garbage-collected heap) in the above two
tests repeat the results of "1. Live heap" (with an average of almost
1MByte in collected objects added, of course).

The garbage collector seems to be running at the same levels while not
causing heap growth. Felix is still causing an average of 17 minor
collections per second at the very beginning of the application and
the device detection is still the next in line with an average of 7
minor collections.

Not worsening dramatically isn't surprising given the awesome speed up
but at the very least we know we've gained a lot by paying nothing in
practice.

Tools: YourKit Java Profiler and NetBeans Profiler

3. System.currentTimeMillis()

In r4858 the application is ready to display the meebo.com-like "Sign
in" dialog (which is displayed after the MainFrame in most of the
cases) in an average of 5029.4 milliseconds after entering its main().
r4959 does it in an average of 2397.4 milliseconds.

When starting from existing state, r4858 takes 4788.2 milliseconds on
average and r4859 takes only 2204.

4. CPU usage telemetry

The r4858 and r4859 profiles show quite some differences in
org.apache.felix.* packages. If I have to single out an improvement
which noticeably affects the startup time for SIP Communicator and
accounts for a fair chunk of the spared time, I'd go with the class
loading in general (i.e. both classes and resources which we're heavy
on). A very rough estimate of the gains there is that its almost twice
as fast in r4859 in comparison to r4858. The .searchpolicy and
.util.manifest packages seem to be involved there and gains in them
contribute to the mentioned speed up.

Tools: YourKit Java Profiler and NetBeans Profiler

Best regards,
Lubo

On Tue, Dec 16, 2008 at 8:01 PM, Emil Ivov <emcho@sip-communicator.org> wrote:
  

Hey folks,

Just wanted to let you all know that we are now using Felix 1.4.0 to run
SIP Communicator. This should give us better performance and lower
memory consumption although we don't currently have the exact numbers. I
believe Lubo would probably give us something more specific on this
later on so stay tuned.

I want to thank Richard Hall (the founder of Felix), for his help during
the migration. He actually did most of the debugging and problem solving
so all kudos go to him! Thanks Richard!

(ack-ed on team and contributors)

Cheers
Emil

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net
    
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net