Am 08.04.25 um 22:56 schrieb Norbert:
Hi,

Am 08.04.25 um 12:32 schrieb Ondřej Kuzník:
just a thought:

It looks like you also have a "sub"string index on that attribute, all
indexes for a given attribute exist in the same namespace and a
substring index generates a *lot* of items. So you'll get false
positives competing for slapd's attention - have you enabled 64bit
hashes already ("index_hash64 on")?

Should help with the contention if you haven't yet.

I did two further tests:
1) olcIndexHash64: TRUE
2) olcIndexHash64: TRUE  and only keeping eq for almost_uniqe_attr

in both cases config and data was wiped and re-created with slapadd
I confirmed that keysize is now 64bit in the index.


mdb_stat for the index with eq,sub and 32bit index keys from a running server
Status of almost_uniqe_attr
    Tree depth: 3
    Branch pages: 256
    Leaf pages: 47269
    Overflow pages: 0
    Entries: 47486472


mdb_stat for index with eq only and 64bit index keys after fresh import
Status of almost_uniqe_attr
    Tree depth: 4
    Branch pages: 261
    Leaf pages: 41908
    Overflow pages: 0
    Entries: 3931262


Unfortunately there was no change in runtime. The 1200 queries still take 
around 11s, might be even a tiny bit
slower with 12s.

When running those 1200 filters and recording activity with perf in parallel I 
get at the top

# Samples: 45K of event 'cpu-clock:pppH'
# Event count (approx.): 11330500000
#
# Children      Self  Command  Shared Object            Symbol
# ........  ........  .......  .......................  
.............................................
#
    41.12%    40.82%  slapd    back_mdb-2.5.so.0.1.14   [.] mdb_idl_next
            |
            ---mdb_idl_next

    31.71%    31.55%  slapd    back_mdb-2.5.so.0.1.14   [.] mdb_idl_intersection
            |
            ---mdb_idl_intersection

    24.25%    24.11%  slapd    back_mdb-2.5.so.0.1.14   [.] mdb_idl_next@plt
            |
            ---mdb_idl_next@plt

     1.13%     0.00%  slapd    [kernel.kallsyms]        [k] 
entry_SYSCALL_64_after_hwframe
            |
            ---entry_SYSCALL_64_after_hwframe
               |


And when removing the second entry I get for the same 1200 filters following 
recorded

# Samples: 420  of event 'cpu-clock:pppH'
# Event count (approx.): 105000000
#
# Children      Self  Command  Shared Object            Symbol
# ........  ........  .......  .......................  
.......................................
#
    41.90%     0.00%  slapd    [kernel.kallsyms]        [k] 
entry_SYSCALL_64_after_hwframe
            |
            ---entry_SYSCALL_64_after_hwframe
               |
               |--41.19%--do_syscall_64
               |          |
               |          |--22.62%--ksys_write

Thanks,
Norbert

Reply via email to