Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions .github/workflows/executeSkywalkingJava.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
name: Execution Check Skywalking-java
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: 0 */8 * * *

jobs:
build:
strategy:
matrix:
os:
- ubuntu-latest
java:
- 11
- 17
- 21
fail-fast: false
runs-on: ${{ matrix.os }}
name: Java ${{ matrix.java }} OS ${{ matrix.os }} sample
timeout-minutes: 15 # For check of functional runnability, 15 minutes should be more than sufficient, otherwise, developer should be notified
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-r@v2
with:
r-version: '3.5.3'
- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
- name: Run minimal parameter experiment and check success
run: |
./setup.sh
cd frameworks/Skywalking-java/
export SLEEP_TIME=0
export NUM_OF_LOOPS=1
export TOTAL_NUM_OF_CALLS=10
export RECURSION_DEPTH=10
./benchmark.sh
unzip results-Skywalking-java/results.zip
measuredValues=$(cat raw-1-10-* | wc -l)
if [ $measuredValues -ne 40 ]
then
echo "It should be 40 measured values, but was $measuredValues"
exit 1
fi

6 changes: 6 additions & 0 deletions frameworks/Skywalking-java/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
results-Skywalking-java/**
skywalking-*
apache-*
*.log
*.out

83 changes: 83 additions & 0 deletions frameworks/Skywalking-java/benchmark.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#!/bin/bash

#
# Skywalking benchmark script
#
# Usage: benchmark.sh

# configure base dir
BASE_DIR=$(cd "$(dirname "$0")"; pwd)
MAIN_DIR="${BASE_DIR}/../.."

#
# source functionality
#

if [ ! -d "${BASE_DIR}" ] ; then
echo "Base directory ${BASE_DIR} does not exist."
exit 1
fi

if [ -f "${MAIN_DIR}/init.sh" ] ; then
source "${MAIN_DIR}/init.sh"
else
echo "Missing library: ${MAIN_DIR}/init.sh"
exit 1
fi

if [ -z "$MOOBENCH_CONFIGURATIONS" ]
then
MOOBENCH_CONFIGURATIONS="0 1 2 3"
echo "Setting default configuration $MOOBENCH_CONFIGURATIONS"
fi
echo "Running configurations: $MOOBENCH_CONFIGURATIONS"

#
# Setup
#

info "----------------------------------"
info "Setup..."
info "----------------------------------"

cd "${BASE_DIR}"

# load agent
if [ ! -f $AGENT ]
then
getAgent
fi

cleanupResults
mkdir -p $RESULTS_DIR
PARENT=`dirname "${RESULTS_DIR}"`
checkDirectory result-base "${PARENT}"

checkFile skywalking-agent "${AGENT}"

checkExecutable java "${JAVA_BIN}"
checkExecutable moobench "${MOOBENCH_BIN}"
checkFile R-script "${RSCRIPT_PATH}"

showParameter

TIME=`expr ${METHOD_TIME} \* ${TOTAL_NUM_OF_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_OF_LOOPS} + ${SLEEP_TIME} \* 4 \* ${NUM_OF_LOOPS} \* ${RECURSION_DEPTH} + 50 \* ${TOTAL_NUM_OF_CALLS} / 1000000000 \* 4 \* ${RECURSION_DEPTH} \* ${NUM_OF_LOOPS} `
info "Experiment will take circa ${TIME} seconds."

# general server arguments -Xms1G -Xmx2G
JAVA_ARGS="-Xms1G -Xmx2G --add-opens java.base/jdk.internal.misc=ALL-UNNAMED"

declare -a SKYWALKING_CONFIG

SKYWALKING_CONFIG[0]="${JAVA_ARGS}"

SKYWALKING_CONFIG[1]="${SKYWALKING_CONFIG[0]} -javaagent:${AGENT} -Dskywalking.agent.service_name=moobench::MooBench -Dskywalking.plugin.customize.enhance_file=${BASE_DIR}/customize_config/customize_enhance.xml"

SKYWALKING_CONFIG[2]="${SKYWALKING_CONFIG[1]} -Dskywalking.agent.sample_n_per_3_secs=60"

SKYWALKING_CONFIG[3]="${SKYWALKING_CONFIG[0]} -javaagent:${AGENT} -Dskywalking.agent.service_name=moobench::MooBench -Dskywalking.plugin.customize.enhance_file=${BASE_DIR}/customize_config_dummy/customize_enhance.xml"

executeAllLoops

exit 0
# end
10 changes: 10 additions & 0 deletions frameworks/Skywalking-java/config.rc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
##
# MooBench configuration parameter

source ${MAIN_DIR}/config.rc

APP_CLASS="moobench.application.MonitoredClassSimple"

MORE_PARAMS="--application ${APP_CLASS} ${MORE_PARAMS}"

AGENT="${BASE_DIR}/skywalking-agent/skywalking-agent.jar"
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<enhanced>
<class class_name="moobench.application.MonitoredClassSimple">
<method method="monitoredMethod(long.class,int.class)" static="false"/>
</class>
</enhanced>
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<enhanced>
<class class_name="moobench.application.MonitoredClassSimple">
<method method="MonitoredClassSimple()" static="false"/>
</class>
</enhanced>
64 changes: 64 additions & 0 deletions frameworks/Skywalking-java/functions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Kieker specific functions

# ensure the script is sourced
if [ "${BASH_SOURCE[0]}" -ef "$0" ]
then
echo "Hey, you should source this script, not execute it!"
exit 1
fi


function getAgent {
mkdir "${BASE_DIR}/skywalking-agent"
cd "${BASE_DIR}"
wget https://dlcdn.apache.org/skywalking/java-agent/9.4.0/apache-skywalking-java-agent-9.4.0.tgz
tar -xvzf apache-skywalking-java-agent-9.4.0.tgz
cp "${BASE_DIR}/skywalking-agent/optional-plugins/apm-customize-enhance-plugin-9.4.0.jar" "${BASE_DIR}/skywalking-agent/plugins/"
wget https://dlcdn.apache.org/skywalking/10.1.0/apache-skywalking-apm-10.1.0.tar.gz
tar -xvzf apache-skywalking-apm-10.1.0.tar.gz
cd "${BASE_DIR}"
}

function startSkywalkingServer {
cd "${BASE_DIR}/apache-skywalking-apm-bin/bin"
./oapService.sh &
cd "${BASE_DIR}"
sleep 10
}

function stopSkywalkingServer {
pkill -f skywalking
sleep 3
}



function executeBenchmark {
for index in $MOOBENCH_CONFIGURATIONS
do
runExperiment $index
done
}


function runExperiment {
# No instrumentation
k=$1
info " # ${i}.$RECURSION_DEPTH.${k} ${TITLE[$k]}"
if [[ "$k" -gt 0 ]]
then
startSkywalkingServer
fi
export BENCHMARK_OPTS="${SKYWALKING_CONFIG[$k]}"
"${MOOBENCH_BIN}" \
--output-filename "${RAWFN}-${i}-$RECURSION_DEPTH-${k}.csv" \
--total-calls "${TOTAL_NUM_OF_CALLS}" \
--method-time "${METHOD_TIME}" \
--total-threads "${THREADS}" \
--recursion-depth "${RECURSION_DEPTH}" \
${MORE_PARAMS} &> "${RESULTS_DIR}/output_${i}_${RECURSION_DEPTH}_${k}.txt"
if [[ "$k" -gt 0 ]]
then
stopSkywalkingServer
fi
}
4 changes: 4 additions & 0 deletions frameworks/Skywalking-java/labels.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TITLE[0]="No instrumentation"
TITLE[1]="Skywalking instrumentation"
TITLE[2]="Skywalking 20Hz Sampling"
TITLE[3]="Skywalking no data collection"
Loading