linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Laura Abbott <labbott@redhat.com>
To: Hugh Dickins <hughd@google.com>
Cc: Linux-MM <linux-mm@kvack.org>
Subject: Re: Free swap negative?
Date: Mon, 9 Apr 2018 10:50:10 -0700	[thread overview]
Message-ID: <b0d8b880-b4f2-47b9-d32e-2b5100978831@redhat.com> (raw)
In-Reply-To: <alpine.LSU.2.11.1804081132360.1977@eggly.anvils>

On 04/08/2018 11:53 AM, Hugh Dickins wrote:
> On Tue, 27 Mar 2018, Laura Abbott wrote:
> 
>> Hi,
>>
>> Fedora got a bug report of an OOM which listed a negative number of swap
>> pages on 4.16-rc4
>>
>> [ 2201.781891] localhost-live kernel: Free swap  = -245804kB
>> [ 2201.781892] localhost-live kernel: Total swap = 0kB
>> [ 2201.781894] localhost-live kernel: 458615 pages RAM
>>
>> The setup itself was unusual, virt with 1792M RAM + 2G swap.
>> This apparently used to work but the test case was installation
>> media which is a bit painful to bisect. Full oom output is below:
>>
>>   anaconda invoked oom-killer: gfp_mask=0x14200ca(GFP_HIGHUSER_MOVABLE),
>> nodemask=(null), order=0, oom_score_adj=0
>>   anaconda cpuset=/ mems_allowed=0
>>   CPU: 1 PID: 4928 Comm: anaconda Not tainted 4.16.0-0.rc4.git0.1.fc28.x86_64
>> #1
>>   Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27
>> 04/01/2014
>>   Call Trace:
>>    dump_stack+0x5c/0x85
>>    dump_header+0x6e/0x275
>>    oom_kill_process.cold.28+0xb/0x3c9
>>    oom_badness+0xe1/0x160
>>    ? out_of_memory+0x1ca/0x4c0
>>    ? __alloc_pages_slowpath+0xca5/0xd80
>>    ? __alloc_pages_nodemask+0x28e/0x2b0
>>    ? alloc_pages_vma+0x74/0x1e0
>>    ? __read_swap_cache_async+0x14c/0x220
>>    ? read_swap_cache_async+0x28/0x60
>>    ? try_to_unuse+0x135/0x760
>>    ? swapcache_free_entries+0x11d/0x180
>>    ? drain_slots_cache_cpu.constprop.1+0x8a/0xd0
>>    ? SyS_swapoff+0x1d6/0x6b0
>>    ? do_syscall_64+0x74/0x180
>>    ? entry_SYSCALL_64_after_hwframe+0x3d/0xa2
>>   Mem-Info:
>>   active_anon:98024 inactive_anon:167006 isolated_anon:0
>>              active_file:138 inactive_file:226 isolated_file:0
>>              unevictable:118208 dirty:0 writeback:0 unstable:0
>>              slab_reclaimable:7506 slab_unreclaimable:18839
>>              mapped:1889 shmem:2744 pagetables:10605 bounce:0
>>              free:12856 free_pcp:235 free_cma:0
>>   Node 0 active_anon:392096kB inactive_anon:668024kB active_file:552kB
>> inactive_file:904kB unevictable:472832kB isolated(anon):0kB
>> isolated(file):0kB mapped:7556kB dirty:0kB writeback:0kB shmem:10976kB
>> shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB
>> unstable:0kB all_unreclaimable? no
>>   Node 0 DMA free:7088kB min:412kB low:512kB high:612kB active_anon:2428kB
>> inactive_anon:3120kB active_file:0kB inactive_file:0kB unevictable:2428kB
>> writepending:0kB present:15992kB managed:15908kB mlocked:0kB kernel_stack:0kB
>> pagetables:40kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
>>   lowmem_reserve[]: 0 1670 1670 1670 1670
>>   Node 0 DMA32 free:44336kB min:44640kB low:55800kB high:66960kB
>> active_anon:389668kB inactive_anon:664904kB active_file:552kB
>> inactive_file:984kB unevictable:470404kB writepending:0kB present:1818468kB
>> managed:1766292kB mlocked:16kB kernel_stack:7840kB pagetables:42380kB
>> bounce:0kB free_pcp:940kB local_pcp:736kB free_cma:0kB
>>   lowmem_reserve[]: 0 0 0 0 0
>>   Node 0 DMA: 6*4kB (UME) 19*8kB (UME) 12*16kB (UE) 4*32kB (UE) 29*64kB (ME)
>> 11*128kB (UME) 3*256kB (ME) 3*512kB (UME) 1*1024kB (M) 0*2048kB 0*4096kB =
>> 7088kB
>>   Node 0 DMA32: 986*4kB (UMEH) 815*8kB (UMEH) 359*16kB (UMEH) 113*32kB (UMEH)
>> 229*64kB (UMEH) 51*128kB (UMEH) 7*256kB (UMEH) 3*512kB (ME) 0*1024kB 0*2048kB
>> 0*4096kB = 44336kB
>>   Node 0 hugepages_total=0 hugepages_free=0 hugepages_surp=0
>> hugepages_size=2048kB
>>   122508 total pagecache pages
>>   1176 pages in swap cache
>>   Swap cache stats: add 222119, delete 220943, find 18522/25378
>>   Free swap  = -245804kB
>>   Total swap = 0kB
>>   458615 pages RAM
>>   0 pages HighMem/MovableOnly
>>   13065 pages reserved
>>   0 pages cma reserved
>>   0 pages hwpoisoned
>>
>> Any suggestions?
> 
> Negative "Free swap" is entirely normal in such output, while swapoff
> is in progress: and the stale address "? try_to_unuse+0x135/0x760" in
> the backtrace implies that swapoff is in progress.
> 
> swapoff subtracts total size first, then as swap is freed the number
> goes back up to 0.  /proc/meminfo hides that negativity as 0, but in
> a low-level message like this, we prefer to see the unmassaged info.
> 
> Mind you, swapoff uses set_current_oom_origin() to volunteer to be
> the first thing killed when OOM comes into play.  Perhaps it's already
> marked to be killed, but too busy in its loop looking for swap entries,
> to have noticed the kill yet.
> 
> Hugh
> 

Thanks for the explanation. I think this is now a question for
the application about why swap off was even being called.

Thanks,
Laura

      reply	other threads:[~2018-04-09 17:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-27 19:38 Free swap negative? Laura Abbott
2018-04-08 18:53 ` Hugh Dickins
2018-04-09 17:50   ` Laura Abbott [this message]

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=b0d8b880-b4f2-47b9-d32e-2b5100978831@redhat.com \
    --to=labbott@redhat.com \
    --cc=hughd@google.com \
    --cc=linux-mm@kvack.org \
    /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;
as well as URLs for NNTP newsgroup(s).