[Freeipa-devel] Provisioning throughput
thierry bordaz
tbordaz at redhat.com
Mon May 9 09:50:10 UTC 2016
On 05/05/2016 03:44 PM, Petr Vobornik wrote:
> On 05/04/2016 02:20 PM, thierry bordaz wrote:
>> Hello,
>>
>> I have been doing some tests/measures using
>> https://github.com/freeipa/freeipa-tools/blob/master/create-test-data.py.
>> The tool creates a set of typical users/hosts/groups... to import with a
>> ldapadd.
>>
>> I wrote down some finding in
>> http://www.freeipa.org/page/V4/Performance_Improvements#Provisioning_throughput_and_DS_plugins.
>> I still have to do some cleanup around the performance but the basic of a
>> possible improvement is to do provisioning in several steps (disabling
>> plugins, provisioning, enabling plugin, running fixup tasks).
>>
>> Before going further in the design I wanted to share those ideas and know if
>> it raise any concern.
>>
>> thanks
>> thierry
>>
> Hi Thierry,
>
> Thanks for the analysis. Very nice.
>
> Knowing this will help us suggesting workarounds also for old releases.
>
> Couple questions:
>
> Have you tested retrCL disabled with memberOf enabled. It seems that it
> would eliminate 550K adds and 0.8M searches. What would be the time
> improvement?
Basically provisioning/migrate does not scale well because of memberOf.
Each time you add a member to a group you need to reevalute its
membership (15M search) and finally update the member (that is a MOD for
the member + ADD in retroCL). If a same entry is added to a group and
later added to an other group, the first evaluation/updates are useless.
Disabling memberof drops SRCH from 15M -> ~1M. You can get an additional
gain ~1M -> ~0.1M if you disable retroCL.
I tested retroCL disabled / memberOf enabled but on a different dataset.
It gaves low improvement in term of duration.
I think MODs are here more expensive that ADD.
I will test your suggestion to confirm the numbers.
>
> Do you know what is the time when memberof is enabled but slapi-nis and
> retroCL are disabled?
No. I will test it.
>
> From the text it was not clear to me, if you find or investigate
> possible improvements in memberof plugin which would improve the
> performance without stopping and starting DS.
memberof does not scale well because of #SRCH and #MOD.
Ludwig suggested a group caching that is looking close to other
in-memory implementations of memberof.
Such cache would reduce the #SRCH possibly from 15M->1M, but the
implementation is not immediate.
Also note that filling the cache has a cost that can delay startup (like
we saw in slapi-nis) and a memory footprint.
Regarding the MODs we can make memberof attribute a virtual attribute
and stop updating the entries. This is also not immediate to implement:
rewrite memberof plugin.
From 7.3 schedule, I think we can get an important improvement if DS
start-stop is acceptable.
Improving memberof is more a longer term option.
thanks
thierry
More information about the Freeipa-devel
mailing list