No. As I already mentioned, there is no reason for slapcat to use large amounts of RAM, it should use whatever size your BDB cache is configured for and that's about it. It's possible there is a memory leak, but since no such leak appears under Linux that would point to either the Solaris C library or some other library specific to your platform.
Today I've finished a cross test on a suse 10.0 linux
Athlon XP 2200+ 768MB RAM + 1GB swap
loaded huge db with same config, shared mem and set_cachesize 0 384000000 1
slapcat -f slapd.conf
and some hours later..
kernel: Out of Memory: Killed process 8915 (slapcat). kernel: oom-killer: gfp_mask=0xd2, order=0 kernel: Mem-info: kernel: DMA per-cpu: kernel: cpu 0 hot: low 2, high 6, batch 1 used:3 kernel: cpu 0 cold: low 0, high 2, batch 1 used:1 kernel: Normal per-cpu: kernel: cpu 0 hot: low 62, high 186, batch 31 used:92 kernel: cpu 0 cold: low 0, high 62, batch 31 used:26 kernel: HighMem per-cpu: empty kernel: Free pages: 6464kB (0kB HighMem) kernel: Active:75306 inactive:111212 dirty:0 writeback:0 unstable:0 free:1616 slab:2595 mapped:134308 pagetables:589 kernel: DMA free:3076kB min:72kB low:88kB high:108kB active:5132kB inactive:4348kB present:16384kB pages_scanned:10531 all_unreclaimable? yes kernel: lowmem_reserve[]: 0 751 751 kernel: Normal free:3388kB min:3468kB low:4332kB high:5200kB active: 296092kB inactive:440500kB present:769984kB pages_scanned:737960 all_unreclaimable? yes kernel: lowmem_reserve[]: 0 0 0 kernel: HighMem free:0kB min:128kB low:160kB high:192kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no kernel: lowmem_reserve[]: 0 0 0 kernel: DMA: 1*4kB 0*8kB 2*16kB 1*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 3076kB kernel: Normal: 1*4kB 3*8kB 2*16kB 0*32kB 2*64kB 1*128kB 0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3388kB kernel: HighMem: empty kernel: Swap cache: add 19238177, delete 19238170, find 2371332/4902129, race 0+0 kernel: Free swap = 0kB kernel: Total swap = 1052216kB kernel: Free swap: 0kB kernel: 196592 pages of RAM kernel: 0 pages of HIGHMEM kernel: 2823 reserved pages kernel: 811 pages shared kernel: 7 pages swap cached kernel: 0 pages dirty kernel: 0 pages writeback kernel: 134308 pages mapped kernel: 2595 pages slab kernel: 589 pages pagetables
free system swap was 0k and free mem about 6000K
the out file about 40% of DB.
I've tried also with
echo 1 > /proc/sys/vm/overcommit_memory
trying to avoid oom-killer to kill the fat slapd, same result.
out-of-memory but, not malloc error or core dump this time.
"Dura Murphy lex, sed lex" :)
Any program will expand to fill available memory.
Paolo