[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: problems under IRIX 6.2, 6.5

At 02:07 PM 1/20/99 -0500, Don Badrak wrote:
>I've been investigating quite a bit more on this problem (see the archives
>for the full details).  To summarize: OpenLDAP 1.1.2 is horrendously slow
>under IRIX 6.2 and 6.5, while performing just fine under Linux 2.0.36
>and Solaris 2.6.
>Lots of things were blamed, one being the read/write locks.  So, today
>I ripped out all the read/write entry locks.  Still the same thing.  That
>wasn't very helpful.

That's a relief for us at least.  I was dreading having to reengineer
that code.

>[ snipped ]
>  access  to dn=".*,ou=People,o=U.S. Census Bureau,c=US"
>          by self                 write
>          by *                    read
>Aha.  Has anything major changed in the acl code (since the original Umich?).

The ACL code has been significantly reworked since Umich days.
First, OpenLDAP uses POSIX regex instead of the older
BSD re_comp/_exec() codes.  Not all implementations of POSIX
regex are created equally.  You might want to experiment with
alternative implementations (GNU or Spencer's).

Second major change is the ACL group support.

>It may be something with the IRIX regex stuff, but I'm not sure.  I will
>try the GNU regex library to see how that goes.  One thing I noticed in
>servers/slapd/acl.c was the removal of the mutex on the regex_matches()
>call.  Hmm.

The POSIX API is such that the mutex is not needed.

>I shall keep investigating.  Any ideas anyone?

I'm sure the ACL code could be optimized a bit.  We problably
should investigate precompiling the regular expressions.  I
posted a note on -devel.

>Time to tackle the next problem -- why does making a new database (set of
>files) using ldif2ldbm take 45 minutes under IRIX but only 3 minutes on
>my Linux machine? (well, I have it down to 9 minutes now, but it's still
>too long)

Assuming you're using the same version of OpenLDAP with same underlying
datastore, I have no clue.   You could eliminate threading as a issue
completely by compiling --without-threads.