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=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 A91ADC10DCE for ; Fri, 13 Mar 2020 06:52:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 736A92072C for ; Fri, 13 Mar 2020 06:52:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OL0++InP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726371AbgCMGwV (ORCPT ); Fri, 13 Mar 2020 02:52:21 -0400 Received: from mail-qk1-f196.google.com ([209.85.222.196]:45641 "EHLO mail-qk1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726364AbgCMGwU (ORCPT ); Fri, 13 Mar 2020 02:52:20 -0400 Received: by mail-qk1-f196.google.com with SMTP id c145so10788994qke.12; Thu, 12 Mar 2020 23:52:20 -0700 (PDT) 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; bh=xXfzwzuTUKaCEm/xC0r2pLq1q6cidFQU1IMonaCv1J0=; b=OL0++InP1Z0QUCIW7zrL755v1AC8CJ9ooYRyzhkM4U591sEpCE2F3grAodK5mBIAIg X1nM7yvEpAog1YRybeE7OfqBNTvbHMU/lfP1I6EtVxZItJgOl4wPjA1xClo1Gftsys09 NFIHR4WBvN3D9wdV4vszJdssY4ZO4VxGK3gZ7ZdEWs8mlH9xzqiYZTB0eN6FmVLfV3t5 BRHn7uPVt0qRB8HhtklC+nf3xP32NEkzn8iqhrW1X6hP3lttb0NESlzHPzXeNJELXpSa Y0RXZ3ySgqeVOuP2085+s9K9WlsJirJw8lPjEfeG9knr3x1xBZFXaskZE5Yan9YP0v8I erJQ== 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; bh=xXfzwzuTUKaCEm/xC0r2pLq1q6cidFQU1IMonaCv1J0=; b=uDFwBYj5p8nGmBIKsXTGB7HpmaNK07IeMUHXiSOsnyc9cDjHCh6wVT2DQL4Ke8nAc8 mWeT9wBa788w8LxkkZQzO9O1+wRr4RICijg8jtSVXuwJKdCKvYxO853j0nwa372rW4h2 mTrFhRiWQvAU7jm7h4FsN+MXtU3EFkAG1oXHm3Ss3z0xgD/wGQ2NxZKBKWVBj9ToX6wg ntr2T+cQ3UHyfY27rhv2nmyaDlVYz6ThkGt4bvKliLPxkkmV/M70nQJyfoP4YDRAxQKJ whyWt9hdAA5X/XWNvdwoOOpgD8HJv/P/pNJWdvrEA+NYYbWn6oFcesMV3zkU0bE2UO7z V91g== X-Gm-Message-State: ANhLgQ2oQuHWq5zgGJpwbNOEQN6G3EhATKlyel0VL9BL4geLZzVChXEQ pPR+wgfCFgVeH9XxyJSkZ8n7yDjWfdlqC+3XHaA= X-Google-Smtp-Source: ADFU+vvZp3kqWFbJ46iA2ECcE5rqSgO4Y/JDCjzRMKoIXwQb/chqo6MkPaYui/XQ3WXqadic0xyudDWIbGjIdBo1Y6I= X-Received: by 2002:a37:9104:: with SMTP id t4mr12032448qkd.449.1584082339833; Thu, 12 Mar 2020 23:52:19 -0700 (PDT) MIME-Version: 1.0 References: <20200313061837.3685572-1-andriin@fb.com> <20200313064521.se2sqpgkpd5ekmfo@ast-mbp> In-Reply-To: <20200313064521.se2sqpgkpd5ekmfo@ast-mbp> From: Andrii Nakryiko Date: Thu, 12 Mar 2020 23:52:08 -0700 Message-ID: Subject: Re: [PATCH bpf-next] selftests/bpf: fix usleep() implementation To: Alexei Starovoitov Cc: Andrii Nakryiko , bpf , Networking , Alexei Starovoitov , Daniel Borkmann , Kernel Team Content-Type: text/plain; charset="UTF-8" Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org On Thu, Mar 12, 2020 at 11:45 PM Alexei Starovoitov wrote: > > On Thu, Mar 12, 2020 at 11:18:37PM -0700, Andrii Nakryiko wrote: > > nanosleep syscall expects pointer to struct timespec, not nanoseconds > > directly. Current implementation fulfills its purpose of invoking nanosleep > > syscall, but doesn't really provide sleeping capabilities, which can cause > > flakiness for tests relying on usleep() to wait for something. > > > > Fixes: ec12a57b822c ("selftests/bpf: Guarantee that useep() calls nanosleep() syscall") > > Signed-off-by: Andrii Nakryiko > > --- > > tools/testing/selftests/bpf/test_progs.c | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c > > index 2b0bc1171c9c..b6201dd82edf 100644 > > --- a/tools/testing/selftests/bpf/test_progs.c > > +++ b/tools/testing/selftests/bpf/test_progs.c > > @@ -35,7 +35,16 @@ struct prog_test_def { > > */ > > int usleep(useconds_t usec) > > { > > - return syscall(__NR_nanosleep, usec * 1000UL); > > + struct timespec ts; > > + > > + if (usec > 999999) { > > + ts.tv_sec = usec / 1000000; > > + ts.tv_nsec = usec % 1000000; > > + } else { > > + ts.tv_sec = 0; > > + ts.tv_nsec = usec; > > + } > > + return nanosleep(&ts, NULL); > > } > > Is this a copy-paste from somewhere? nope, my very own prematurely optimized implementation :) > Above 'if' looks like premature optimization. > I applied it anyway, since it fixes flakiness in test_progs -n 24. > Now pin*tp* tests are stable. > Great, I hoped as much. > But the other one is still flaky: > server_thread:FAIL:237 > Failed to accept client: Resource temporarily unavailable > #64 tcp_rtt:FAIL > Note that if I run the test alone (test_progs -n 64) it is stable. > It fails only when run as part of bigger test_progs. > test_progs -n 30-64 sporadically fails (most of the time) > test_progs -n 40-64 consistently passes > Haven't bisected further. Okey, I'll get to it once I'm done fixing a bunch of other problems. Seems like tcp_rtt needs some more love, sigh... :(