Flamegraphing kernel stacks

This commit is contained in:
Samuel Aubertin 2023-10-12 21:18:24 +02:00
parent 1fbbd8dea7
commit 06e2aad88d
3 changed files with 35 additions and 12 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
.vagrant
Vagrantfile
*.json
*.svg
opack_installer_latest
results
ssh-config

View File

@ -25,10 +25,10 @@ SPEC2006_SRC= ../spec2006-openbsd
$(INSTALL_ISO):
make -C ../skzbsd-build/ all
ssh-config: opack
ssh-config: | opack
(echo Host $(OPACK_TARGET) && (vagrant ssh-config | sed '1d')) > $@
all: $(INSTALL_ISO) ssh-config
results/rate.kprofile results/speed.kprofile: $(INSTALL_ISO) ssh-config
scp -F ssh-config -q -r src root@$(OPACK_TARGET):/root/run
scp -F ssh-config -q -r $(SPEC2006_SRC) root@$(OPACK_TARGET):/var/spec2006
vagrant ssh -c "make -C run bootstrap"
@ -37,6 +37,24 @@ all: $(INSTALL_ISO) ssh-config
mkdir -p results
scp -F ssh-config -q -r $(OPACK_TARGET):/var/spec2006/result/* results
rate.svg: | results/rate.kprofile
stackcollapse-bpftrace.pl $^ | flamegraph.pl \
--title "SPECINT2006 RATE - Kernel stacks - $(OPACK_SYS_CPU) threads" \
--subtitle "$(shell vagrant ssh -c "sysctl -n kern.version" | head -n1)" \
--fonttype "IBM Plex Mono" \
--hash \
--inverted > $@
speed.svg: | results/speed.kprofile
stackcollapse-bpftrace.pl $^ | flamegraph.pl \
--title "SPECINT2006 SPEED - Kernel stacks - Single thread" \
--subtitle "$(shell vagrant ssh -c "sysctl -n kern.version" | head -n1)" \
--fonttype "IBM Plex Mono" \
--hash \
--inverted > $@
all: rate.svg speed.svg
clean:
rm -rf results ssh-config
$(MAKE) opack-clean

View File

@ -1,6 +1,6 @@
# SPEC2006 options
SIZE?="ref"
ITERATIONS?="1"
SIZE?=ref
ITERATIONS?=1
OCTOPUS_URL=https://git.sk4.nz/sk4nz/octopus.git
SPEC2006_URL=https://git.sk4.nz/sk4nz/spec2006-openbsd.git
@ -29,36 +29,40 @@ RUNOPTS=-I --noreportable --verbose 5\
.PHONY: bootstrap
bootstrap:
@echo $$(date) - Bootstrapping SPEC
@echo $$(date "+%H:%M:%S") Bootstrapping SPEC
@mkdir -p /spec
@ln -s /var/spec2006 /spec/cpu2006
@cd /var/spec2006/tools/src && CFLAGS='-fPIC' CONFIGFLAGS='--build=x86_64-unknown-openbsd' sh ./buildtools > build.log 2>&1
@cd /var/spec2006 && . ./shrc && ./bin/scripts.misc/genmanifest.sh > manifest.out.log 2>&1 && ./bin/packagetools OpenBSD > package.OpenBSD.out 2>&1
@echo 'cd /var/spec2006 && . ./shrc && cd /root' >> /root/.profile
@cd /var/spec2006 && . ./shrc && runspec --action=build -c int_speed_openbsd -T all -I -i $(SIZE) int > buildtests.log
@cd /var/spec2006 && . ./shrc && runspec --action=build -c int_rate_openbsd -T all -I -i $(SIZE) int >> buildtests.log
@-pkg_add -I lscpu > /dev/null 2>&1 || pkg_add -I -D snap lscpu > /dev/null 2>&1
@echo sysctl kern.securelevel=-1 > /etc/rc.securelevel
@echo kern.allowdt=1 >> /etc/sysctl.conf
@echo kern.allowkmem=1 >> /etc/sysctl.conf
@-sync
@echo $$(date) - SPEC bootstrapping complete
@echo $$(date "+%H:%M:%S") SPEC bootstrapping complete | tee $@
rate:
@echo $$(date) - Run SPECINT2006 Rate. $(SIZE) size - $(ITERATIONS) iterations - $$(sysctl -n hw.ncpufound) workloads
@echo $$(date "+%H:%M:%S") Run SPECINT2006 Rate. $(SIZE) size - $(ITERATIONS) iterations - $$(sysctl -n hw.ncpufound) workloads
@btrace /usr/share/btrace/kprofile.bt > /var/spec2006/result/rate.kprofile & cd /var/spec2006 && . ./shrc && \
runspec -c int_rate_openbsd \
-n $(ITERATIONS) \
--rate=$$(sysctl -n hw.ncpufound) \
$(RUNOPTS) \
--size=$(SIZE) \
int > /var/spec2006/result/rate.log; kill -2 $$(ps aux | grep btrace | grep -v grep | awk '{print $$2}')
int > /var/spec2006/result/rate.log; kill -2 $$(pgrep btrace) || true
speed:
@echo $$(date) - Run SPECINT2006 Speed. $(SIZE) size - $(ITERATIONS) iterations
@btrace /usr/share/btrace/kprofile.bt > /var/spec2006/result/speed.kprofile && cd /var/spec2006 && . ./shrc && \
@echo $$(date "+%H:%M:%S") Run SPECINT2006 Speed. $(SIZE) size - $(ITERATIONS) iterations
@btrace /usr/share/btrace/kprofile.bt > /var/spec2006/result/speed.kprofile & cd /var/spec2006 && . ./shrc && \
runspec -c int_speed_openbsd \
-n $(ITERATIONS) \
$(RUNOPTS) \
--size=$(SIZE) \
int > /var/spec2006/result/speed.log; kill -2 $$(ps aux | grep btrace | grep -v grep | awk '{print $$2}')
int > /var/spec2006/result/speed.log; kill -2 $$(pgrep btrace) || true
@btrace /usr/share/btrace/kprofile.bt > /tmp/dummy & sleep 2 && kill -2 $$(pgrep btrace) || true
all: rate
all: rate speed
@echo ▒ $$(date "+%H:%M:%S") SPECINT2006 complete