From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by sourceware.org (Postfix) with ESMTPS id DE69C38515D4; Wed, 14 Sep 2022 01:26:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DE69C38515D4 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-x530.google.com with SMTP id x94so2729028ede.11; Tue, 13 Sep 2022 18:26:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date; bh=4n2mnoJBeccOfh7CvXscmrdKzxJFiRtpm28T8jmzzwU=; b=Xjex0WP0bkUR2yqRdgAQHur1mW0GOe5GIAXSZWy0iymd2qOfq4Gwq/TjLpH7V5+hcW HXls6s9iDn9vhzj6jt+V16b7VXjKSYL9vWV9tSJrbrJUigzSDB43k/M/gEfT3AdGeSDa 5+0yhpo+pFSQd/QX2PO80nUZpj25jFWpUPFYl8IG8Liztc10qjx2BgBLGWZJdS9d2GZ4 uvB8/CZ4KQ27I4v//9ZbN0oK6IKsdW4DWLPv3cxZCCIgvK8Y22qtgNkWr+jBgXOQGSRT ldmfx/FuoiYwTB/JwJbc1FE6gZyOEmIGlccRL0HXCyODY/vcUtmlDAqu2YVAHyE9iFyp /mqw== 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; bh=4n2mnoJBeccOfh7CvXscmrdKzxJFiRtpm28T8jmzzwU=; b=XrHbUc6MH8f3BJ72a26JjzGP+O5M+ARIk2hEBV3znAsHHteH35nQ70Oz2ZTmVDG0du UHoQACIHjhDf3X5SJyamdMDXZBb8MPLAO2M23NmC2IFQBdL+ffDds3SsrWItf330RA5L DnukNLvnd+lKZkeBX0hsnAJhtfNbAmy9dovRUFwL38K+7mpfeP5EzOk5GY66ST4hA3ax 1B8TWahczS/YKk2gJCriUxDxl/5++BVcKOPtYlrkxc33MvJ79C/TmW/vrt+ljbqi0/oA /cQ15bzv5S6unu+cVq3If532kV5+lD+Q/4dpxUQ47Xwzs6wZqbQl8muGMM42vX/nU+5d YhoQ== X-Gm-Message-State: ACgBeo13e3bBJkdjX6ncxzPoGoTxgtXuZp0xGMyGRMdYArpQiTImJqdR QMgqBgOVrmp42+8cmPlqczTuzGLB6Q/VMYnwLul03+6V X-Google-Smtp-Source: AA6agR7WjxKIRsSojjI8uQBK2VHumAdGZY6MpTteU+GvNRuVgKrwrGAG2FZJDCViKT0JDx07sjs+PbuEYJgl4HN8pow= X-Received: by 2002:a05:6402:378f:b0:43a:d3f5:79f2 with SMTP id et15-20020a056402378f00b0043ad3f579f2mr28618780edb.338.1663118788648; Tue, 13 Sep 2022 18:26:28 -0700 (PDT) MIME-Version: 1.0 References: <20220404213942.652799-1-goldstein.w.n@gmail.com> <20220427201302.2525203-1-goldstein.w.n@gmail.com> In-Reply-To: From: Noah Goldstein Date: Tue, 13 Sep 2022 18:26:17 -0700 Message-ID: Subject: Re: [PATCH v2] sysdeps: Add 'get_fast_jitter' interace in fast-jitter.h To: Sunil Pandey Cc: "H.J. Lu" , Libc-stable Mailing List , Florian Weimer , GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Sun, Sep 11, 2022 at 1:27 PM Sunil Pandey wrote: > > On Wed, Apr 27, 2022 at 1:47 PM H.J. Lu via Libc-alpha > wrote: > > > > On Wed, Apr 27, 2022 at 1:13 PM Noah Goldstein wrote: > > > > > > 'get_fast_jitter' is meant to be used purely for performance > > > purposes. In all cases it's used it should be acceptable to get no > > > randomness (see default case). An example use case is in setting > > > jitter for retries between threads at a lock. There is a > > > performance benefit to having jitter, but only if the jitter can > > > be generated very quickly and ultimately there is no serious issue > > > if no jitter is generated. > > > > > > The implementation generally uses 'HP_TIMING_NOW' iff it is > > > inlined (avoid any potential syscall paths). > > > --- > > > sysdeps/generic/fast-jitter.h | 42 +++++++++++++++++++++++++++++++++++ > > > 1 file changed, 42 insertions(+) > > > create mode 100644 sysdeps/generic/fast-jitter.h > > > > > > diff --git a/sysdeps/generic/fast-jitter.h b/sysdeps/generic/fast-jitter.h > > > new file mode 100644 > > > index 0000000000..4dd53e3475 > > > --- /dev/null > > > +++ b/sysdeps/generic/fast-jitter.h > > > @@ -0,0 +1,42 @@ > > > +/* Fallback for fast jitter just return 0. > > > + Copyright (C) 2019-2022 Free Software Foundation, Inc. > > > + This file is part of the GNU C Library. > > > + > > > + The GNU C Library is free software; you can redistribute it and/or > > > + modify it under the terms of the GNU Lesser General Public > > > + License as published by the Free Software Foundation; either > > > + version 2.1 of the License, or (at your option) any later version. > > > + > > > + The GNU C Library is distributed in the hope that it will be useful, > > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > > + Lesser General Public License for more details. > > > + > > > + You should have received a copy of the GNU Lesser General Public > > > + License along with the GNU C Library; if not, see > > > + . */ > > > + > > > +#ifndef _FAST_JITTER_H > > > +# define _FAST_JITTER_H > > > + > > > +# include > > > +# include > > > + > > > +/* Baseline just return 0. We could create jitter using a clock or > > > + 'random_bits' but that may imply a syscall and the goal of > > > + 'get_fast_jitter' is minimal overhead "randomness" when such > > > + randomness helps performance. Adding high overhead the function > > > + defeats the purpose. */ > > > +static inline uint32_t > > > +get_fast_jitter (void) > > > +{ > > > +# if HP_TIMING_INLINE > > > + hp_timing_t jitter; > > > + HP_TIMING_NOW (jitter); > > > + return (uint32_t) jitter; > > > +# else > > > + return 0; > > > +# endif > > > +} > > > + > > > +#endif > > > -- > > > 2.25.1 > > > > > > > LGTM. An arch can provide a better one if needed. > > > > Reviewed-by: H.J. Lu > > > > Thanks. > > > > -- > > H.J. > > I would like to backport this patch to release branch 2.33, 2.34 and 2.35 > > Any comments/suggestions or objections on this. Fine by me. > > commit 911c63a51c690dd1a97dfc587097277029baf00f > Author: Noah Goldstein > Date: Wed Apr 27 15:13:02 2022 -0500 > > sysdeps: Add 'get_fast_jitter' interace in fast-jitter.h > > 'get_fast_jitter' is meant to be used purely for performance > purposes. In all cases it's used it should be acceptable to get no > randomness (see default case). An example use case is in setting > jitter for retries between threads at a lock. There is a > performance benefit to having jitter, but only if the jitter can > be generated very quickly and ultimately there is no serious issue > if no jitter is generated.