linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Mike Galbraith <mikeg@weiden.de>
To: Rik van Riel <riel@conectiva.com.br>
Cc: Roger Larsson <roger.larsson@norran.net>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>
Subject: Re: 2.4.0-test9-pre4: __alloc_pages(...) try_again:
Date: Fri, 22 Sep 2000 18:51:59 +0200 (CEST)	[thread overview]
Message-ID: <Pine.Linu.4.10.10009221838370.1910-100000@mikeg.weiden.de> (raw)
In-Reply-To: <Pine.LNX.4.21.0009220544590.27435-100000@duckman.distro.conectiva>

On Fri, 22 Sep 2000, Rik van Riel wrote:

> On Fri, 22 Sep 2000, Mike Galbraith wrote:
> 
> > Much more interesting (i hope) is that refill_inactive() _is_
> > present 2923 times, we're oom as heck, and neither shm_swap()
> > nor swap_out() is ever reached in 1048533 lines of trace.  The
> > only way I can see that this can happen is if
> > refill_inactive_scan() eats all count.
> 
> > :-) I'm currently wo^Handering what count is and if I shouldn't try
> > checking nr_inactive_clean_pages() before exiting the loop.
> 
> This means that refill_inactive_scan() has moved
> so many pages to the inactive_dirty/clean list we
> have satisfied both the inactive_target and the
> free_target ...
> 
> Maybe, however, these pages are not freeable and
> page_launder() moves them back to the active list
> and we end up moving pages from one list to another ????

I do have page_launder() failing permanently.  I also (sysrq-m) do
see ;-) list ping-pong being played.  I tried 2.4.0-t9p2-vmpatch and
had locks with no scheduling happening, always looping in swptst task.
Then, I saw the thinko correction and tried that.  I still get lockups,
though now scheduling happens again.  The magnatude of list ping-pong
active->inactive_dirty->active has changed from few pages to thousands
of pages, but inactive_clean stays 0, free stays constant at 350.. box
is as oom as they come.

> With the latest change to get all pages properly
> deactivated when needed, maybe this is possible to
> happen. It /seems/ possible now that I think about
> it, very very unlikely, but possible ;(
> 
> Btw, was there any swap free when you got into
> this situation ?

Yes, the locks always happened (and still do) with swap_used being
some random number always far above zero.

(question:  __get_free_pages below is GFP_USER, is that ok there?)

	-Mike

-----------------------------datapoint---------------------------
dmesg log retrieved after breakout:
...
SysRq: Suspending trace
(that freezes 1000000+ line 334590.00 usec ktrace buffer during lock..
seperated profiles of kswapd and all_others below)
kdb> bt
    EBP       EIP         Function(args)
0xc3053d0c 0xc01355f0 sync_page_buffers+0x3c (0xc6f113e0, 0x2)
0xc3053d30 0xc013571b try_to_free_buffers+0x107 (0xc11d61c4, 0x2)
0xc3053d60 0xc012cde0 page_launder+0x294 (0x5, 0x1)
0xc3053d7c 0xc012d60f do_try_to_free_pages+0x47 (0x5, 0x1)
0xc3053d8c 0xc012d88e try_to_free_pages+0x22 (0x5)
0xc3053dac 0xc012e51a __alloc_pages_wrap+0x1fe (0xc02fe8ac, 0x0, 0xc02fe55c)
0xc3053dc0 0xc012e5d3 __get_free_pages_wrap+0x2f (0x5, 0x0, 0xc02fe55c)
0xc3053de0 0xc012ec1b read_swap_cache_async+0x3f (0x10e000, 0x0)
0xc3053e08 0xc0123f68 swapin_readahead+0x90 (0x10e900)
0xc3053e20 0xc0123fcf do_swap_page+0x2b (0xc712e620, 0xc6e4b9e0, 0x804de40, 0xc3050134, 0x10e900)
0xc3053e58 0xc01243b7 handle_mm_fault+0x19b (0xc712e620, 0xc6e4b9e0, 0x804de40, 0x1)
more> 
0xc3053f0c 0xc0113d21 do_page_fault+0x151 (0xc3053f1c, 0x2, 0x804de40, 0xc02fcc3c, 0x1249)
           0xc010abac error_code+0x2c
Interrupt registers:
eax = 0x00000000 ebx = 0x0804de40 ecx = 0xc02fcc3c edx = 0x00001249 
esi = 0xc0354b40 edi = 0x00000000 esp = 0xc3053f50 eip = 0xc011a2b4 
ebp = 0xc3053f84  ss = 0x00000018  cs = 0x00000010 eflags = 0x00010246 
 ds = 0x00000018  es = 0x00000018 origeax = 0xffffffff &regs = 0xc3053f1c
           0xc011a2b4 do_syslog+0x140 (0x2, 0x804de40, 0x1000)
0xc3053f98 0xc014c0cc kmsg_read+0x1c (0xc30a4740, 0x804de40, 0x1000, 0xc30a4760)
0xc3053fbc 0xc0131e2f sys_read+0x9b (0x0, 0x804de40, 0x1000, 0x400, 0x804ee40)
           0xc010aa84 system_call+0x3c
kdb> bp page_launder+0x700
Instruction(i) BP #0 at 0xc012d24c (page_launder+0x700)
    is enabled globally adjust 1
kdb> go
Instruction(i) breakpoint #0 at 0xc012d24c (adjusted)
0xc012d24c page_launder+0x700:   ret    

Entering kdb (0xc3052000) due to Breakpoint @ 0xc012d24c
kdb> bt
    EBP       EIP         Function(args)
0xc3053d7c 0xc012d24c page_launder+0x700 (0x5, 0x1)
           0xc012d60f do_try_to_free_pages+0x47 (0x5, 0x1)
0xc3053d8c 0xc012d88e try_to_free_pages+0x22 (0x5)
0xc3053dac 0xc012e51a __alloc_pages_wrap+0x1fe (0xc02fe8ac, 0x0, 0xc02fe55c)
0xc3053dc0 0xc012e5d3 __get_free_pages_wrap+0x2f (0x5, 0x0, 0xc02fe55c)
0xc3053de0 0xc012ec1b read_swap_cache_async+0x3f (0x10e000, 0x0)
0xc3053e08 0xc0123f68 swapin_readahead+0x90 (0x10e900)
0xc3053e20 0xc0123fcf do_swap_page+0x2b (0xc712e620, 0xc6e4b9e0, 0x804de40, 0xc3050134, 0x10e900)
0xc3053e58 0xc01243b7 handle_mm_fault+0x19b (0xc712e620, 0xc6e4b9e0, 0x804de40, 0x1)
0xc3053f0c 0xc0113d21 do_page_fault+0x151 (0xc3053f1c, 0x2, 0x804de40, 0xc02fcc3c, 0x1249)
           0xc010abac error_code+0x2c
more> 
Interrupt registers:
eax = 0x00000000 ebx = 0x0804de40 ecx = 0xc02fcc3c edx = 0x00001249 
esi = 0xc0354b40 edi = 0x00000000 esp = 0xc3053f50 eip = 0xc011a2b4 
ebp = 0xc3053f84  ss = 0x00000018  cs = 0x00000010 eflags = 0x00010246 
 ds = 0x00000018  es = 0x00000018 origeax = 0xffffffff &regs = 0xc3053f1c
           0xc011a2b4 do_syslog+0x140 (0x2, 0x804de40, 0x1000)
0xc3053f98 0xc014c0cc kmsg_read+0x1c (0xc30a4740, 0x804de40, 0x1000, 0xc30a4760)
0xc3053fbc 0xc0131e2f sys_read+0x9b (0x0, 0x804de40, 0x1000, 0x400, 0x804ee40)
           0xc010aa84 system_call+0x3c
kdb> rd
eax = 0x00000000 ebx = 0x00000000 ecx = 0x00000001 edx = 0xc11d558c 
esi = 0x00000000 edi = 0x00000005 esp = 0xc3053d64 eip = 0xc012d24c 
ebp = 0xc3053d7c  ss = 0x00000018  cs = 0x00000010 eflags = 0x00000202 
 ds = 0x00000018  es = 0x00000018 origeax = 0xffffffff &regs = 0xc3053d30
kdb> go
Instruction(i) breakpoint #0 at 0xc012d24c (adjusted)
0xc012d24c page_launder+0x700:   ret    

Entering kdb (0xc2d5e000) due to Breakpoint @ 0xc012d24c
kdb> bt
    EBP       EIP         Function(args)
0xc2d5fdb0 0xc012d24c page_launder+0x700 (0x5, 0x1)
           0xc012d60f do_try_to_free_pages+0x47 (0x5, 0x1)
0xc2d5fdc0 0xc012d88e try_to_free_pages+0x22 (0x5)
0xc2d5fde0 0xc012e51a __alloc_pages_wrap+0x1fe (0xc02fe8ac, 0x0, 0xc02fe55c)
0xc2d5fdf4 0xc012e5d3 __get_free_pages_wrap+0x2f (0x5, 0x0, 0xc02fe55c)
0xc2d5fe14 0xc012ec1b read_swap_cache_async+0x3f (0x453100, 0x0)
0xc2d5fe3c 0xc0123f68 swapin_readahead+0x90 (0x453400)
0xc2d5fe54 0xc0123fcf do_swap_page+0x2b (0xc712e6c0, 0xc2f4dee0, 0xbfffe1a8, 0xc2d5aff8, 0x453400)
0xc2d5fe8c 0xc01243b7 handle_mm_fault+0x19b (0xc712e6c0, 0xc2f4dee0, 0xbfffe1a8, 0x1)
0xc2d5ff40 0xc0113d21 do_page_fault+0x151 (0xc2d5ff50, 0x2, 0xc2d5e000, 0xbfffe1a8, 0x0)
           0xc010abac error_code+0x2c
more> 
Interrupt registers:
eax = 0xbfffe1ac ebx = 0xc2d5e000 ecx = 0xbfffe1a8 edx = 0x00000000 
esi = 0x00000000 edi = 0x00000000 esp = 0xc2d5ff84 eip = 0xc0140799 
ebp = 0xc2d5ffbc  ss = 0x00000018  cs = 0x00000010 eflags = 0x00010246 
 ds = 0x00000018  es = 0x00000018 origeax = 0xffffffff &regs = 0xc2d5ff50
           0xc0140799 sys_select+0x395 (0x5, 0xbfffe22c, 0x0, 0x0, 0xbfffe1a8)
           0xc010aa84 system_call+0x3c
kdb> rd
eax = 0x00000000 ebx = 0x00000000 ecx = 0x00000001 edx = 0xc11d558c 
esi = 0x00000000 edi = 0x00000005 esp = 0xc2d5fd98 eip = 0xc012d24c 
ebp = 0xc2d5fdb0  ss = 0x00000018  cs = 0x00000010 eflags = 0x00000202 
 ds = 0x00000018  es = 0x00000018 origeax = 0xffffffff &regs = 0xc2d5fd64
kdb> set LOGGING 0
SysRq: Terminate All Tasks

trimmed profile of kswapd portion of trace:
%TOTAL-TIME  TOTAL-USECS    AVG/CALL    CALLS ADDR     FUNC
  0.0706%          51.40        0.99       52 c01092c3 __switch_to
  0.2707%         197.09        3.79       52 c012b58b kmem_cache_reap
  0.0211%          15.38        0.19       79 c012d3fe inactive_shortage
  0.0216%          15.76        0.12      131 c012d357 free_shortage
  0.0659%          48.01        0.23      210 c012e6fa nr_inactive_clean_pages
  0.1056%          76.88        0.23      341 c012e6b2 nr_free_pages
  0.2061%         150.08        0.32      468 c01355c7 sync_page_buffers
  0.3044%         221.68        0.24      936 c0135627 try_to_free_buffers
  0.3390%         246.86        0.26      936 c012e63d __free_pages
  0.3239%         235.86        0.24      963 c0117fb3 __wake_up
 21.7178%       15813.72        0.20    80467 c012d263 refill_inactive_scan
 24.2149%       17631.96        0.22    81400 c012b95d age_page_down_nolock
 51.7663%       37693.43        0.46    81400 c012b9eb deactivate_page_nolock
Total entries: 248146  Total usecs:     72814.65

trimmed profile of all_others:
%TOTAL-TIME  TOTAL-USECS    AVG/CALL    CALLS ADDR     FUNC
  0.1098%         287.37        7.77       37 c010f2e2 timer_interrupt
  0.0035%           9.26        0.20       46 c010c351 do_IRQ
  0.0104%          27.32        0.59       46 c010e5b1 end_8259A_irq
  0.0111%          29.00        0.63       46 c011dd14 do_softirq
  0.0125%          32.62        0.71       46 c010e631 enable_8259A_irq
  0.0108%          28.20        0.60       47 c010c168 handle_IRQ_event
  0.0163%          42.65        0.91       47 c010c2b7 do_IRQ
  0.0406%         106.41        2.26       47 c010e6e8 mask_and_ack_8259A
  0.1509%         395.04        0.12     3288 c012d453 refill_inactive
  0.1760%         460.79        0.14     3288 c012d3fe inactive_shortage
  0.1849%         483.96        0.15     3288 c01443ef prune_icache
  0.1993%         521.67        0.16     3288 c013577a wakeup_bdflush
  0.2058%         538.68        0.16     3288 c0142ef0 prune_dcache
  0.2582%         675.87        0.21     3288 c01444d9 shrink_icache_memory
  0.2679%         701.22        0.21     3288 c014328d shrink_dcache_memory
  0.2843%         744.17        0.23     3288 c0118bc6 wake_up_process
  0.3264%         854.55        0.26     3288 c014427f dispose_list
  1.0448%        2734.97        0.83     3288 c0143f74 sync_all_inodes
  0.1619%         423.73        0.13     3289 c012d879 try_to_free_pages
  0.1885%         493.39        0.15     3289 c012d5d8 do_try_to_free_pages
  0.2297%         601.39        0.18     3289 c012d7b2 wakeup_kswapd
  0.4406%        1153.40        0.35     3289 c012cb5f page_launder
  0.2189%         572.93        0.17     3314 c013581f flush_dirty_buffers
  0.5468%        1431.39        0.43     3315 c0117a07 reschedule_idle
  0.3532%         924.58        0.14     6576 c012adca kmem_cache_shrink
  0.7292%        1908.83        0.29     6576 c012ad72 __kmem_cache_shrink
  1.5872%        4154.79        0.63     6576 c012ad12 is_chained_kmem_cache
  6.2938%       16475.60        2.51     6577 c012b58b kmem_cache_reap
  1.2516%        3276.47        0.50     6603 c01092c3 __switch_to
  2.4868%        6509.88        0.98     6655 c0117ba3 schedule
  0.9808%        2567.60        0.26     9867 c012e26c __alloc_pages_limit_wrap
  0.6042%        1581.76        0.12    13153 c012d357 free_shortage
  1.3030%        3410.99        0.17    19755 c012e6fa nr_inactive_clean_pages
  2.3829%        6237.93        0.19    32908 c012e6b2 nr_free_pages
  4.3462%       11377.38        0.22    52624 c012d263 refill_inactive_scan
  4.6854%       12265.25        0.23    52767 c012b95d age_page_down_nolock
 10.7973%       28264.67        0.54    52767 c012b9eb deactivate_page_nolock
 13.1619%       34454.59        0.31   111792 c01355c7 sync_page_buffers
 11.2581%       29470.95        0.25   118370 c0135627 try_to_free_buffers
 20.5987%       53922.25        0.46   118370 c012e63d __free_pages
 11.7535%       30767.65        0.25   124974 c0117fb3 __wake_up
Total entries: 800409  Total usecs:    261775.35

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux.eu.org/Linux-MM/

  reply	other threads:[~2000-09-22 16:51 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-09-20 20:23 Roger Larsson
2000-09-21  5:21 ` Mike Galbraith
2000-09-21 18:17   ` Roger Larsson
2000-09-22  6:20     ` Mike Galbraith
2000-09-22  8:49       ` Rik van Riel
2000-09-22 16:51         ` Mike Galbraith [this message]
2000-09-23 11:28           ` 2.4.0-test9-pre6: __alloc_pages(...) datapoint Mike Galbraith
2000-09-21 16:26 ` 2.4.0-test9-pre4: __alloc_pages(...) try_again: Rik van Riel
2000-09-21 17:58   ` Roger Larsson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.Linu.4.10.10009221838370.1910-100000@mikeg.weiden.de \
    --to=mikeg@weiden.de \
    --cc=linux-mm@kvack.org \
    --cc=riel@conectiva.com.br \
    --cc=roger.larsson@norran.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox