Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Sep 2010 23:41:46 +0300
From:      Andriy Gapon <avg@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        Alan Cox <alc@freebsd.org>
Subject:   Re: minidump size on amd64
Message-ID:  <4CA3A48A.5070300@freebsd.org>
In-Reply-To: <4CA0DA49.2090006@freebsd.org>
References:  <4CA0DA49.2090006@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
on 27/09/2010 20:54 Andriy Gapon said the following:
> 
> It seems that minidump on amd64 is always dumping at least about 1GB of data
> regardless of actual memory size and usage and thus can be even larger than
> regular dump.
> 
> Specifically, I suspect the following code:
> for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR,
>     kernel_vm_end); va += NBPDR) {
>         i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1);
>         /*
>          * We always write a page, even if it is zero. Each
>          * page written corresponds to 2MB of space
>          */
>         ptesize += PAGE_SIZE;
> 
> It seems that difference between KERNBASE and VM_MIN_KERNEL_ADDRESS is already
> ~500G.  Which means 500G divided by 2M equals 250K iterations/pages.  Which is 1GB
> of data.
> 
> Looks like this came from amd64 KVA expansion.
> And it seems a little bit wasteful?

So perhaps we need to add another level of indirection?
I.e. first dump contiguous array of "pseudo-pde" entries that would point to
chunks of "pseudo-pte" entries, so that "pseudo-pte" entries could be sparse.
This is instead of dumping 1GB of contiguous "pseudo-ptes" as we do now.

A bit of work, though.
-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CA3A48A.5070300>