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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A8858C4332F for ; Wed, 14 Dec 2022 00:28:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 253308E0003; Tue, 13 Dec 2022 19:28:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 203038E0002; Tue, 13 Dec 2022 19:28:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0CB778E0003; Tue, 13 Dec 2022 19:28:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id EF4F68E0002 for ; Tue, 13 Dec 2022 19:28:29 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id C749CA02AB for ; Wed, 14 Dec 2022 00:28:29 +0000 (UTC) X-FDA: 80239025538.25.5C74029 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf02.hostedemail.com (Postfix) with ESMTP id 7EE4A80009 for ; Wed, 14 Dec 2022 00:28:26 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=EaweofYU; spf=pass (imf02.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1670977706; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=uKxbAmDy4kBbnLLyS6DnUH8pcciN3a5kpJSNy5AHjoU=; b=Xh+VVDq5VkxqgJQ/IO8ipvTTZ5FjmJrMG4r0UtyYma8y/o5Ub/wOCRDcjCUcHf44LShFyJ epPmTUc5/gSydB3r3/u0DmOHDMuPCm56RIN/okUctky/JLe5MnQLQORr1ymi3TIVcQQBA1 DSP7T6Omx5XbaVsXjK4ipoTyA7h4BHY= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=EaweofYU; spf=pass (imf02.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1670977707; a=rsa-sha256; cv=none; b=zoK51pgl/S9TV1wtnTGZUtEP8f1Hr1PtTbbyIFzANLXAWGKFoD6oUiE3pkpqZdlEYTEfI/ +SAY1IDu8NK/UbQr1D3UD+50+4iaxPLdJRNAlpl039dZ5y2t83LshBMgXUvKqK9pOQAonZ uqvLjVIbZrSva9grA15u4zfLei04eVI= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670977705; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=uKxbAmDy4kBbnLLyS6DnUH8pcciN3a5kpJSNy5AHjoU=; b=EaweofYUQfc2F5U1tnC1+k3OlzJIUjYLBGWBttdZYrqPfbtmW6+UHMUNfl5Q/vIElf0Kqi F7buPYe0/ssjl60wFir6kOlpi+iO08xUo3rCMF17htai/9p58cPGMIaaK1u5Udh78Uh9NZ 8xVpcRgeMZi60T/iHBvW8NY9l/lN4Vc= Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-66-MeIhLhEsOraj2_HnxXkQHA-1; Tue, 13 Dec 2022 19:28:24 -0500 X-MC-Unique: MeIhLhEsOraj2_HnxXkQHA-1 Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-3dfb9d11141so187685987b3.3 for ; Tue, 13 Dec 2022 16:28:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uKxbAmDy4kBbnLLyS6DnUH8pcciN3a5kpJSNy5AHjoU=; b=jBnwzdQK3HO0RjwCi31Q4xYKvmniQnlhxBqfvgu6IQ5z9JNvi+Vaxki2rsjH+Ua+f3 XphlwM3kjb/JeIZxohyo1nNxSk4yN1Dj8aH0jMcIwKQ4971bGSWL4RW/+aL+1gxj14rs 16NbLfkWFZOV/nF4pqEmrj79ALxAPAFlOpizp8cnNtMlcOwZfRkEkfXDKbm9pUoJjicL hpk+Zx53s737w00w3Mv1bGRM5IYLtnfKD6/ckegjGry/sUNKG4Da9u43qL2fbrneIMFd DG3lZiPdHmadvgpoNwfXhfvOJ4H1xbWe+PETE26YfEjdf5HuQFU7gM6heOysFLV7++x8 UYjw== X-Gm-Message-State: ANoB5pldx+WdwCyCVp3i1cNSzSWpRhgUIV4rxTcFzMityiaj0Kt4efty p840Irga8wnU3RfaET2yM64xqA6Z40V7y++ky4ZafdqdB6ezlg4KvFiqFLUeNqAOOFkLrLYCo2v DbAkyutVwaOIcf+Nn4kPJx6D4ddw= X-Received: by 2002:a25:cf55:0:b0:706:f436:e05a with SMTP id f82-20020a25cf55000000b00706f436e05amr10658837ybg.489.1670977704131; Tue, 13 Dec 2022 16:28:24 -0800 (PST) X-Google-Smtp-Source: AA0mqf6ceicumy6iYOWIsiBBjN5PFlI06lEhjxzctq/SoLQzbbDOkgCLpMjqH8i5tFp9OhA/CmRbvGmRvx5VOKjvxLA= X-Received: by 2002:a25:cf55:0:b0:706:f436:e05a with SMTP id f82-20020a25cf55000000b00706f436e05amr10658834ybg.489.1670977703890; Tue, 13 Dec 2022 16:28:23 -0800 (PST) MIME-Version: 1.0 References: <20221213234505.173468-1-npache@redhat.com> In-Reply-To: From: Nico Pache Date: Tue, 13 Dec 2022 17:27:58 -0700 Message-ID: Subject: Re: [RFC V2] mm: add the zero case to page[1].compound_nr in set_compound_order To: Mike Kravetz Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, muchun.song@linux.dev, akpm@linux-foundation.org, willy@infradead.org, gerald.schaefer@linux.ibm.com, sidhartha.kumar@oracle.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7EE4A80009 X-Rspam-User: X-Stat-Signature: 9izwsukmdwx667qtk4kpza69ff4bogqu X-HE-Tag: 1670977706-766964 X-HE-Meta: U2FsdGVkX19vS+RUlkjbsnlEC91xOub/60CTrgYtYa/IEtQ2q0VOaDG+D75mkjIljcAHEzzCR6GLn1WZcwxGuaKkLt17lrzxC6/vtPFcmtqVqJ5tw2psgR3/pqdTfe1ioWhj6ZPLFigkxfstku4Qrg6anBn+5otI+Hk94ciI9lfyHvjKLaZhvm32aQ/sbuEBo+Bzw3xJshaCt129CQA6YM/dQ6ag1VhcRtbVM1WBFGTAv0UvgChkwaJ65HA30Amt4HsSHsNmNDmsGb3mC4nzavbRSoMDu4XTLzOjGq8iYvpxXPIdqkBGl4L1DEI9XfqvTvocxhpf9Mxm6E/EcEeH10iffJ40cQdb6VMp/agShkAxNTctu1pYlSrK5Ssda/6qMPAYFdtVM00tHGTXBytWZ2d7xfGknDLBqrio2ZHE7mmzi+/rxRjfh11PyGjuYz1XhqPJcOBuV6HsSlxJAXkvgUFrbvmNZh83F+w5hkW7nwYaRF/f88pelwSu455f9G5oSR4CqqNhtFlHsMUYytgaC7o8P/4PvsnMMCnUc951RzYnA40bZCvABJUzefkc41bKdfWZti0vE3CF90Zd0Jpnjv3OwowcP5u1xuQxXM55lCeQJXQzwz58OM7UnhNpOFYmGI++FC/eMdvq6m9QCWJhxpIj9PgfD0rZ7wS2V9fdeQkJi5fmZnAwqaQFrqUr9zi2rgTWSyEwmGIsK4znQdbp9uYw6RqMcDFM3WSOAgYNIN+/VQhZ/UOVyy18tvLumo3qyPf0zC665SkfpeLK8yFOfA8DCtlj/zNaf85pLRdDNtnuXpKAOyX73bUTG40M2/ZzOou+Ugl7tQr/JwqYxFDsqe2OYU1pLQlpr3T+3SGPfoPxFoVucW9MoOsptI8kFmf51hc8Le5PZTemfQc0WFo/g8QwMJWqDcvy2eP8AkFU4uDDjt3E76/miz2dOlDmUEEz+E46Y2jJlcw13gzT0Td SUB7BoEg FKEfJjfZahTQDmYM4m6gaGIPmEGXNapr1J6w4GvQKpKMAEgl9m+jRPaB0eYG8U/YTdvkTGA7G99+mQjY= 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: According to the document linked the following approach is even faster than the one I used due to CPU parallelization: page[1].compound_nr = ( shift & ~shift) | (-order & shift); for(int x =0; x< 11;x++){ unsigned int order = x; unsigned long shift = 1U << order; printf("order %d output : %lu\n", order, ( shift & ~shift) | (-order & shift)); } order 0 output : 0 order 1 output : 2 order 2 output : 4 order 3 output : 8 order 4 output : 16 order 5 output : 32 order 6 output : 64 order 7 output : 128 order 8 output : 256 -- Nico On Tue, Dec 13, 2022 at 4:53 PM Nico Pache wrote: > > Hi Mike, > > Thanks for the pointer! Would the branchless conditional be an > improvement over the current approach? I'm not sure how hot this path > is, but it may be worth the optimization. > > -- Nico > > On Tue, Dec 13, 2022 at 4:48 PM Mike Kravetz wrote: > > > > On 12/13/22 16:45, Nico Pache wrote: > > > Since commit 1378a5ee451a ("mm: store compound_nr as well as > > > compound_order") the page[1].compound_nr must be explicitly set to 0 if > > > calling set_compound_order(page, 0). > > > > > > This can lead to bugs if the caller of set_compound_order(page, 0) forgets > > > to explicitly set compound_nr=0. An example of this is commit ba9c1201beaa > > > ("mm/hugetlb: clear compound_nr before freeing gigantic pages") > > > > There has been some recent work in this area. The latest patch being, > > https://lore.kernel.org/linux-mm/20221213212053.106058-1-sidhartha.kumar@oracle.com/ > > > > -- > > Mike Kravetz > >