From: Wang Yugui <wangyugui@e16-tech.com>
To: Vlastimil Babka <vbabka@suse.cz>
Cc: linux-mm@kvack.org, linux-btrfs@vger.kernel.org
Subject: Re: unexpected -ENOMEM from percpu_counter_init()
Date: Fri, 09 Apr 2021 17:52:43 +0800 [thread overview]
Message-ID: <20210409175242.C545.409509F4@e16-tech.com> (raw)
In-Reply-To: <60e9b994-e37c-d059-4af5-0cb7860ca4f3@suse.cz>
Hi, Dennis Zhou, Vlastimil Babka, Filipe Manana
The root reason of this problem maybe the design of
'memalloc_nofs_restore()/memalloc_nofs_save()'.
When some job such as memory pre-alloc and reclaim is needed, that is
done in a workqueue now.
This is a problem for high-load and over-load. In that case, we need to
do these job in current task/process, so that current task/process will
be blocked until necessary job is done.
If we let these job in done in a workqueue, and current task/process is
not blocked, that means failure is very near, and then we can not work
stable in high-load and over-load.
For high-load and over-load, failure is not expected, we expect some
job be blocked well.
> > Percpu does do this via a workqueue item. The issue is in v5.9 we
> > introduced 2 types of chunks. However, the free float page number was
> > for the total. So even if 1 chunk type dropped below, the other chunk
> > type might have enough pages. I'm queuing this for 5.12 and will send it
> > out assuming it does fix your problem.
Best Regards
Wang Yugui (wangyugui@e16-tech.com)
2021/04/09
> +CC btrfs
>
> On 4/1/21 12:51 PM, Wang Yugui wrote:
> > Hi,
> >
> > an unexpected -ENOMEM from percpu_counter_init() happened when xfstest
> > with kernel 5.11.10 and 5.10.27
>
> Is there a dmesg log showing allocation failure or something?
>
> > direct caller:
> > int btrfs_drew_lock_init(struct btrfs_drew_lock *lock)
> > {
> > int ret;
> >
> > ret = percpu_counter_init(&lock->writers, 0, GFP_KERNEL);
> > if (ret)
> > return ret;
> >
> > atomic_set(&lock->readers, 0);
> > init_waitqueue_head(&lock->pending_readers);
> > init_waitqueue_head(&lock->pending_writers);
> >
> > return 0;
> > }
> >
> > upper caller:
> > nofs_flag = memalloc_nofs_save();
> > ret = btrfs_drew_lock_init(&root->snapshot_lock);
> > memalloc_nofs_restore(nofs_flag);
> > if (ret == -ENOMEM) printk("ENOMEM btrfs_drew_lock_init\n");
> > if (ret)
> > goto fail;
> >
> > The hardware of this server:
> > CPU: Xeon(R) CPU E5-2660 v2(10 core) *2
> > memory: 192G, no swap
> >
> > Only one xfstests job is running in this server, and about 7% of memory
> > is used.
> >
> > Any advice please.
> >
> > Best Regards
> > Wang Yugui (wangyugui@e16-tech.com)
> > 2021/04/01
> >
> >
prev parent reply other threads:[~2021-04-09 9:52 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-01 10:51 unexpected -ENOMEM from percpu_counter_init() Wang Yugui
2021-04-02 1:49 ` Wang Yugui
2021-04-07 12:35 ` Vlastimil Babka
2021-04-07 13:09 ` Wang Yugui
2021-04-07 14:56 ` Dennis Zhou
2021-04-07 23:28 ` Wang Yugui
2021-04-08 2:44 ` Dennis Zhou
2021-04-08 9:20 ` Wang Yugui
2021-04-08 13:48 ` Dennis Zhou
2021-04-08 14:28 ` Filipe Manana
2021-04-08 15:02 ` Dennis Zhou
2021-04-09 11:39 ` Filipe Manana
2021-04-09 13:39 ` Dennis Zhou
2021-04-09 13:42 ` Filipe Manana
2021-04-09 0:08 ` Wang Yugui
2021-04-09 2:14 ` Dennis Zhou
2021-04-09 4:02 ` Wang Yugui
2021-04-09 7:36 ` Wang Yugui
2021-04-09 7:48 ` Wang Yugui
2021-04-09 13:56 ` Dennis Zhou
2021-04-10 15:29 ` Wang Yugui
2021-04-10 15:52 ` Dennis Zhou
2021-04-10 16:08 ` Wang Yugui
2021-04-11 15:20 ` Wang Yugui
2021-04-12 4:03 ` Dennis Zhou
2021-04-12 5:24 ` Wang Yugui
2021-04-09 9:52 ` Wang Yugui [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=20210409175242.C545.409509F4@e16-tech.com \
--to=wangyugui@e16-tech.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=vbabka@suse.cz \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.