From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f201.google.com (mail-dy1-f201.google.com [74.125.82.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BC53322C88 for ; Tue, 16 Jun 2026 01:27:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781573276; cv=none; b=fKm37wNnc2lXRsV0x9zc6BGNWFs1rUfFyuwtYalM4hsAykfXimKe4rA1zXRRO00EVpjfXURZOAcm3RjWiKQ8dws8+skmoeXJPfReheVCX0WAstZqFRgcNg4vDPbiADSgyEwVZ47PKGZpn0gyfLDvyOMKj/e7KYLeyBBnUvD5lRc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781573276; c=relaxed/simple; bh=sPYzRjbpTmYh6WnA/XVL9tykD0oj/aKMXc8GjK3UNnU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=BU+r1Wy9ES9J8jKGbQYzBlkEmZm4JYwhhY4ugmEHpnH2ObwCM2e2289L5MMcE6DIbRqwZc4VlA7fBLaQ6GAB1YGWCW0VCyO8yGOk4YGWjDWvqbP/71FGLsoPL1QQl6JBtgXNY/6pyhX8gWgnXbkPOJGKxhHa5m/oISi5S2xMPaE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Qp9CRwWe; arc=none smtp.client-ip=74.125.82.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Qp9CRwWe" Received: by mail-dy1-f201.google.com with SMTP id 5a478bee46e88-30761ab3483so865850eec.0 for ; Mon, 15 Jun 2026 18:27:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1781573275; x=1782178075; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=/0Xw2oqgt5kvzYUTl6pa4eK8iujXfqPpa8YiWPPWKQs=; b=Qp9CRwWeTT12DVNGqR3iwnW+r9xqmmBseI6I+EMQqOusCO455faNenYZyrxISpzt1n 03HStyXtQVOPU3mB2PwB/VgDCGHPEmfaPWEuto2LsQLpArLDox1oxB9FKbeuQEooI3UR J2pdslwafaxFCIe1JbWyQfBO3uJmxgiQf6Xl/MTZq788GjKUjdOgYIJeL1XKW7fgO4qP 0v4UuElVIdsfbzRIT5ICLdhWJjvzTXqK9a6xgUj5yDT3PExqdWqQHRh6AMoQq3ZPw1fG 6caJnxHouTRDfFn+lh7sB8KRqudE2bNC0BA8eiwDeKpizf7AeYoiunWguvaRfQdyMgRz A3QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781573275; x=1782178075; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/0Xw2oqgt5kvzYUTl6pa4eK8iujXfqPpa8YiWPPWKQs=; b=MAbWGYFlTZmyjXHE6Ho06BDNdqBDmoDYaeKdWCkdxk1fbW6op5z3XjclAd4VRU2SoG NmUkLGXKC2QXHh4BtF7wm8mqSOelBoW/jroqLofoeIj1C9L+v9Efsnz+XibhG+9n2x8g ytQk4jWNOYObNU6NNBn//SZP9soGl4iIMWfYCWAKJ8RBlvHmFO+TKK/T2t/VkWtWTVAF jiIwoH9c5TZKoFsX5jTB3FJRAiZqAmyFoHgZUgx7K96dlRL511OAU1ENh0nAHnZSrtHs l1z4ethXw6rIG1SCaoZTiJMI1b949HoYUnMKMn9EVZwZW4zC33MmkamQS6f6/staz6Cz S8BQ== X-Forwarded-Encrypted: i=1; AFNElJ/u42jnorKODOn/Me+TUZfxugmLYJ7zKG9Pvd4O/9X/kqsdgVgStTxSF5+YhdK53IAIE9T7vWGfoIG9ejU=@vger.kernel.org X-Gm-Message-State: AOJu0YwYT+wplKA8NocKV5BE8MZrtUln8oElfDj2O1cRRmaU1W3Q8ygV x8WQs7bVA4K9ya5xf52K2SaN91adhp2xQnCxkVDCx9hBRtmbjS0VdLvkcH0l/GaV0040wvOVViN fLaWV1SQ3Lg== X-Received: from dybtk5.prod.google.com ([2002:a05:7300:d945:b0:307:34ee:a27b]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:691e:b0:306:f474:7389 with SMTP id 5a478bee46e88-30ba5fe212amr970853eec.25.1781573274216; Mon, 15 Jun 2026 18:27:54 -0700 (PDT) Date: Mon, 15 Jun 2026 18:27:35 -0700 In-Reply-To: <20260616012744.4049193-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260616012744.4049193-1-irogers@google.com> X-Mailer: git-send-email 2.54.0.1136.gdb2ca164c4-goog Message-ID: <20260616012744.4049193-4-irogers@google.com> Subject: [PATCH v1 03/12] perf tests workloads: Support sub-second durations in noploop and thloop From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Thomas Falcon , Leo Yan , Thomas Richter , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Currently, the noploop and thloop workloads only support sleep durations in integer seconds because they parse the argument using atoi() and use alarm() for timer signaling. To support much shorter execution times in tests (speeding up test suites and allowing faster retries), change the input parsing to use atof() for double floating-point seconds. Use ualarm() for fractional durations less than 1.0 seconds, and fall back to alarm() for durations of 1.0 second or more. Signed-off-by: Ian Rogers --- tools/perf/tests/workloads/noploop.c | 15 ++++++++++++--- tools/perf/tests/workloads/thloop.c | 14 +++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/tools/perf/tests/workloads/noploop.c b/tools/perf/tests/workloads/noploop.c index 656e472e6188..3fcba5ceaa3d 100644 --- a/tools/perf/tests/workloads/noploop.c +++ b/tools/perf/tests/workloads/noploop.c @@ -15,15 +15,24 @@ static void sighandler(int sig __maybe_unused) static int noploop(int argc, const char **argv) { - int sec = 1; + double sec = 1.0; pthread_setname_np(pthread_self(), "perf-noploop"); if (argc > 0) - sec = atoi(argv[0]); + sec = atof(argv[0]); + + if (sec <= 0.0) { + fprintf(stderr, "Error: seconds (%f) must be > 0\n", sec); + return 1; + } signal(SIGINT, sighandler); signal(SIGALRM, sighandler); - alarm(sec); + + if (sec < 1.0) + ualarm((useconds_t)(sec * 1000000.0), 0); + else + alarm((unsigned int)sec); while (!done) continue; diff --git a/tools/perf/tests/workloads/thloop.c b/tools/perf/tests/workloads/thloop.c index bd8168f883fb..bed3047fe9c2 100644 --- a/tools/perf/tests/workloads/thloop.c +++ b/tools/perf/tests/workloads/thloop.c @@ -31,14 +31,15 @@ static void *thfunc(void *arg) static int thloop(int argc, const char **argv) { - int nt = 2, sec = 1, err = 1; + int nt = 2, err = 1; + double sec = 1.0; pthread_t *thread_list = NULL; if (argc > 0) - sec = atoi(argv[0]); + sec = atof(argv[0]); - if (sec <= 0) { - fprintf(stderr, "Error: seconds (%d) must be >= 1\n", sec); + if (sec <= 0.0) { + fprintf(stderr, "Error: seconds (%f) must be > 0\n", sec); return 1; } @@ -67,7 +68,10 @@ static int thloop(int argc, const char **argv) goto out; } } - alarm(sec); + if (sec < 1.0) + ualarm((useconds_t)(sec * 1000000.0), 0); + else + alarm((unsigned int)sec); test_loop(); err = 0; out: -- 2.54.0.1136.gdb2ca164c4-goog