Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: What does "koh-kghu call " mean?

Re: What does "koh-kghu call " mean?

From: Jonathan Lewis <jonathan_at_jlcomp.demon.co.uk>
Date: Sat, 25 Mar 2006 06:36:39 -0000
Message-ID: <aMOdnVjM1-9uebnZRVny1w@bt.com>


"oracle_doc" <nilendu_at_nilendu.com> wrote in message news:1143236917.453596.311030_at_j33g2000cwa.googlegroups.com...
> That was a great piece of work, Jonathan.
>
> I did some research of my own (namely, searched metalink) and found out
> that -
>
> "pmuccst: adt/re" is probably the part of the "koh" heap that keeps
> PL/SQL collection information. One bug (4940965) advised to 'raise OS
> level limits for datasize".
>
> On further investigation, the issue did seem like related to an
> infinite WHILE LOOP that was adding to PL/SQL table.
>
> However, I thing I am a little confused about here. Why does the
> "koh-kghu call" always gets memory in chunk of 16414 bytes,
> irrespective of the size of specification of the PL/SQL collection type?
>

The 16416 could simply be a space management thing used to minimise fragmentation of pga memory.

If you look at the end of the dump, you get the list of freelists - mine starts like this

FREE LISTS:
Bucket 0 size=44

    Chunk 31d3044 sz= 28 free " "
    Chunk 31a2dcc sz= 32 free " "
Bucket 1 size=76
Bucket 2 size=96

    Chunk 31bd4f4 sz= 96 free " "
Bucket 3 size=140

    Chunk 31d1d2c sz= 192 free " "

There are only 18 buckets, each with a specific size (or small range of sizes, perhaps) of free chunks.

In the SGA management, there are 255 lists, of which the first 200 or so are each for a very specific chunk size (changine by four bytes as you go from list to list) then about 50 with size ranges. This lets Oracle find free memory very rapidly for SGA management - possibly the same code has been applied for the PGA with fewer items in the list, therefore a greater need to standard the use of chunk sizes and minimize the possible chunk count. One strategy for this would be to 'predict' the need for large chunks than the actual code call demanded. If you change my test from 4K strings to 16K strings, I think the allocation jumped to chunks of 64K.

-- 
Regards

Jonathan Lewis
http://www.oracle.com/technology/community/oracle_ace/ace1.html#lewis

The Co-operative Oracle Users' FAQ
http://www.jlcomp.demon.co.uk/faq/ind_faq.html

Cost Based Oracle: Fundamentals
http://www.jlcomp.demon.co.uk/cbo_book/ind_book.html
Received on Sat Mar 25 2006 - 00:36:39 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US