Why kinfo_getvmmap is sometimes so expensive?

RW rwmaillists at googlemail.com
Fri Jul 8 12:03:04 UTC 2016


On Thu, 7 Jul 2016 15:32:28 -0700
Yuri wrote:

> On 07/06/2016 17:19, Konstantin Belousov wrote:
> > To calculate residency count for the process map entries, kernel
> > has to iterate over all pages.  This operation was somewhat
> > optimized in 10.3 and HEAD, particularly for the large sparce
> > mappings.  But for large populated mappings there is no other way
> > then to check each page.
> >
> > You may confirm my hypothesis by setting sysctl
> > kern.proc_vmmap_skip_resident_count to 0 and see whether the CPU
> > consumption changed.  Of course, you will not get the resident count
> > in the returned structure, after the knob is tweaked.  
> 
> 
> When people raise the question of why malloc library doesn't unmap
> the memory, developers there usually say that they call
> madvise(MADV_FREE) and this is as good as unmap. 

It's better than unmapping because freed memory is commonly re-malloced
shortly after it's freed. 


> But this example
> shows that this isn't quite the case on the FreeBSD, and unmapping is
> better.

That doesn't mean it's better in general.


More information about the freebsd-hackers mailing list