Heavy system load by pagedaemon

Peter Jeremy peterjeremy at optushome.com.au
Fri May 12 11:28:25 UTC 2006

On Fri, 2006-May-12 13:07:41 +0300, Iasen Kostov wrote:
>On Fri, 2006-05-12 at 17:17 +1000, Peter Jeremy wrote:
>> 'page daemon wakeups' counts the number of times that the pagedaemon
>> is woken up due to a page shortage.

I think I was not correct here.  It looks like the pagedaemon can be
woken up (via vm_pages_needed) even if vm_pages_needed is still zero.

>> How about posting a complete 'vmstat -s'.

I spoke too soon.  The relevant counters are in vm.stats.vm.* and not
reported by vmstat.

>But there is something else:
>"collecting pv entries -- suggest increasing PMAP_SHPGPERPROC" x 5 times
>(which is it maximum number of this warrnings).

The call tree for this is
vm_pageout()	with wakeup(&vm_pages_needed) && vm_pages_needed == 0
    vm_pageout_pmap_collect() with pmap_pagedaemon_waken non-zero.

vm_pageout_pmap_collect() runs with Giant held and, based on a very
brief check, looks quite expensive.

>When I checked sysctl vm.zone I saw "PV ENTRY" going near to it's
>maximum right before the lock happen and then after the lock by
>pagedaemon it go down to ~1000

You mentioned eaccelerator and having lots of users and httpd.  I
suspect the comment in NOTES is relevant for you and you need to
increase PMAP_SHPGPERPROC as recommended:

# Set the number of PV entries per process.  Increasing this can
# stop panics related to heavy use of shared memory.  However, that can
# (combined with large amounts of physical memory) cause panics at
# boot time due the kernel running out of VM space.
# If you're tweaking this, you might also want to increase the sysctls
# "vm.v_free_min", "vm.v_free_reserved", and "vm.v_free_target".
# The value below is the one more than the default.
options         PMAP_SHPGPERPROC=201

Peter Jeremy

More information about the freebsd-hackers mailing list