On Mon, 25 Oct 2004, Eric Gillespie wrote:
> Importing NetBSD src (822 MB, 89482 files, 10902 directories)
> into an fsfs repository with svnserve 1.1.1, svnserve grows to
> use 124 MB. The user who initially reported this to me saw it
> bump into a 128 MB resource limit.
>
> I tracked this down to r11556. Undo that from a 1.1.1 working
> copy, and the memory usage decreases back to 1.1.0 levels which,
> while bad[1], were at least acceptable.
>
Thank you for tracking it that far. I'm pretty sure I found the reason for
this.
It apperas that apr_hash_set() allocates memory for each call that isn't a
delete, even if there is an entry in the table already. We are using
apr_hash_set to get and put back a translation handle for each translation
(we don't want to do the translation while holding a global lock). So
there we have an allocation per translation, which, ofcourse is
unacceptable.
I think we can avoid this by another level of indirection:-) Storing a
pointer to a pointer to the first entry in the hash table instead of the
pointer itself. This wouldn't be removed, but just modified.
I don't think I can work on this until the weekend.
Thanks for an interesting evening, Erik, with importing four linux kernels
a few times:-)
Regards,
//Peter
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 26 22:52:34 2004