Skip to content

Commit 0233622

Browse files
committed
Adding benchmarks
1 parent 72a3690 commit 0233622

17 files changed

Lines changed: 1077 additions & 1 deletion
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: async-profiler #https://github.com/apangin/async-profiler.git
2+
scripts:
3+
async-profiler-configure:
4+
- read-state: ${{os}}
5+
then:
6+
- regex: linux
7+
then:
8+
- sh: sudo sh -c "echo 1 > /proc/sys/kernel/perf_event_paranoid"
9+
- sh: sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict"
10+
11+
# downloads the latest async-profiler release to ${{BASE_DIR}}/${{ASYNC_PROFILER}}
12+
download-unpack-async-profiler:
13+
- read-state: ${{os}}
14+
then:
15+
- regex: linux
16+
then:
17+
- set-state: platform linux-x64
18+
- set-state: filesuffix .tar.gz
19+
- set-state: unpack_command tar xvf
20+
else:
21+
- set-state: platform macos
22+
- set-state: filesuffix .zip
23+
- set-state: unpack_command unzip
24+
- sh: curl -L -o ${{ASYNC_PROFILER}}${{filesuffix}} $(curl -s -L https://api.github.com/repos/${{ASYNC_PROFILER}}/${{ASYNC_PROFILER}}/releases/latest | jq -r '.assets[] | select(.name | contains ("${{platform}}${{filesuffix}}")) | .browser_download_url') 2>/dev/null
25+
- sh: ${{unpack_command}} ${{ASYNC_PROFILER}}${{filesuffix}}
26+
then:
27+
- regex: (?<subDir>^[^/]+)/
28+
then:
29+
- sh: mv ${{subDir}}/ ${{ASYNC_PROFILER}}
30+
31+
async-profiler-install:
32+
- sh: if test -d ${{ASYNC_PROFILER_DIR}} ; then rm -rf ${{ASYNC_PROFILER_DIR}}; fi
33+
- sh: cd ${{BASE_DIR}}
34+
- script: download-unpack-async-profiler
35+
36+
#waits for ${{WAIT_START}} then ${{DELAY}}, creates a profile using the configured parameters then downloads it immediately
37+
#works with 3.x, not 2.x
38+
async-profiler-run:
39+
- sh: cd ${{ASYNC_PROFILER_DIR}}
40+
- wait-for: ${{wait_start:}} # don't wait by default
41+
- sleep: ${{delay:0}}
42+
- sh: >
43+
bin/asprof
44+
-d ${{duration__10}}
45+
-f /tmp/flamegraph.${{suffix__html}}
46+
-o ${{format__flamegraph}}
47+
-e ${{events__cpu}}
48+
${{="${{enableTotal __ }}".toLowerCase() == "true" ? "--total" : ""}}
49+
--title ${{title__async-profiler}}
50+
${{pid}}
51+
separator: __
52+
- download: /tmp/flamegraph.${{suffix:html}}

benchmarks/helpers/cgroups.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: cgroups related scripts
2+
scripts:
3+
join-cgroup:
4+
- set-signal: CGROUP_${{CGROUP_NAME:perf-cgroup}}_SET 1
5+
- wait-for: CGROUP_${{CGROUP_NAME:perf-cgroup}}_SET
6+
- read-state: ${{os}}
7+
then:
8+
- regex: linux
9+
then:
10+
- sh: echo ${{SHELL_PID}} >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/tasks/cgroup.procs
11+
else:
12+
- log: "Non-Linux OS doesn't support cgroups"
13+
- signal: CGROUP_${{CGROUP_NAME:perf-cgroup}}_DONE
14+
15+
create-cgroup:
16+
- read-state: ${{os}}
17+
then:
18+
- regex: linux
19+
then:
20+
- sh: mkdir /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/
21+
- sh: echo "+cpu" >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/cgroup.subtree_control
22+
- sh: echo "+cpuset" >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/cgroup.subtree_control
23+
- sh: echo "+memory" >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/cgroup.subtree_control
24+
- sh: mkdir /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/tasks/
25+
- sh: echo ${{CGROUP_CPUSET}} > /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/tasks/cpuset.cpus
26+
- sh: echo ${{CGROUP_MAX_MEM}} > /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/tasks/memory.max
27+
else:
28+
- log: "Non-Linux OS doesn't support cgroups"
29+
30+
delete-cgroup:
31+
- read-state: ${{os}}
32+
then:
33+
- regex: linux
34+
then:
35+
- sh: echo "-cpu" >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/cgroup.subtree_control
36+
- sh: echo "-cpuset" >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/cgroup.subtree_control
37+
- sh: echo "-memory" >> /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/cgroup.subtree_control
38+
- sh: rmdir /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/tasks/
39+
- sh: rmdir /sys/fs/cgroup/${{CGROUP_NAME:perf-cgroup}}/
40+
else:
41+
- log: "Non-Linux OS doesn't support cgroups"

benchmarks/helpers/homebrew.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Homebrew scripts
2+
scripts:
3+
ensure-homebrew:
4+
- sh:
5+
command: brew help
6+
ignore-exit-code: true
7+
- regex: ".*command not found"
8+
then:
9+
- script: install-homebrew
10+
11+
install-homebrew:
12+
- sh: curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh
13+
14+
install-brew-package:
15+
- script: ensure-homebrew
16+
- sh: brew install -q ${{package}}

benchmarks/helpers/java.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: Java related scripts
2+
scripts:
3+
ensure-graalvm:
4+
- script: sdk-select-java
5+
with:
6+
java_version: ${{config.GRAALVM_VERSION}}
7+
install_if_missing: true
8+
- log: Setting GRAALVM_HOME
9+
- sh: export GRAALVM_HOME=$(sdk home java ${{config.GRAALVM_VERSION}})
10+
- log: Showing GraalVM version
11+
- sh: $GRAALVM_HOME/bin/java -version
12+
13+
ensure-java:
14+
- script: sdk-select-java
15+
with:
16+
java_version: ${{config.JAVA_VERSION}}
17+
set_as_default: Y
18+
install_if_missing: true
19+
- log: Showing Java version
20+
- sh: java -version

benchmarks/helpers/jbang.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: JBang scripts
2+
scripts:
3+
ensure-jbang-mac:
4+
- script: check-and-install-package
5+
with:
6+
command: jbang
7+
package: jbangdev/tap/jbang
8+
9+
ensure-jbang-linux:
10+
- sh: which jbang
11+
- regex: ".*no jbang in.*"
12+
then:
13+
- sh: "curl -Ls https://sh.jbang.dev | bash -s - app setup"
14+
15+
ensure-jbang:
16+
- script: ensure-jbang-${{os}}

benchmarks/helpers/jsFunctions.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: jsFunctions
2+
scripts:
3+
state-array-push:
4+
- set-state:
5+
key: ${{array}}
6+
value: ${{=[...${{${{array}}¬[]}}, ${{value}}]}}
7+
separator: ¬
8+
9+
state-array-calc-avg:
10+
- set-state:
11+
key: ${{var-name}}
12+
value: ${{= (${{${{array}}}}.reduce((a, b) => a + b, 0) / ${{${{array}}}}.length) || 0 }}
13+
14+
state-array-calc-max:
15+
- set-state:
16+
key: ${{var-name}}
17+
value: ${{= Math.max(...${{${{array}}}}) }}

benchmarks/helpers/maven.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Maven scripts
2+
scripts:
3+
check-dependency-exists:
4+
- sh: cd ${{DIR}}
5+
- sh: ./mvnw dependency:get -Dartifact=${{groupId}}:${{artifactId}}:${{version}} -Dpackaging=pom
6+
then:
7+
- regex: BUILD FAILURE
8+
then:
9+
- abort: Unable to find ${{groupId}}:${{artifactId}}:${{version}} in maven central
10+
else:
11+
- log: Artifact ${{groupId}}:${{artifactId}}:${{version}} is available in maven central

benchmarks/helpers/os.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: OS-specific/detection scripts
2+
scripts:
3+
detect-os:
4+
- sh: uname -a
5+
then:
6+
- regex: ".*Darwin.*"
7+
then:
8+
- set-state: RUN.os macos
9+
- regex: ".*Linux.*"
10+
then:
11+
- set-state: RUN.os linux
12+
13+
capture-os-info:
14+
- sh: uname -m
15+
- set-state: RUN.env.host.ARCH
16+
- sh: uname -r
17+
- set-state: RUN.env.host.RELEASE_LEVEL
18+
- sh: uname -s
19+
- set-state: RUN.env.host.OS
20+
- sh: uname -v
21+
- set-state: RUN.env.host.VERSION_LEVEL
22+
23+
check-and-install-package:
24+
- sh: which ${{command}}
25+
- regex: ".*no ${{command}} in.*"
26+
then:
27+
- script: install-package
28+
with:
29+
package: ${{package}}
30+
31+
install-package-linux:
32+
- sh: sudo dnf install -y ${{package}}
33+
- regex: "Error: Unable to find a match: ${{package}}"
34+
then:
35+
- abort: "Unable to install package: ${{package}}"
36+
- set-state:
37+
key: RUN.INSTALLED_PACKAGES
38+
value: ${{= [...${{RUN.INSTALLED_PACKAGES:[]}}, '${{package}}'] }}
39+
40+
install-package-macos:
41+
- script: install-brew-package ${{package}}
42+
- regex: "Error: No formulae or casks found for ${{package}}"
43+
then:
44+
- abort: "Unable to install package: ${{package}}"
45+
46+
install-package:
47+
- script: install-package-${{os}}
48+
49+
sync-drop-fs-cache-linux:
50+
- sh: sync && sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"
51+
52+
sync-drop-fs-cache-macos:
53+
- sh: sync && sudo purge
54+
55+
sync-drop-fs-cache:
56+
- read-state: ${{DROP_OS_FILESYSTEM_CACHES:false}}
57+
then:
58+
- regex: true
59+
then:
60+
- script: sync-drop-fs-cache-${{os}}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: Requirements needed to run benchmarks
2+
scripts:
3+
ensure-requirements:
4+
- script: ensure-graalvm
5+
- script: ensure-java
6+
- script: ensure-git
7+
- script: ensure-gh-cli
8+
- script: ensure-gcc
9+
- script: ensure-nvm
10+
- script: ensure-jbang
11+
12+
ensure-gh-cli-linux:
13+
- sh: sudo dnf config-manager addrepo --from-repofile=https://cli.github.com/packages/rpm/gh-cli.repo
14+
- script: check-and-install-package
15+
with:
16+
command: gh
17+
package: dnf5-plugins
18+
- script: check-and-install-package
19+
with:
20+
command: gh
21+
package: gh --repo
22+
23+
ensure-gh-cli-macos:
24+
- script: check-and-install-package
25+
with:
26+
command: gh
27+
package: gh
28+
29+
ensure-gh-cli:
30+
- script: ensure-gh-cli-${{os}}
31+
32+
ensure-gcc-linux:
33+
- script: check-and-install-package
34+
with:
35+
command: gcc
36+
package: gcc.x86_64 zlib-devel.x86_64
37+
38+
ensure-gcc-macos:
39+
- script: check-and-install-package
40+
with:
41+
command: gcc
42+
package: gcc
43+
44+
ensure-gcc:
45+
- script: ensure-gcc-${{os}}
46+
47+
install-nvm-linux:
48+
- sh: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
49+
50+
install-nvm-macos:
51+
- script: check-and-install-package
52+
with:
53+
command: nvm
54+
package: nvm
55+
56+
ensure-nvm:
57+
- sh: which nvm
58+
- regex: ".*no nvm in.*"
59+
then:
60+
- script: install-nvm-${{os}}
61+
- sh: nvm install --lts
62+
- sh: nvm use --lts
63+
64+
ensure-git-linux:
65+
- script: check-and-install-package
66+
with:
67+
command: git
68+
package: git-all
69+
70+
ensure-git-macos:
71+
- script: check-and-install-package
72+
with:
73+
command: git
74+
package: git
75+
76+
ensure-git:
77+
- script: ensure-git-${{os}}

benchmarks/helpers/sdkman.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: sdkman helper scripts
2+
scripts:
3+
sdkman-uninstall: #https://sdkman.io/install
4+
- sh: which sdk
5+
- regex: "no sdk in"
6+
else:
7+
- sh: whoami
8+
- regex: (?<me>.*)
9+
- sh: "[[ -d /home/${{me}}/.sdkman ]] && rm -rf /home/${{me}}/.sdkman"
10+
- sh: sed -i 's/#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!.*//g' /home/${{me}}/.bashrc
11+
- sh: sed -i 's/export SDKMAN_DIR=.*//g' /home/${{me}}/.bashrc
12+
- sh: sed -i 's/.*.sdkman.*//g' /home/${{me}}/.bashrc
13+
14+
sdkman-install: #https://sdkman.io/install
15+
- sh:
16+
command: sdk help
17+
ignore-exit-code: true
18+
prompt:
19+
"Would you like to upgrade now? (Y/n): ": "Y"
20+
- regex: ".*command not found"
21+
then:
22+
- sh: curl -s "https://get.sdkman.io" | bash
23+
then:
24+
- regex: "Enjoy"
25+
else:
26+
- abort: failed to install SDKMAN
27+
- sh: source "$HOME/.sdkman/bin/sdkman-init.sh"
28+
else:
29+
- sh: sdk flush
30+
- sh: sdk selfupdate force
31+
then:
32+
- regex: "Successfully upgraded SDKMAN"
33+
else:
34+
- abort: failed to upgrade SDKMAN
35+
- sh:
36+
command: sdk version
37+
prompt:
38+
"Would you like to upgrade now? (Y/n): ": "Y"
39+
then:
40+
- regex: "SDKMAN (?<RUN.sdk_version>[\\d\\.\\+]+)"
41+
42+
sdk-select-java:
43+
- sh: echo ${{install_if_missing:false}}
44+
then:
45+
- regex: true
46+
then:
47+
- script: sdkman-install
48+
- sh:
49+
command: sdk flush && sdk install java ${{java_version}}
50+
prompt:
51+
"set as default? (Y/n): ": "${{set_as_default:N}}"
52+
- sh: sdk use java ${{java_version}}

0 commit comments

Comments
 (0)