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...@gmail.com> on 2010/05/08 01:11:51 UTC

Search perfs improvement

Hi guys,

I just committed some more improvements. By removing the extra clone 
creation, combined with the removal of the eagerlyPopulateFields() 
method for the search request, I was able to speedup the server a lot.

When running a search operation on a single entry, with a scope=OBJECT 
and filter = (ObjectClass=*), the performances I got was (on perftest 
server) :
- baseline : 128 seconds to do 1M searches, for 7799 requests per second
- without the eagerlyPopulate method : 75 seconds to do 1M searches, for 
13327 requests per second
- without the double clone : 98,2 seconds to do 1M searches, for 10178 
requests per seconds
- both combined : 60 seconds to do 1M seraches, for 166670 requests per 
seconds. This is a 2.1 x improvements.

Note that those numbers are just for a direct call to core-session, they 
don't include the network layer, nor the encoding/decoding of requests 
and responses.

I have some more area to explore, like we are normalizing 3 times a DN, 
when one should be enough. And as normalization is a costly process ...

More to come.

PS : it's fun, and incredible how you can squeeze performances out of 
some code when you have time and when the code is not totally crippled !

-- 
Regards,
Cordialement,
Emmanuel Lécharny
www.nextury.com