Monday, January 29, 2007

Proxy support in Evolution

One of the key features that is expected out of any application that communicates over a network is talking over a proxy connection. Evolution has been lacking this feature for quite some time and I implemented a quick support around SLED10 release with a limitation that "Authenticated Proxy" configurations are not supported. Now, its time to do something about it and I came up with something called a Network Preferences option in Evolution that looks similar to that of gnome-network-preferences capplet. I had to take this approach as a lot of Evolution-KDE users complained proxy not working as the respective gconf entries were missing.

Following is the screenshot of the Network preferences window in Evolution:

It uses libsoup for resolving hostnames and other SOCKADDR related processing.

Saturday, January 06, 2007

Evolution Exchange Performance Series - Chapter 2 - Public Folder Loading

Around a month back started working on issues surrounding Exchange Public folders from subscribing to accessing/using them. A tracker bug was already present in BGO and the most famous among them are 268412, 347811 and 346728. As I just took over the responsibility of Evolution Exchange connector around August 2006 and then had a month-long sick leave because of Chikungunya, it was a slow start for me - reading through code, docs, MS articles, webDAV references etc. After a week of analysis, found out the issue in Setting up folder hierarchies - which is done during the startup and it goes into a recursive loop setting up hierarchies for all folders, including public folders. When an organization has quite a lot of nested-public-folders, Evolution will take a minimum of 30 mins to start.

The complete fix was done in two-phases.
Phase-1:
--------
Do not scan public-folders recursively during startup.
Phase-2:
--------
Load folders on demand. This enabled us to achieve the maximum performance during subscribing to Public folders.
Any performance work needs to provide supporting data and here it is: (My test server has close to 250 public folders with a maximum depth of 21 subfolders)
S.NoDescription of Test/taskPatch
(Sec)
<=2.9.4
(Sec)
1Configure an exchange account
Restart Evolution
765
2Folder->Subscriptions
Selectthe configured Exchange account
Note time taken to show the“All Public Folders”
34
3Expand “All PublicFolders”
Note time taken to display folder list
< 1 168
4Time taken totraverse to maximum depth folder8330

Memory consumption:
Before expanding a folder (in the folder->subscriptions dialog)

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory152.8154.6
RSS13.415.1
Shared9.1 9.2

After expanding a folder:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory152.8201.6
RSS13.462
Shared9.1 9.2

Actual memory consumption:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory047
RSS046.9
Shared0 0

Note: Memory consumption data is taken using gnome-system-monitor and thus difference in Bytes are not shown above. Columns showing 0 would definitely have a difference at least in bytes.
Memory consumption to traverse to the maximum depth folder:

Patch
(MB)
<=2.9.4
(MB)
Virtual Memory152.8246.9
RSS13.4107.4
Shared9.1 9.2

The fix also improved the overall folder loading performance.