From nobody Fri Apr 3 11:10:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D74E8C6FA8A for ; Wed, 14 Sep 2022 08:02:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230308AbiINICf (ORCPT ); Wed, 14 Sep 2022 04:02:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230131AbiINICV (ORCPT ); Wed, 14 Sep 2022 04:02:21 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 225D26FA1A for ; Wed, 14 Sep 2022 01:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663142527; x=1694678527; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=jhBWGlbhd5gPIoylYCvWgDTpWF0L57HGp6RbsVQBl2U=; b=QXTrJCqGhkI5mWElphx7cZLiNNVdFG3g5SXXd52PIfLqFccPxpKgTQiu L+3lsiylhbQmTr6od7GM0KnRW1OyoVGXbDfRrF1UltS++jNOsbqRrvqpD 5jZ//KDDhGsdFKk/2fz+fuYZNjIcf89JAC5zp3P94GtgmlsLNTX5VrWrr y3ZUtWXmbA8OGCwzJQtjLi60BATYLqzapAiABW5wogGWyPFw0A1mcS5jt rWGm6OUGxsuPeKYknWBZPlnP/LmVfT0h3p57n+u0Krfa7XCiC2I0SKQg6 pGL92j04CpJdtpZe1s9KI4tsp+vresgqXgWQdHDYyFd9jysNnb6slBJrK w==; X-IronPort-AV: E=McAfee;i="6500,9779,10469"; a="295953248" X-IronPort-AV: E=Sophos;i="5.93,315,1654585200"; d="scan'208";a="295953248" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2022 01:02:05 -0700 X-IronPort-AV: E=Sophos;i="5.93,315,1654585200"; d="scan'208";a="678942497" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.32.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2022 01:02:04 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Namhyung Kim , Ian Rogers , linux-kernel@vger.kernel.org Subject: [PATCH 1/2] perf test: test_intel_pt.sh: Move helper functions for waiting Date: Wed, 14 Sep 2022 11:01:49 +0300 Message-Id: <20220914080150.5888-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220914080150.5888-1-adrian.hunter@intel.com> References: <20220914080150.5888-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Move helper functions for waiting to a separate file so they can be shared. Signed-off-by: Adrian Hunter Acked-by: Namhyung Kim --- tools/perf/tests/shell/lib/waiting.sh | 69 +++++++++++++++++++++++++ tools/perf/tests/shell/test_intel_pt.sh | 68 ++---------------------- 2 files changed, 73 insertions(+), 64 deletions(-) create mode 100644 tools/perf/tests/shell/lib/waiting.sh diff --git a/tools/perf/tests/shell/lib/waiting.sh b/tools/perf/tests/shell= /lib/waiting.sh new file mode 100644 index 000000000000..dbd5bd90105e --- /dev/null +++ b/tools/perf/tests/shell/lib/waiting.sh @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: GPL-2.0 + +tenths=3Ddate\ +%s%1N + +# Wait for PID $1 to have $2 number of threads started +wait_for_threads() +{ + start_time=3D$($tenths) + while [ -e "/proc/$1/task" ] ; do + th_cnt=3D$(find "/proc/$1/task" -mindepth 1 -maxdepth 1 -printf x | wc -= c) + if [ "${th_cnt}" -ge "$2" ] ; then + return 0 + fi + # Wait at most 5 seconds + if [ $(($($tenths) - start_time)) -ge 50 ] ; then + echo "PID $1 does not have $2 threads" + return 1 + fi + done + return 1 +} + +# Wait for perf record -vvv 2>$2 with PID $1 to start by looking at file $2 +# It depends on capturing perf record debug message "perf record has start= ed" +wait_for_perf_to_start() +{ + echo "Waiting for \"perf record has started\" message" + start_time=3D$($tenths) + while [ -e "/proc/$1" ] ; do + if grep -q "perf record has started" "$2" ; then + echo OK + break + fi + # Wait at most 5 seconds + if [ $(($($tenths) - start_time)) -ge 50 ] ; then + echo "perf recording did not start" + return 1 + fi + done + return 0 +} + +# Wait for process PID %1 to exit +wait_for_process_to_exit() +{ + start_time=3D$($tenths) + while [ -e "/proc/$1" ] ; do + # Wait at most 5 seconds + if [ $(($($tenths) - start_time)) -ge 50 ] ; then + echo "PID $1 did not exit as expected" + return 1 + fi + done + return 0 +} + +# Check if PID $1 is still running after 0.3 seconds +is_running() +{ + start_time=3D$($tenths) + while [ -e "/proc/$1" ] ; do + # Check for at least 0.3s + if [ $(($($tenths) - start_time)) -gt 3 ] ; then + return 0 + fi + done + echo "PID $1 exited prematurely" + return 1 +} diff --git a/tools/perf/tests/shell/test_intel_pt.sh b/tools/perf/tests/she= ll/test_intel_pt.sh index 051d088c1b74..efaad9566c34 100755 --- a/tools/perf/tests/shell/test_intel_pt.sh +++ b/tools/perf/tests/shell/test_intel_pt.sh @@ -4,11 +4,12 @@ =20 set -e =20 -tenths=3Ddate\ +%s%1N - # Skip if no Intel PT perf list | grep -q 'intel_pt//' || exit 2 =20 +shelldir=3D$(dirname "$0") +. "${shelldir}"/lib/waiting.sh + skip_cnt=3D0 ok_cnt=3D0 err_cnt=3D0 @@ -112,67 +113,6 @@ can_kernel() return 0 } =20 -wait_for_threads() -{ - start_time=3D$($tenths) - while [ -e "/proc/$1/task" ] ; do - th_cnt=3D$(find "/proc/$1/task" -mindepth 1 -maxdepth 1 -printf x | wc -= c) - if [ "${th_cnt}" -ge "$2" ] ; then - return 0 - fi - # Wait at most 5 seconds - if [ $(($($tenths) - start_time)) -ge 50 ] ; then - echo "PID $1 does not have $2 threads" - return 1 - fi - done - return 1 -} - -wait_for_perf_to_start() -{ - echo "Waiting for \"perf record has started\" message" - start_time=3D$($tenths) - while [ -e "/proc/$1" ] ; do - if grep -q "perf record has started" "${errfile}" ; then - echo OK - break - fi - # Wait at most 5 seconds - if [ $(($($tenths) - start_time)) -ge 50 ] ; then - echo "perf recording did not start" - return 1 - fi - done - return 0 -} - -wait_for_process_to_exit() -{ - start_time=3D$($tenths) - while [ -e "/proc/$1" ] ; do - # Wait at most 5 seconds - if [ $(($($tenths) - start_time)) -ge 50 ] ; then - echo "PID $1 did not exit as expected" - return 1 - fi - done - return 0 -} - -is_running() -{ - start_time=3D$($tenths) - while [ -e "/proc/$1" ] ; do - # Check for at least 0.3s - if [ $(($($tenths) - start_time)) -gt 3 ] ; then - return 0 - fi - done - echo "PID $1 exited prematurely" - return 1 -} - test_per_thread() { k=3D"$1" @@ -298,7 +238,7 @@ test_per_thread() perf record -B -N --no-bpf-event -o "${perfdatafile}" -e intel_pt//u"${k}= " -vvv --per-thread -p "${w1},${w2}" 2>"${errfile}" >"${outfile}" & ppid=3D$! echo "perf PID is $ppid" - wait_for_perf_to_start ${ppid} || return 1 + wait_for_perf_to_start ${ppid} "${errfile}" || return 1 =20 kill ${w1} wait_for_process_to_exit ${w1} || return 1 --=20 2.25.1 From nobody Fri Apr 3 11:10:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D216AECAAD8 for ; Wed, 14 Sep 2022 08:03:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230333AbiINIDO (ORCPT ); Wed, 14 Sep 2022 04:03:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230205AbiINICb (ORCPT ); Wed, 14 Sep 2022 04:02:31 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCFAE72FDE for ; Wed, 14 Sep 2022 01:02:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663142529; x=1694678529; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sYDk3njobQPmmB4ASleMB/Ig33xRGDX/XnXmi4n6FGg=; b=ngViOJf78NWAUP+FiTNRyKRPCQKNpAfDDZedL5W8T6fJiz+wdSzcwMoB pZUkWbLmeUm0RO59V6kNudRIoHxa3i0keGx06pEXlGMyluKIk8pFDIdP6 jClGCzC8BQZKxBgOix4ZSUf0HnnYSMAnWZPILsoz+wF7MWwY1FkyJbE8o a3VmWu/ZKyzjABDiTDKB5Ibewv76fJCAimWqvbndRsNaju3kJmsU1n4fd 8uTsEY1EANYWSAFO2D39aosC4M8zojiEqzVDL5P//JEn8WdsANIl2ITJ7 t6xpaaJ4XVcS8MxgrcoQHajy61vLBws2Q0knwlmsSkWJC19pFi7bXN8Xo g==; X-IronPort-AV: E=McAfee;i="6500,9779,10469"; a="295953256" X-IronPort-AV: E=Sophos;i="5.93,315,1654585200"; d="scan'208";a="295953256" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2022 01:02:07 -0700 X-IronPort-AV: E=Sophos;i="5.93,315,1654585200"; d="scan'208";a="678942523" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.32.55]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2022 01:02:05 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Namhyung Kim , Ian Rogers , linux-kernel@vger.kernel.org Subject: [PATCH 2/2] perf test: waiting.sh: Parameterize timeouts Date: Wed, 14 Sep 2022 11:01:50 +0300 Message-Id: <20220914080150.5888-3-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220914080150.5888-1-adrian.hunter@intel.com> References: <20220914080150.5888-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Let helper functions accept a parameter to specify time out values in tenths of a second. Signed-off-by: Adrian Hunter Acked-by: Namhyung Kim --- tools/perf/tests/shell/lib/waiting.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tools/perf/tests/shell/lib/waiting.sh b/tools/perf/tests/shell= /lib/waiting.sh index dbd5bd90105e..e7a39134a68e 100644 --- a/tools/perf/tests/shell/lib/waiting.sh +++ b/tools/perf/tests/shell/lib/waiting.sh @@ -3,16 +3,18 @@ tenths=3Ddate\ +%s%1N =20 # Wait for PID $1 to have $2 number of threads started +# Time out after $3 tenths of a second or 5 seconds if $3 is "" wait_for_threads() { + tm_out=3D$3 ; [ -n "${tm_out}" ] || tm_out=3D50 start_time=3D$($tenths) while [ -e "/proc/$1/task" ] ; do th_cnt=3D$(find "/proc/$1/task" -mindepth 1 -maxdepth 1 -printf x | wc -= c) if [ "${th_cnt}" -ge "$2" ] ; then return 0 fi - # Wait at most 5 seconds - if [ $(($($tenths) - start_time)) -ge 50 ] ; then + # Wait at most tm_out tenths of a second + if [ $(($($tenths) - start_time)) -ge $tm_out ] ; then echo "PID $1 does not have $2 threads" return 1 fi @@ -22,8 +24,10 @@ wait_for_threads() =20 # Wait for perf record -vvv 2>$2 with PID $1 to start by looking at file $2 # It depends on capturing perf record debug message "perf record has start= ed" +# Time out after $3 tenths of a second or 5 seconds if $3 is "" wait_for_perf_to_start() { + tm_out=3D$3 ; [ -n "${tm_out}" ] || tm_out=3D50 echo "Waiting for \"perf record has started\" message" start_time=3D$($tenths) while [ -e "/proc/$1" ] ; do @@ -31,8 +35,8 @@ wait_for_perf_to_start() echo OK break fi - # Wait at most 5 seconds - if [ $(($($tenths) - start_time)) -ge 50 ] ; then + # Wait at most tm_out tenths of a second + if [ $(($($tenths) - start_time)) -ge $tm_out ] ; then echo "perf recording did not start" return 1 fi @@ -41,12 +45,14 @@ wait_for_perf_to_start() } =20 # Wait for process PID %1 to exit +# Time out after $2 tenths of a second or 5 seconds if $2 is "" wait_for_process_to_exit() { + tm_out=3D$2 ; [ -n "${tm_out}" ] || tm_out=3D50 start_time=3D$($tenths) while [ -e "/proc/$1" ] ; do - # Wait at most 5 seconds - if [ $(($($tenths) - start_time)) -ge 50 ] ; then + # Wait at most tm_out tenths of a second + if [ $(($($tenths) - start_time)) -ge $tm_out ] ; then echo "PID $1 did not exit as expected" return 1 fi @@ -54,13 +60,15 @@ wait_for_process_to_exit() return 0 } =20 -# Check if PID $1 is still running after 0.3 seconds +# Check if PID $1 is still running after $2 tenths of a second +# or 0.3 seconds if $2 is "" is_running() { + tm_out=3D$2 ; [ -n "${tm_out}" ] || tm_out=3D3 start_time=3D$($tenths) while [ -e "/proc/$1" ] ; do - # Check for at least 0.3s - if [ $(($($tenths) - start_time)) -gt 3 ] ; then + # Check for at least tm_out tenths of a second + if [ $(($($tenths) - start_time)) -gt $tm_out ] ; then return 0 fi done --=20 2.25.1