mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 21:54:10 +01:00
perf-test: add option to run perf
Although the generation of perf data is not as slow as valgrind, it seems simplest to re-use the machinery already there to save the logs in a timestamped subdirectory.
This commit is contained in:
parent
9e2e723881
commit
6a20478abb
2 changed files with 45 additions and 5 deletions
|
@ -16,6 +16,7 @@ In addition to having notmuch, you need:
|
||||||
- xz. Some speedup can be gotten by installing "pixz", but this is
|
- xz. Some speedup can be gotten by installing "pixz", but this is
|
||||||
probably only worthwhile if you are debugging the tests.
|
probably only worthwhile if you are debugging the tests.
|
||||||
- valgrind (for the memory tests)
|
- valgrind (for the memory tests)
|
||||||
|
- perf (optional, for more fine-grained timing)
|
||||||
|
|
||||||
Getting set up to run tests:
|
Getting set up to run tests:
|
||||||
----------------------------
|
----------------------------
|
||||||
|
@ -57,10 +58,23 @@ supports the following arguments
|
||||||
--small / --medium / --large Choose corpus size.
|
--small / --medium / --large Choose corpus size.
|
||||||
--debug Enable debugging. In particular don't delete
|
--debug Enable debugging. In particular don't delete
|
||||||
temporary directories.
|
temporary directories.
|
||||||
|
--perf Run perf record in place of /usr/bin/time. Perf output can be
|
||||||
|
found in a log directory.
|
||||||
|
--call-graph {fp,lbr,dwarf} Call graph option for perf record. Default is 'lbr'.
|
||||||
|
|
||||||
When using the make targets, you can pass arguments to all test
|
When using the make targets, you can pass arguments to all test
|
||||||
scripts by defining the make variable OPTIONS.
|
scripts by defining the make variable OPTIONS.
|
||||||
|
|
||||||
|
Log Directory
|
||||||
|
-------------
|
||||||
|
|
||||||
|
The memory tests, and the time tests when option '--perf' is given
|
||||||
|
save their output in a directory named as follows
|
||||||
|
|
||||||
|
log.$test_name-$corpus_size-$timestamp
|
||||||
|
|
||||||
|
These directories are removed by "make clean".
|
||||||
|
|
||||||
Writing tests
|
Writing tests
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
. $(dirname "$0")/version.sh || exit 1
|
. $(dirname "$0")/version.sh || exit 1
|
||||||
|
|
||||||
|
debug=""
|
||||||
corpus_size=large
|
corpus_size=large
|
||||||
|
perf_callgraph=lbr
|
||||||
|
use_perf=0
|
||||||
|
|
||||||
while test "$#" -ne 0
|
while test "$#" -ne 0
|
||||||
do
|
do
|
||||||
|
@ -9,6 +12,15 @@ do
|
||||||
debug=t;
|
debug=t;
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
-p|--perf)
|
||||||
|
use_perf=1;
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-c|--call-graph)
|
||||||
|
shift
|
||||||
|
perf_callgraph=$1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
-s|--small)
|
-s|--small)
|
||||||
corpus_size=small;
|
corpus_size=small;
|
||||||
shift
|
shift
|
||||||
|
@ -127,10 +139,20 @@ notmuch_new_with_cache ()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_log_dir () {
|
||||||
|
local timestamp=$(date +%Y%m%dT%H%M%S)
|
||||||
|
log_dir=${TEST_DIRECTORY}/log.$(basename $0)-$corpus_size-${timestamp}
|
||||||
|
mkdir -p "${log_dir}"
|
||||||
|
}
|
||||||
|
|
||||||
time_start ()
|
time_start ()
|
||||||
{
|
{
|
||||||
add_email_corpus
|
add_email_corpus
|
||||||
|
|
||||||
|
if [[ "$use_perf" = 1 ]]; then
|
||||||
|
make_log_dir
|
||||||
|
fi
|
||||||
|
|
||||||
print_header
|
print_header
|
||||||
|
|
||||||
notmuch_new_with_cache time_run
|
notmuch_new_with_cache time_run
|
||||||
|
@ -140,9 +162,7 @@ memory_start ()
|
||||||
{
|
{
|
||||||
add_email_corpus
|
add_email_corpus
|
||||||
|
|
||||||
local timestamp=$(date +%Y%m%dT%H%M%S)
|
make_log_dir
|
||||||
log_dir="${TEST_DIRECTORY}/log.$(basename $0)-$corpus_size-${timestamp}"
|
|
||||||
mkdir -p ${log_dir}
|
|
||||||
|
|
||||||
notmuch_new_with_cache memory_run
|
notmuch_new_with_cache memory_run
|
||||||
}
|
}
|
||||||
|
@ -193,7 +213,13 @@ time_run ()
|
||||||
printf " %-22s" "$1"
|
printf " %-22s" "$1"
|
||||||
test_count=$(($test_count+1))
|
test_count=$(($test_count+1))
|
||||||
if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi
|
if test "$verbose" != "t"; then exec 4>test.output 3>&4; fi
|
||||||
if ! eval >&3 "/usr/bin/time -f '%e\t%U\t%S\t%M\t%I/%O' $2" ; then
|
if [[ "$use_perf" = 1 ]]; then
|
||||||
|
command_str="perf record --call-graph=${perf_callgraph} -o ${log_dir}/${test_count}.perf $2"
|
||||||
|
else
|
||||||
|
command_str="/usr/bin/time -f '%e\t%U\t%S\t%M\t%I/%O' $2"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! eval >&3 "$command_str" ; then
|
||||||
test_failure=$(($test_failure + 1))
|
test_failure=$(($test_failure + 1))
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue