From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f202.google.com (mail-dy1-f202.google.com [74.125.82.202]) (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 532BF373BEC for ; Tue, 16 Jun 2026 01:25:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781573146; cv=none; b=O27UewWCAjpAJm8LO0HLa+6vfX0O3vQ8yAyh7mo0wGevq4pNA0nTgHWoLSzHHlHewNgFfw/cPUFgNPFJ0RKekx/G59f5fHRypzX0iu5i1Uavte1y7UUjqTrW9zTolE770U7O76a2qM1YkcsQAojq/om1KjpGsFAez6N1Egj+8cg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781573146; c=relaxed/simple; bh=z8cj7+XJMmPVwLhmOKB6KQcaPO6wu+6KFYbI1UoOB7U=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=Hkze7LgIGtfXn3IsIgqw++EAh6s/33JlcrivF0vdqYSmJbp/7ExshYvq9PSTFR4pDZGUMchkQ0O4a14I3jQrYvUpF2lykBlmsbw13uINViUlB07D6LNCqeLdQtb04lFI8KktfOCC1CU8OvOm8LLkixJ5g6Ha0411lpr18pCEXY4= 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=f3qqFSJj; arc=none smtp.client-ip=74.125.82.202 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="f3qqFSJj" Received: by mail-dy1-f202.google.com with SMTP id 5a478bee46e88-30761ab3483so856701eec.0 for ; Mon, 15 Jun 2026 18:25:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1781573143; x=1782177943; 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=ybHAwnIeIr3M04cBqGgiNtZgO4DE4FyzgzXKD88uT88=; b=f3qqFSJj5z52+RAQOIqigYJgk0o5NOWbF1FwTGvlsx4dRTJtwgxVlMnUvgE99jrFHs f1SgljoZBUT8HAawjcoH31A1fmmjWH8rZXh4QwqAjTwzRLCKwQNLlX0u6LimItYQeVQj gM326jOXoOX0Fdmsq2m0gI49Txa2y0OkRoerlGr4xHL/yMfAucC4Zaky4V4GQcnReBlw udFxvWQm8wRW+JMet7nLdTOFeoACKwxlAYlnW4rSWI4T9+89uDkV9rH9SG/C+69AhuIV dhGRQ3hDOCJPfQQT45MiODkjXs0ueP21lagaFhJ/ShK2Xf2anewWOp8i2FNsak2SyKTe SLAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781573143; x=1782177943; 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=ybHAwnIeIr3M04cBqGgiNtZgO4DE4FyzgzXKD88uT88=; b=QkTJPj3zoYjvLgEaMYsvjtOXfkuNsPaodBmK9zVUQX2iqdlVn633oZiFTZpCQyvDJV 4sznz52B2R61yoc05FnxuqyC20iKrZDVoofj3xG0LtJtoiMaC86dfyAHkWPPpKus9EUf Z321niaeY5T/PaORYJxoRIRWaWjUM1M33AbfWunP7JjDaqJHLv1pysxKvuELMjB24Jyi MTaLFkNPDwulyuXXcYVSVRyRLcK01DeMTMfV6gIG0+Esb5yXQc+0c9UR4hv3GcuSQUou QBTlBLOT3c5AzgYznQNdRvJCyWlmDopnlnQ54EhcY36x4AZbMmSgSBcgEEG0CFqJJtKO XG+A== X-Forwarded-Encrypted: i=1; AFNElJ/Tw2MzG5QwRYXjolT5ibTLp2SdNZQq0XZKLW7oyocJI49nO8Qqb4DNNeZb3SaEzcVMA+578ksbV1cp2uU=@vger.kernel.org X-Gm-Message-State: AOJu0YxN1dPhkfly64dNmmj5KBlZAdD99UXYbCEiwL4y61tMq0TRauns XtQQ7FeZGk2hnGl14wUh6kqCGFfPpbIjqJDuAuBIMHwVFZU1sAVTF3U0oMNohPdaIvqwKK5U4cn +2PlDUBegLQ== 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:1907:b0:2d9:fa9c:87a9 with SMTP id 5a478bee46e88-30ba598cf1bmr1040059eec.5.1781573142826; Mon, 15 Jun 2026 18:25:42 -0700 (PDT) Date: Mon, 15 Jun 2026 18:25:12 -0700 In-Reply-To: <20260616012521.4045202-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: <20260616012521.4045202-1-irogers@google.com> X-Mailer: git-send-email 2.54.0.1136.gdb2ca164c4-goog Message-ID: <20260616012521.4045202-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 TAG=agy CONV=7e7ee33a-e940-4a8a-8e64-878da6a68b59 --- 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