You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Emmanuel Lecharny <el...@apache.org> on 2008/04/30 13:24:14 UTC

[ServerEntry] Next step

Hi guys,

I have finished to modify the code to get the ServerEntry serialized 
into the backend. It was not really easy, but it's done. It also has 
some impact :
- I had to modify JDBM in order to be able to deserialize the entries 
(just added an accessor to a class)

A mail has been sent to Alex Boivert to see if he can provide a new 
version for this jar (we are currently using 1.0.0) and he replied that 
he will try to find some time in a very busy schedule to deliver a 
1.0.1, which will have to be deployed to a maven repo. Another coiple of 
days...

Here is what I suggest at this point : I have created a sub-project 
(apacheds-jdbm) containing the JDBM code with almost all of the tests 
(except the performance tests), and it works pretty well. I will commit 
this code and my modification in the bigbang branch, as I have to move 
on to the next step : removing the JNDI layer.

The reason why I'm impatient to do that is that I have a 13 000 lines 
long diff pending, and I'm afraid to do some modifications on the server 
with around 100 impacted files, as it may break the currently working 
server...

FYI, I have run some perf test on my laptop, and here are the compared 
results for 1.5.2 and bigband (as always, local test, not meaningfull, 
blah blah, for your eyes only :)

1.5.2       : 3506 random search req/s
bigbang : 4296 random search req/s

I also profiled the server and found interesting numbers :

LdapDN handling : 37.6% of the CPU (out of which around 18% can be 
squeeze when the JNDI layer will have been removed)

ServerEntry handling : 19.60% of the CPU

ASN.1 codec : 10,15%

This is 67,4% of all the consumed CPU in tasks which are difficult to 
improve (if we except the 18% we can squeeze from some useless double 
LdapDN parsing), the rest is spreaded in small methods.

A blind guess is that it will be quite challenging to gain a lot now. My 
own expectation is that we should be able to go up to 6000 searches 
req/s on my laptop, but then, we will have to check the LdapDN parsing 
again.

It would be very cool if someone can double check the ServerEntry clone 
method to see if it's optimal, and if we can improve its code (or even 
find some bug or bad logic in it).

I was also thinking that some lazzy cloning might be enough (ie, cloning 
only the attribute container, not the attribute values themselves, as in 
many case, we are just removing attributes from the entry before 
returning it, keeping the attributes unmodified. That would save a few %)

That's it, I'm now waiting for Eris to be up and running...

thanks for your attention !

-- 
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org



Re: [ServerEntry] Next step

Posted by Alex Karasulu <ak...@apache.org>.
Thanks for the update Emmanuel.  I would agree with committing it all even
though we live with a fork for just a few days.

Alex

On Wed, Apr 30, 2008 at 7:24 AM, Emmanuel Lecharny <el...@apache.org>
wrote:

> Hi guys,
>
> I have finished to modify the code to get the ServerEntry serialized into
> the backend. It was not really easy, but it's done. It also has some impact
> :
> - I had to modify JDBM in order to be able to deserialize the entries
> (just added an accessor to a class)
>
> A mail has been sent to Alex Boivert to see if he can provide a new
> version for this jar (we are currently using 1.0.0) and he replied that he
> will try to find some time in a very busy schedule to deliver a 1.0.1, which
> will have to be deployed to a maven repo. Another coiple of days...
>
> Here is what I suggest at this point : I have created a sub-project
> (apacheds-jdbm) containing the JDBM code with almost all of the tests
> (except the performance tests), and it works pretty well. I will commit this
> code and my modification in the bigbang branch, as I have to move on to the
> next step : removing the JNDI layer.
>
> The reason why I'm impatient to do that is that I have a 13 000 lines long
> diff pending, and I'm afraid to do some modifications on the server with
> around 100 impacted files, as it may break the currently working server...
>
> FYI, I have run some perf test on my laptop, and here are the compared
> results for 1.5.2 and bigband (as always, local test, not meaningfull, blah
> blah, for your eyes only :)
>
> 1.5.2       : 3506 random search req/s
> bigbang : 4296 random search req/s
>
> I also profiled the server and found interesting numbers :
>
> LdapDN handling : 37.6% of the CPU (out of which around 18% can be squeeze
> when the JNDI layer will have been removed)
>
> ServerEntry handling : 19.60% of the CPU
>
> ASN.1 codec : 10,15%
>
> This is 67,4% of all the consumed CPU in tasks which are difficult to
> improve (if we except the 18% we can squeeze from some useless double LdapDN
> parsing), the rest is spreaded in small methods.
>
> A blind guess is that it will be quite challenging to gain a lot now. My
> own expectation is that we should be able to go up to 6000 searches req/s on
> my laptop, but then, we will have to check the LdapDN parsing again.
>
> It would be very cool if someone can double check the ServerEntry clone
> method to see if it's optimal, and if we can improve its code (or even find
> some bug or bad logic in it).
>
> I was also thinking that some lazzy cloning might be enough (ie, cloning
> only the attribute container, not the attribute values themselves, as in
> many case, we are just removing attributes from the entry before returning
> it, keeping the attributes unmodified. That would save a few %)
>
> That's it, I'm now waiting for Eris to be up and running...
>
> thanks for your attention !
>
> --
> --
> cordialement, regards,
> Emmanuel Lécharny
> www.iktek.com
> directory.apache.org
>
>
>