From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by sourceware.org (Postfix) with ESMTPS id 1893438582B4; Thu, 29 Sep 2022 00:12:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1893438582B4 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-x535.google.com with SMTP id a13so4189671edj.0; Wed, 28 Sep 2022 17:12:01 -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=L49S9Py0yaYAROM+kwwNOH7uwzuD77u/YlLzjX3lLS0=; b=Bjy1BKqIB3y0bJ6D6QWtJ0SVT+VSr7/IA61xnFiJjO2QcRB5v4MF6BJt+ofdYJYtwe ShSVdNQOA2z4J1JdHTgg1GhoxXntya+5C3RoBgDDa1vdhkD56WtO7mvmhnbhqQHbbeSo o8Ij4/IGjpyTG4Lx8ldm6jLrx7B9fbM7n3aLmcU4TRaGSSkZ0a5ufISnwZVLKBi8B+nS fYLTpAj/plpVfF/nz4PnWgEy74ljhQtzlwrbMucrXMcW7m4o1ltgQzwziqqVViYk+5Ve khKBIHJzB7ca6CmAaiLEaN78pRa8qYSZ9db93It9tBuFFhwSkDKLJi88P1RUYfLApn7V vdUg== 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=L49S9Py0yaYAROM+kwwNOH7uwzuD77u/YlLzjX3lLS0=; b=qBdOSrT5D9eOpTXxHgLjwgY5URbjkjzxgjfhkce4haGj2W/emEIkys3364aCdCI957 VIPq+57tTg3c1ci5/cnHtEmhin+tG+KtLKXIH+5NiR9wSuHQOZ/7MT13EjavkBhRp7ka +VWTMqpHmoUOI4fGArBKCBCdt2mt9psvDHV0Vz9e0DL/bgWrZvl7t5IMr49rx42G7brF xtUoyFVHHQzsjz+niQa0LuI5hiD7vvcrbnzH8nVDZEHehYVBjZ+kvWZLMAXZcW9N/4M6 Oynpx0JQFG4LOEc7KOBaXJBoWQdmyOLuG6+1EN1RMatAXquB9h48VM5gpjSUQk/iYif1 5sog== X-Gm-Message-State: ACrzQf1Io46CPI1CPS3SMZV68hLa5Ip5d3jC9YK6/unq7luhnMORxDqM ZRTyR6Bw3AgpcEtMXPylL7i0mSC3rLr6sxZrMCo= X-Google-Smtp-Source: AMsMyM7VcVcDY38bAk/KvJXWhcFhrKx7NIVPKodBk1JUR/7VHrCN4ORfCHxHDG2Rj5lcNpF9R8L7jmqeROJoAetCIuw= X-Received: by 2002:a05:6402:43cc:b0:451:129e:1b1e with SMTP id p12-20020a05640243cc00b00451129e1b1emr596542edc.258.1664410320681; Wed, 28 Sep 2022 17:12:00 -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: Wed, 28 Sep 2022 20:11:49 -0400 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 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 4: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 Fine by me. > > Any comments/suggestions or objections on this. > > 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.