All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo
@ 2017-12-09 15:23 Akira Yokosawa
  2017-12-09 15:24 ` [PATCH 2/2] CodeSamples/formal/herd: Make use of absperf scripts in make targets Akira Yokosawa
  2017-12-11 17:07 ` [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo Paul E. McKenney
  0 siblings, 2 replies; 3+ messages in thread
From: Akira Yokosawa @ 2017-12-09 15:23 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

From d44f361687f33ef3c293154d94a18571591d97ba Mon Sep 17 00:00:00 2001
From: Akira Yokosawa <akiyks@gmail.com>
Date: Fri, 8 Dec 2017 00:11:26 +0900
Subject: [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo

Import scripts as of commit 62d56aa9b4a2 ("Make absperf scripts more
flexible") in Paul's repository at:

    https://github.com/paulmckrcu/litmus.git

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 CodeSamples/formal/herd/absperf-reduce.sh | 30 ++++++++++++++++++++++++++++++
 CodeSamples/formal/herd/absperf.sh        | 15 +++++++++++++++
 2 files changed, 45 insertions(+)
 create mode 100644 CodeSamples/formal/herd/absperf-reduce.sh
 create mode 100644 CodeSamples/formal/herd/absperf.sh

diff --git a/CodeSamples/formal/herd/absperf-reduce.sh b/CodeSamples/formal/herd/absperf-reduce.sh
new file mode 100644
index 0000000..0c338b8
--- /dev/null
+++ b/CodeSamples/formal/herd/absperf-reduce.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+awk '
+/absperf/ {
+	curtest=$1;
+	testran = 0;
+}
+
+/^Test/ {
+	testran = 1;
+}
+
+/maxresident)k/ {
+	if (testran) {
+		curtesttime = $0;
+		gsub(/user .*$/, "", curtesttime);
+		testtime_n[curtest]++;
+		testtime_sum[curtest] += curtesttime;
+		if (testtime_max[curtest] == "" || curtesttime > testtime_max[curtest])
+			testtime_max[curtest] = curtesttime;
+		if (testtime_min[curtest] == "" || curtesttime < testtime_min[curtest])
+			testtime_min[curtest] = curtesttime;
+	}
+}
+
+END {
+	for (i in testtime_n)
+		print i, testtime_sum[i] / testtime_n[i], testtime_min[i], testtime_max[i];
+}
+'
diff --git a/CodeSamples/formal/herd/absperf.sh b/CodeSamples/formal/herd/absperf.sh
new file mode 100644
index 0000000..4b54680
--- /dev/null
+++ b/CodeSamples/formal/herd/absperf.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+TIMECMD=/usr/bin/time
+TESTBASE=${1:-litmus-tests}
+TIMEOUT=${2:-15m}
+ITER=${3:-10}
+
+for n in $(seq $ITER)
+do
+	for i in $TESTBASE/absperf/*.litmus
+	do
+		echo $i
+		$TIMECMD timeout $TIMEOUT herd7 -conf linux-kernel.cfg $i
+	done
+done
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] CodeSamples/formal/herd: Make use of absperf scripts in make targets
  2017-12-09 15:23 [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo Akira Yokosawa
@ 2017-12-09 15:24 ` Akira Yokosawa
  2017-12-11 17:07 ` [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo Paul E. McKenney
  1 sibling, 0 replies; 3+ messages in thread
From: Akira Yokosawa @ 2017-12-09 15:24 UTC (permalink / raw)
  To: Paul E. McKenney; +Cc: perfbook, Akira Yokosawa

From 858319eab17c2b51d17a39ff769b19303292b526 Mon Sep 17 00:00:00 2001
From: Akira Yokosawa <akiyks@gmail.com>
Date: Sun, 10 Dec 2017 00:15:57 +0900
Subject: [PATCH 2/2] CodeSamples/formal/herd: Make use of absperf scripts in make targets

Target "run-absperf" runs 16 of 20 absperf litmus tests whose results
are covered in Table E.2.

Target "run-absperf-all" runs all 20 of the tests.  Long tests should
end up in timeout by default (15m).

Also add target "help".

Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
---
 CodeSamples/formal/herd/.gitignore |  2 ++
 CodeSamples/formal/herd/Makefile   | 62 +++++++++++++++++++++++++++++---------
 2 files changed, 49 insertions(+), 15 deletions(-)

diff --git a/CodeSamples/formal/herd/.gitignore b/CodeSamples/formal/herd/.gitignore
index e0ad195..d12c930 100644
--- a/CodeSamples/formal/herd/.gitignore
+++ b/CodeSamples/formal/herd/.gitignore
@@ -1,5 +1,7 @@
 *.out
 *.herd
+*.raw
 klitmus
 klitmus.tar
 memory-model
+absperf
diff --git a/CodeSamples/formal/herd/Makefile b/CodeSamples/formal/herd/Makefile
index b99699b..7bbfeaf 100644
--- a/CodeSamples/formal/herd/Makefile
+++ b/CodeSamples/formal/herd/Makefile
@@ -3,11 +3,17 @@
 # Default target: Transform litmus tests in ../litmus to herd7 compatible format
 #         (remove 2nd {})
 #
-# run-herd7: Examine transformed litmus tests by herd7 with LKMM
+# run-herd7:       Examine transformed litmus tests by herd7 with LKMM
+# cross-klitmus7:  Cross-compile transformed litmus tests by klitmus7
+# run-absperf:     Run memory model benchmark tests of absperf
+# run-absperf-all: Run all absperf tests (including those take quite a while)
 #
-# cross-klitmus7: Cross-compile transformed litmus tests with klitmus7
+# Warning: absperf tests take more than 1 hour by default.
 #
-# run-herd7-bench: Run benchmark tests of herd7 itself
+# Note: Parameters TIMEOUT and ITER in absperf.sh can be overridden by
+#       options to "make".  E.g.:
+#
+#       $ make TIMEOUT=1m ITER=3 run-absperf
 #
 # Note: There need to be a symbolic link "memory-model" under
 #       CodeSamples/formal/herd for herd7 to work.
@@ -33,12 +39,15 @@ KLITMUS7_CMD := $(shell which klitmus7)
 LITMUS7_TEST := $(notdir $(wildcard ../litmus/*.litmus))
 LITMUS7_HERD_TEST := $(addsuffix .herd,$(LITMUS7_TEST))
 LITMUS7_HERD_OUT  := $(addsuffix .out,$(LITMUS7_TEST))
-HERD_BENCH        := $(wildcard C-SB+l-*.litmus)
-HERD_BENCH_LONG   := $(wildcard C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-*.litmus)
-HERD_BENCH_SHORT  := $(filter-out $(HERD_BENCH_LONG),$(HERD_BENCH))
-HERD_BENCH_OUT    := $(addsuffix .out,$(HERD_BENCH_SHORT))
+TIMEOUT = 15m
+ITER    = 10
+ABSPERF_TEST   := $(wildcard C-SB+l-*.litmus)
+ABSPERF_LONG   := $(wildcard C-SB+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u+l-o-o-u-*.litmus)
+ABSPERF_SHORT  := $(filter-out $(ABSPERF_LONG),$(ABSPERF_TEST))
+ABSPERF_OUT    = absperf.out absperf-all.out

-.PHONY: all clean litmus2herd run-herd7 run-herd7-bench cross-klitmus
+.PHONY: all clean litmus2herd run-herd7 run-absperf run-absperf-all cross-klitmus
+.PHONY: help

 all: litmus2herd

@@ -48,8 +57,8 @@ $(LITMUS7_HERD_TEST): %.herd: ../litmus/%
 	sh ./litmus2herd.sh $< $@

 run-herd7: $(LITMUS7_HERD_OUT)
-
-run-herd7-bench: $(HERD_BENCH_OUT)
+run-absperf: absperf.out
+run-absperf-all: absperf-all.out

 $(LKMM_LIST):
 	@echo "#####################################################"
@@ -61,13 +70,23 @@ $(LKMM_LIST):
 	@echo "#####################################################"
 	@exit 1

-$(LITMUS7_HERD_OUT) $(HERD_BENCH_OUT): $(LKMM_LIST)
+$(LITMUS7_HERD_OUT) $(ABSPERF_OUT): $(LKMM_LIST)

 $(LITMUS7_HERD_OUT): %.out: %.herd
 	cd $(LKMM_DIR); herd7 -conf linux-kernel.cfg $(HERD_DIR)/$< > $(HERD_DIR)/$@

-$(HERD_BENCH_OUT): %.out: %
-	cd $(LKMM_DIR); herd7 -conf linux-kernel.cfg $(HERD_DIR)/$< > $(HERD_DIR)/$@
+absperf.out: ABSPERF_LIST = $(ABSPERF_SHORT)
+absperf.out: $(ABSPERF_SHORT)
+absperf-all.out: ABSPERF_LIST = $(ABSPERF_TEST)
+absperf-all.out: $(ABSPERF_TEST)
+
+$(ABSPERF_OUT):
+	mkdir -p absperf
+	rm -f absperf/*
+	ln -s -r $(ABSPERF_LIST) absperf/
+	cd $(LKMM_DIR); sh $(HERD_DIR)/absperf.sh $(HERD_DIR) $(TIMEOUT) $(ITER) >$(HERD_DIR)/$@.raw 2>&1
+	cat $@.raw | sh ./absperf-reduce.sh | sed -e 's/^.*absperf\///' \
+		| sort -r | tee $@

 cross-klitmus: klitmus.tar

@@ -76,7 +95,20 @@ klitmus.tar: litmus2herd
 	klitmus7 -o klitmus $(LITMUS7_HERD_TEST)
 	tar cf klitmus.tar ./klitmus

+help:
+	@echo "Default target: Transform litmus tests in ../litmus to herd7 compatible format"
+	@echo "        (remove 2nd {})"
+	@echo
+	@echo "Other targets:"
+	@echo "    run-herd7:       Examine transformed litmus tests by herd7 with LKMM"
+	@echo "    cross-klitmus7:  Cross-compile transformed litmus tests by klitmus7"
+	@echo "    run-absperf:     Run memory model benchmark tests of absperf"
+	@echo "    run-absperf-all: Run all absperf tests (including those take quite a while)"
+	@echo
+	@echo "Warning: absperf tests require more than 1 hour by default."
+	@echo "    Refer to comment in Makefile for instructions to override default setting."
+
 clean:
-	rm -f *.out *.herd
-	rm -rf klitmus
+	rm -f *.out *.herd *.raw
+	rm -rf klitmus absperf
 	rm -f klitmus.tar
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo
  2017-12-09 15:23 [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo Akira Yokosawa
  2017-12-09 15:24 ` [PATCH 2/2] CodeSamples/formal/herd: Make use of absperf scripts in make targets Akira Yokosawa
@ 2017-12-11 17:07 ` Paul E. McKenney
  1 sibling, 0 replies; 3+ messages in thread
From: Paul E. McKenney @ 2017-12-11 17:07 UTC (permalink / raw)
  To: Akira Yokosawa; +Cc: perfbook

On Sun, Dec 10, 2017 at 12:23:05AM +0900, Akira Yokosawa wrote:
> >From d44f361687f33ef3c293154d94a18571591d97ba Mon Sep 17 00:00:00 2001
> From: Akira Yokosawa <akiyks@gmail.com>
> Date: Fri, 8 Dec 2017 00:11:26 +0900
> Subject: [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo
> 
> Import scripts as of commit 62d56aa9b4a2 ("Make absperf scripts more
> flexible") in Paul's repository at:
> 
>     https://github.com/paulmckrcu/litmus.git
> 
> Signed-off-by: Akira Yokosawa <akiyks@gmail.com>

Queued and pushed, thank you!

							Thanx, Paul

> ---
>  CodeSamples/formal/herd/absperf-reduce.sh | 30 ++++++++++++++++++++++++++++++
>  CodeSamples/formal/herd/absperf.sh        | 15 +++++++++++++++
>  2 files changed, 45 insertions(+)
>  create mode 100644 CodeSamples/formal/herd/absperf-reduce.sh
>  create mode 100644 CodeSamples/formal/herd/absperf.sh
> 
> diff --git a/CodeSamples/formal/herd/absperf-reduce.sh b/CodeSamples/formal/herd/absperf-reduce.sh
> new file mode 100644
> index 0000000..0c338b8
> --- /dev/null
> +++ b/CodeSamples/formal/herd/absperf-reduce.sh
> @@ -0,0 +1,30 @@
> +#!/bin/sh
> +
> +awk '
> +/absperf/ {
> +	curtest=$1;
> +	testran = 0;
> +}
> +
> +/^Test/ {
> +	testran = 1;
> +}
> +
> +/maxresident)k/ {
> +	if (testran) {
> +		curtesttime = $0;
> +		gsub(/user .*$/, "", curtesttime);
> +		testtime_n[curtest]++;
> +		testtime_sum[curtest] += curtesttime;
> +		if (testtime_max[curtest] == "" || curtesttime > testtime_max[curtest])
> +			testtime_max[curtest] = curtesttime;
> +		if (testtime_min[curtest] == "" || curtesttime < testtime_min[curtest])
> +			testtime_min[curtest] = curtesttime;
> +	}
> +}
> +
> +END {
> +	for (i in testtime_n)
> +		print i, testtime_sum[i] / testtime_n[i], testtime_min[i], testtime_max[i];
> +}
> +'
> diff --git a/CodeSamples/formal/herd/absperf.sh b/CodeSamples/formal/herd/absperf.sh
> new file mode 100644
> index 0000000..4b54680
> --- /dev/null
> +++ b/CodeSamples/formal/herd/absperf.sh
> @@ -0,0 +1,15 @@
> +#!/bin/sh
> +
> +TIMECMD=/usr/bin/time
> +TESTBASE=${1:-litmus-tests}
> +TIMEOUT=${2:-15m}
> +ITER=${3:-10}
> +
> +for n in $(seq $ITER)
> +do
> +	for i in $TESTBASE/absperf/*.litmus
> +	do
> +		echo $i
> +		$TIMECMD timeout $TIMEOUT herd7 -conf linux-kernel.cfg $i
> +	done
> +done
> -- 
> 2.7.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe perfbook" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-12-11 17:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-09 15:23 [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo Akira Yokosawa
2017-12-09 15:24 ` [PATCH 2/2] CodeSamples/formal/herd: Make use of absperf scripts in make targets Akira Yokosawa
2017-12-11 17:07 ` [PATCH 1/2] CodeSamples/formal/herd: Import absperf scripts of Paul's litmus repo Paul E. McKenney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.