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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95554C32771 for ; Sun, 25 Sep 2022 02:59:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229674AbiIYC7V (ORCPT ); Sat, 24 Sep 2022 22:59:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229554AbiIYC7S (ORCPT ); Sat, 24 Sep 2022 22:59:18 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C61954455D for ; Sat, 24 Sep 2022 19:59:16 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id fs14so3414786pjb.5 for ; Sat, 24 Sep 2022 19:59:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=HwTvvHaQnXpVhdRORP97NwmhkzDfJTDDIupOGVxMbjo=; b=ZgBaza0msnPIVY09tayTWp+QQjlETTmQwJmOgr/CoS/qSoEXAQGJaYLH9aKt0W8XnK X8ypRlrYJQSviDFPkquHh3b1tnswjp4PiSrQP2CBgGCNZ0XcZHM0JqyXyO/59G9XYp9j nksqrEsSIa+5P6kL/7JoW7w+vBq1eNfkxIR55aahKhie0BVPPk7Xq+pCK4ERuO54Hf9H nNZC3/dtWP6LWaIqTSgH9P+jagKaByr9iR/bSDiSBXIaN9aIY37tXML+I9C8hT+J5NeN HnY7celDq/AtLnfWNs2G7HSUsJ8eb7eTZ1Rb7LHRhSzWXfQ7lpsEBVHwaMbbXKGUpZH7 UQYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=HwTvvHaQnXpVhdRORP97NwmhkzDfJTDDIupOGVxMbjo=; b=q9TFSQo/n/ZcvS+heWfbtoqQ7doo3Ihw7ufzU4EgiSNCg0/sacv0ftl6t/Q0ZCyBAM 4gWf/BIFKLdc1+YDL2X6BlXAmgxf9pLjNyLCnQ0buwUFZ/5uIzhJ1Qo9pwfRIWlBIOQn Zw+s/BH/aak5Xqy5QzmHyyMIMUm8O6RciSaZ6u6RlSGNziWID0lEt9f5/PWg3s0azPsp aZuJBAJoEDbpfb3N80b67Fdyvbfaohsy+kUqRjd3q2oyAlvITjv3CS0yWUYy6S1rdeR1 EcldsfIPHLaZZ93sGgOMMleBxRFncdd8Q0d8ddq4wwRsmdLPIhvJLgH/hXo9MbJ1XoKv Cs6w== X-Gm-Message-State: ACrzQf00XEpvJfRvUVVs2GtGk7lh8Wp8EQ9hZ1JzQ1ASu8FmxucdCLSs VKLv8sh7v1VJWVWOqjj8laEIww== X-Google-Smtp-Source: AMsMyM5lJ5Qlh7efWt9kQk8UedtdV39ouMD6V7ZF6S46Zp1jz8tt/NpLLrSnxcjhT9vtw/bU0Zx0Cw== X-Received: by 2002:a17:90a:ce82:b0:200:aca2:5a19 with SMTP id g2-20020a17090ace8200b00200aca25a19mr29655101pju.156.1664074756070; Sat, 24 Sep 2022 19:59:16 -0700 (PDT) Received: from leoy-huanghe.lan ([137.184.34.254]) by smtp.gmail.com with ESMTPSA id z11-20020a170903018b00b0016bf5557690sm8409198plg.4.2022.09.24.19.59.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Sep 2022 19:59:15 -0700 (PDT) From: Leo Yan To: Arnaldo Carvalho de Melo , Jiri Olsa , Namhyung Kim , Ian Rogers , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Cc: Leo Yan Subject: [PATCH v3 2/2] perf test: Introduce script for java symbol testing Date: Sun, 25 Sep 2022 10:58:35 +0800 Message-Id: <20220925025835.70364-3-leo.yan@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220925025835.70364-1-leo.yan@linaro.org> References: <20220925025835.70364-1-leo.yan@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org This commit introduces a script for testing java symbols. The test records java program, inject samples with JIT samples, check specific JIT symbols in the report, the test will pass only when these two symbols are detected. Suggested-by: Ian Rogers Signed-off-by: Leo Yan --- tools/perf/tests/shell/test_java_symbol.sh | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100755 tools/perf/tests/shell/test_java_symbol.sh diff --git a/tools/perf/tests/shell/test_java_symbol.sh b/tools/perf/tests/shell/test_java_symbol.sh new file mode 100755 index 000000000000..f221225808a3 --- /dev/null +++ b/tools/perf/tests/shell/test_java_symbol.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# Test java symbol + +# SPDX-License-Identifier: GPL-2.0 +# Leo Yan , 2022 + +# skip if there's no jshell +if ! [ -x "$(command -v jshell)" ]; then + echo "skip: no jshell, install JDK" + exit 2 +fi + +PERF_DATA=$(mktemp /tmp/__perf_test.perf.data.XXXXX) +PERF_INJ_DATA=$(mktemp /tmp/__perf_test.perf.data.inj.XXXXX) + +cleanup_files() +{ + echo "Cleaning up files..." + rm -f ${PERF_DATA} + rm -f ${PERF_INJ_DATA} +} + +trap cleanup_files exit term int + +if [ -e "$PWD/tools/perf/libperf-jvmti.so" ]; then + LIBJVMTI=$PWD/tools/perf/libperf-jvmti.so +elif [ -e "$PWD/libperf-jvmti.so" ]; then + LIBJVMTI=$PWD/libperf-jvmti.so +elif [ -e "$PREFIX/lib64/libperf-jvmti.so" ]; then + LIBJVMTI=$PREFIX/lib64/libperf-jvmti.so +elif [ -e "$PREFIX/lib/libperf-jvmti.so" ]; then + LIBJVMTI=$PREFIX/lib/libperf-jvmti.so +elif [ -e "/usr/lib/linux-tools-$(uname -a | awk '{ print $3 }' | sed -r 's/-generic//')/libperf-jvmti.so" ]; then + LIBJVMTI=/usr/lib/linux-tools-$(uname -a | awk '{ print $3 }' | sed -r 's/-generic//')/libperf-jvmti.so +else + echo "Fail to find libperf-jvmti.so" + # JVMTI is a build option, skip the test if fail to find lib + exit 2 +fi + +cat < 1 ? fib(x - 2) + fib(x - 1) : 1; +} + +int q = 0; + +for (int i = 0; i < 10; i++) + q += fib(i); + +System.out.println(q); +EOF + +if [ $? -ne 0 ]; then + echo "Fail to record for java program" + exit 1 +fi + +if ! perf inject -i $PERF_DATA -o $PERF_INJ_DATA -j; then + echo "Fail to inject samples" + exit 1 +fi + +# Below is an example of the instruction samples reporting: +# 8.18% jshell jitted-50116-29.so [.] Interpreter +# 0.75% Thread-1 jitted-83602-1670.so [.] jdk.internal.jimage.BasicImageReader.getString(int) +perf report --stdio -i ${PERF_INJ_DATA} 2>&1 | \ + egrep " +[0-9]+\.[0-9]+% .* (Interpreter|jdk\.internal).*" > /dev/null 2>&1 + +if [ $? -ne 0 ]; then + echo "Fail to find java symbols" + exit 1 +fi + +exit 0 -- 2.34.1