Thus spake Matthew Dillon <[EMAIL PROTECTED]>:
> :Thanks for the explanations!  I still don't understand why this
> :doesn't work, assuming you don't care about nonresident pages:
> :
> :for each process p in the set
> :     for each map entry e in p->vmspace->vm_map
> :             for each page m in e->object.vm_object->memq
> :                     if I haven't seen this m.phys_addr yet in the scan
> :                             resident_pages++
> 
>     That would get close, as long as the machine is not paging heavily.
>     Think of it this way:  If you have a lot of ram the above calculation
>     will give you an upper bound on memory use, but some of the pages
>     in the VM object's may be very old and not actually under active
>     access by the process (for example, the pages might represent part
>     of the program that was used during initialization and then never used
>     again).  If you do not have so much memory older pages will get flushed
>     out or flushed to swap and the above calculation will represent more
>     of a lower bound on the memory used by the group of processes.

Yes, I understand this; that's why I said ``assuming you don't
care about nonresident pages'' (a pretty big assumption, mind
you.)  I was just thinking about essentially calculating the
physical memory usage for a set of processes, taking sharing into
account, and I take it you were talking about calculating the
total amount mapped.  I imagine both metrics would be useful.  For
instance, a database might map a huge file but have a very small
resident set.  I don't know what the OP intended...

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to