From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09B1AC433E0 for ; Thu, 24 Dec 2020 02:24:06 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 704142256F for ; Thu, 24 Dec 2020 02:24:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 704142256F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 731618D0064; Wed, 23 Dec 2020 21:24:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6BA2F8D0063; Wed, 23 Dec 2020 21:24:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5823F8D0064; Wed, 23 Dec 2020 21:24:04 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0020.hostedemail.com [216.40.44.20]) by kanga.kvack.org (Postfix) with ESMTP id 3CC028D0063 for ; Wed, 23 Dec 2020 21:24:04 -0500 (EST) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id F12251F10 for ; Thu, 24 Dec 2020 02:24:03 +0000 (UTC) X-FDA: 77626580766.04.brain23_160df1d2746d Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin04.hostedemail.com (Postfix) with ESMTP id DB7A58012B6C for ; Thu, 24 Dec 2020 02:24:03 +0000 (UTC) X-HE-Tag: brain23_160df1d2746d X-Filterd-Recvd-Size: 4469 Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com [209.85.160.170]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Thu, 24 Dec 2020 02:24:03 +0000 (UTC) Received: by mail-qt1-f170.google.com with SMTP id z3so732367qtw.9 for ; Wed, 23 Dec 2020 18:24:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=n4C7q+Oo7FtwB2X/ZSg7Oqvk459wNMsYGBal+QPzrTU=; b=jDXGGvEwmc1EDtzpqvcSI5SZJ7CL08L9qtloR5dONPe3pQwvpRhZnD401xG37YkBDj ro39Gu3aMYTLqkLvlYuLeYC79gzqTpb3/KoHWK1KEPr8RD4NOXP7O2WlPhJpBFvWSMHN wNPe+9NLltEeZmbbPlVUDixYXWKhvDNhdVxSpqtBR45OckB2wtJvBQbBfyRrPIDBj32M +61rlX5z1VQdO48Ng/4VnBu/hqsqRFdQFDs2soi5uKI4oGh2uYwQFfcjrZj/36gfMsih 1c+VijS3xvZ+MICBC09mHvkiSNCeIh6JK7wE9KXYkUo0/itCmkw5HLT35dia1dTyKHpP WL4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=n4C7q+Oo7FtwB2X/ZSg7Oqvk459wNMsYGBal+QPzrTU=; b=lmEjUj9GVJ+RrizLggAMe2Er7EXP+whS/0aci3uduNE7JdA5e2V63k+JR8swSwwIVa 85Dm3GuvEgjOd4FB0ENOFR0Ntpyl/2zcCrwO1MNGKIku6RU8u2keT5Z4VhpdOoU/aKGz vFYXvknau8CMke6TrsmtjHNrXLe/3St1l9FP8ZVO/vV5u2ajPG1vxTqHKA+FtuKwyLJW Cl5IKxxozG3G9y0ExNaeR4Et1hoZLKDFftKJrrKyQkdSbYhQfPL66ke4IMVsT+FBS78z PIyiL1re0ZCYKB88wp5cia6dqzGBp3b6vjm82yUemF4HKTLZGJm79143MisH6EGiTxNO DcAw== X-Gm-Message-State: AOAM532XmjjHc2olaMxFzjsvmWkR6Qgr5UE16usvLabtQvoWuSEba5kl Bu7I8F0uTKoAHfbpNrBXXPSyNo9ciXOcCzeg7ok= X-Google-Smtp-Source: ABdhPJzwf1hZYQK+C5o0Al8QL5hQACjBpvjElTiNXQEa6bbRzLeHRD7MQoy0qnRFw1FNdWJmmE5tImNr8AmjguBD3Wg= X-Received: by 2002:ac8:6e81:: with SMTP id c1mr28328898qtv.36.1608776642855; Wed, 23 Dec 2020 18:24:02 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Joonsoo Kim Date: Thu, 24 Dec 2020 11:23:51 +0900 Message-ID: Subject: Re: commit "slub: Acquire_slab() avoid loop" wrongly causes rest of partial slabs to be skipped? To: Jann Horn Cc: Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Linux-MM Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Hello, Jann. 2020=EB=85=84 12=EC=9B=94 23=EC=9D=BC (=EC=88=98) =EC=98=A4=ED=9B=84 9:52, = Jann Horn =EB=8B=98=EC=9D=B4 =EC=9E=91=EC=84=B1: > > The commit message of commit 7ced371971966 ("slub: Acquire_slab() > avoid loop") claims: > > > Avoid the loop in acquire slab and simply fail if there is a conflict. > > > > This will cause the next page on the list to be considered. > > However, get_partial_node() looks like this: > > static void *get_partial_node(struct kmem_cache *s, struct kmem_cache_nod= e *n, > struct kmem_cache_cpu *c, gfp_t flags) > { > struct page *page, *page2; > void *object =3D NULL; > unsigned int available =3D 0; > int objects; > [...] > spin_lock(&n->list_lock); > list_for_each_entry_safe(page, page2, &n->partial, slab_list) { > void *t; > [...] > t =3D acquire_slab(s, n, page, object =3D=3D NULL, &objects); > if (!t) > break; > [...] > } > spin_unlock(&n->list_lock); > return object; > } > > So actually, if the cmpxchg() fails, we'll entirely bail out of > get_partial_node() and might, if the system isn't NUMA, fall back to > allocating more memory with new_slab()? That seems to me like it might > cause fragmented slabs to slowly use more memory than they should over > time. Nice catch! I think you are right. > Should the loop in get_partial_node() be using "continue" instead of > "break" in that case, so that the rest of the partial list will be > considered as the commit message claims? Please send the patch. Thanks.