Port-ofppc archive

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

pegasosII hung with new kernel - page daemon spinning



hi folks.


testing out the ppc intr fix i ran 'cvs up -dPA' in my src tree and
a short while later, my system has soft-locked up.  it appears that
the page daemon is cpu spinning not giving up the cpu.  but there's
plenty of free pages and etc so it shouldn't be rurnning all the
time:

db> show uvmexp
Current UVM status:
  pagesize=4096 (0x1000), pagemask=0xfff, pageshift=12
, ncolors=1  123256 VM pages: 6215 active, 3035 inactive, 0 wired, 96063 free
  pages  2360 anon, 5034 file, 1856 exec
  freemin=256, free-target=341, wired-max=41085
  cpu0:
    faults=46153, traps=48555, intrs=7562381, ctxswitch=58644
    softint=1100268, syscalls=0
  fault counts:
    noram=0, noanon=0, pgwait=0, pgrele=0
    ok relocks(total)=488(488), anget(retrys)=13157(0), amapcopy=5069
    neighbor anon/obj pg=11116/81215, gets(lock/unlock)=21061/488
    cases: anon=8239, anoncow=4906, obj=18107, prcopy=2954, przero=7119
  daemon and swap counts:
    woke=1, revs=2, scans=0, obscans=0, anscans=0
    busy=0, freed=0, reactivate=0, deactivate=3036
    pageouts=0, pending=0, nswget=0
    nswapdev=1, swpgavail=131072
    swpages=131072, swpginuse=0, swpgonly=0, paging=0

ie, there's 3/4 (of 512MB) memory free, nothing in swap used... no
really clear idea why this is spinning.  the several back traces i
see from pagedaemon (which is always the active thread when i enter
ddb) look like this:

[ .. enters ddb .. ]
0xaa291df0: at mutex_enter+0x28c
0xaa291e30: at pool_drain+0x48
0xaa291e50: at uvm_pageout+0x350
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

0xaa291e30: at mutex_exit+0x180
0xaa291e50: at uvm_pageout+0x314
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

0xaa291d90: at mutex_exit+0x150
0xaa291db0: at pool_cache_invalidate+0xb8
0xaa291dd0: at pool_reclaim+0xa0
0xaa291e30: at pool_drain+0x94
0xaa291e50: at uvm_pageout+0x350
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

0xaa291e10: at mutex_enter+0x28c
0xaa291e50: at uvm_pageout+0x4dc
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

0xaa291e10: at mutex_exit+0x180
0xaa291e30: at pool_drain+0xc4
0xaa291e50: at uvm_pageout+0x350
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

0xaa291db0: at mutex_exit+0x150
0xaa291dd0: at pool_reclaim+0x264
0xaa291e30: at pool_drain+0x94
0xaa291e50: at uvm_pageout+0x350
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

0xaa291e10: at mutex_enter+0x28c
0xaa291e50: at uvm_pageout+0xc4
0xaa291f20: at cpu_lwp_bootstrap+0xc
0xaa291fe8: at 0xfffffffc

(they're all mutex_enter/exit at the part before entering ddb
because the interrupt delivery happens here.)

any ideas?  i'll keep the box spinning for a little while in
case someone has ddb-capable ideas.  thanks.


.mrg.


Home | Main Index | Thread Index | Old Index