On 03/22/06 21:54, Gavin Maltby wrote:
On 03/20/06 19:09, [EMAIL PROTECTED] wrote:

FMA looks like it's about 100k/cpu (ERPT_MAX_ERRS * max_ncpu * ERPT_DATA_SZ)


And they are all preallocated?  Sounds like a bug to me.

Yes they are, so that we can fill error reports from any context
without worrying sbout kmem allocation, pil level, locks etc.

I answered too soon here.  As luck would have it I have hit a problem
today with the default ERPT_DATA_SZ :-)

For each of the non-nvlist errorqs we allocate a bunch of elements, but
they are all pretty small.

For the ereport_errorq, which has a special purpose in life of arranging
for in-transit ereports to be written out to the dump device during a panic
for replay during boot, we have:

#define ERPT_MAX_ERRS   32
#define ERPT_DATA_SZ    (3 * 1024)

        if (ereport_qlen == 0)
                ereport_qlen = ERPT_MAX_ERRS * MAX(max_ncpus, 4);

        if (ereport_size == 0)
                ereport_size = ERPT_DATA_SZ;

On x86 with max_ncpus of 21 (and which is not resized during boot)
that accounts for an allocation of 32 * 3 * 1024 * 21 = 2064384 bytes
plus some trivial additional overhead, or around 2MB.

It's only the "vital" errorqs that fill the above one during panic -
reports of uncorrectable errors.  I've never seen anywhere near
32 uncorrectables striking a single cpu at a time - < 5 is more
more like it.  And I may need to increase ERPT_DATA_SZ above,
so it may be time to revisit this computation.

Cheers

Gavin
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to