Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

System panicked: pmap_get_physpage: out of memory



New machine, amd64, netbsd-10 branch, 64G RAM. I have noticed that
under heavy file I/O, it manages to page - even though I have
vm.filemin=5, vm.filemax=10, and file RAM hit 86%, which I thought odd.
Last night it panicked running "find" as part of the daily scripts:

ksh$ crash -M netbsd.23.core -N netbsd.23
Crash version 10.1_STABLE, image version 10.1_STABLE.
crash: _kvm_kvatop(0)
Kernel compiled without options LOCKDEBUG.
System panicked: pmap_get_physpage: out of memory
Backtrace from time of crash is available.
crash> bt
sljit_modcmd() at 0
kern_reboot() at sys_reboot
vpanic() at vpanic+0x18d
panic() at vprintf
pmap_get_physpage() at pmap_growkernel
pmap_growkernel() at pmap_growkernel+0x167
uvm_map_prepare() at uvm_map_prepare+0x26d
uvm_map() at uvm_map+0x3c
uvm_km_alloc() at uvm_km_alloc+0x84
pool_grow() at pool_grow+0x78
pool_get() at pool_get+0x1d2
allocbuf() at allocbuf+0xb0
getblk() at getblk+0x138
bio_doread() at bio_doread+0x1c
bread() at bread+0x18
ffs_init_vnode() at ffs_init_vnode+0x9d
ffs_loadvnode() at ffs_loadvnode+0x43
vcache_get() at vcache_get+0x18a
ufs_lookup() at ufs_lookup+0xa6b
VOP_LOOKUP() at VOP_LOOKUP+0x3d
lookup_once() at lookup_once+0x193
namei_tryemulroot.constprop.0() at namei_tryemulroot.constprop.0+0x373
namei() at namei+0x43
do_sys_statat() at do_sys_statat+0x102
sys___lstat50() at sys___lstat50+0x25
syscall() at syscall+0x1fc
--- syscall (number 441) ---
syscall+0x1fc:

Pulling interesting bits out of uvmexp:

  npages = 16035645,
  free = 9923,
  paging = 0,
  wired = 4478,
  ncolors = 32,
  colormask = 31,
  zeropages = 0,
  reserve_pagedaemon = 1,
  reserve_kernel = 120,
  anonpages = 1097357,
  filepages = 12901680,
  execpages = 172070,
  freemin = 6144,
  freetarg = 8192,
  wiredmax = 5345215,
  nswapdev = 1,
  swpages = 16777215,
  swpgavail = 16777215,
  swpginuse = 775162,
  swpgonly = 526319,
...
  pdwoke = 419229,
  pdrevs = 111,
  pdfreed = 3339034,
  pdscans = 3591556,
  pdanscan = 827581,
  pdobscan = 2511535,
  pdreact = 237645,
  pdbusy = 0,
  pdpageouts = 52852,
  pdpending = 792146,
  pddeact = 8945762,
  pdreanon = 0,
  pdrefile = 0,
  pdreexec = 0,

So most of RAM was file pages, unsurprisingly, although free > freetarg.
This machine has 12 cores, 24 threads, so I'd imagine these stats might
be very racy with pdscan running elsewhere for a time during the crash?

For now, I'll try bumping freemin/freetarg, and see if that changes
anything. I think I have to concur with the comment in uvmpd_tune():

/*
 * try to keep 0.5% of available RAM free, but limit to between
 * 128k and 1024k per-CPU.  XXX: what are these values good for?
 */

Given core counts and speeds, these values might be a little stale?

-- 
Paul Ripke
"Great minds discuss ideas, average minds discuss events, small minds
 discuss people."
-- Disputed: Often attributed to Eleanor Roosevelt. 1948.


Home | Main Index | Thread Index | Old Index