Re: [PATCH 3/3] perf-test: add caching of xapian database.

Subject: Re: [PATCH 3/3] perf-test: add caching of xapian database.

Date: Wed, 05 Dec 2012 00:02:55 -0500

To: david@tethera.net, notmuch@notmuchmail.org

Cc: David Bremner

From: Austin Clements


This seems like an odd way to do this.  Timing the initial notmuch new
seems like the goal of exactly one performance test and irrelevant to
the others.  What about splitting "basic" into two tests: an explicit
notmuch new performance test and a separate test that does
dump/restore/tag.  The second test can always use a cached notmuch
database (creating it if necessary).  If you want to be really kind, the
notmuch new performance test could save its result as the database cache
if there isn't a database cache; then people don't have to build the
database twice if they (or notmuch-perf-test) run the tests in the right
order.

On Mon, 03 Dec 2012, david@tethera.net wrote:
> From: David Bremner <bremner@debian.org>
>
> The caching and uncaching seem to be necessarily manual, as timing the
> initial notmuch new is one of our goals with this suite.
> ---
>  performance-test/.gitignore       |    1 +
>  performance-test/Makefile.local   |    2 +-
>  performance-test/basic            |    5 +++++
>  performance-test/perf-test-lib.sh |   18 ++++++++++++++++++
>  4 files changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/performance-test/.gitignore b/performance-test/.gitignore
> index 7e20f7c..779a115 100644
> --- a/performance-test/.gitignore
> +++ b/performance-test/.gitignore
> @@ -1,2 +1,3 @@
>  tmp.*/
>  corpus.mail.*/
> +notmuch.cache.*/
> diff --git a/performance-test/Makefile.local b/performance-test/Makefile.local
> index eb713d0..b136a88 100644
> --- a/performance-test/Makefile.local
> +++ b/performance-test/Makefile.local
> @@ -29,4 +29,4 @@ $(TXZFILE):
>  download-corpus:
>  	wget -O ${TXZFILE} ${DEFAULT_URL}
>  
> -CLEAN := $(CLEAN) $(dir)/tmp.* $(dir)/corpus.mail.*
> +CLEAN := $(CLEAN) $(dir)/tmp.* $(dir)/corpus.mail.* $(dir)/notmuch.cache.*
> diff --git a/performance-test/basic b/performance-test/basic
> index 9d015ee..41a7ff1 100755
> --- a/performance-test/basic
> +++ b/performance-test/basic
> @@ -2,11 +2,16 @@
>  
>  . ./perf-test-lib.sh
>  
> +uncache_database
> +
>  add_email_corpus
>  
>  print_header
>  
>  time_run 'initial notmuch new' 'notmuch new'
> +
> +cache_database
> +
>  time_run 'second notmuch new' 'notmuch new'
>  time_run 'dump *' 'notmuch dump > tags.out'
>  time_run 'restore *' 'notmuch restore < tags.out'
> diff --git a/performance-test/perf-test-lib.sh b/performance-test/perf-test-lib.sh
> index 9fbf874..c9b131a 100644
> --- a/performance-test/perf-test-lib.sh
> +++ b/performance-test/perf-test-lib.sh
> @@ -36,6 +36,8 @@ then
>  fi
>  
>  CORPUS_DIR=${TEST_DIRECTORY}/corpus.mail.$corpus_size
> +DB_CACHE_DIR=${TEST_DIRECTORY}/notmuch.cache.$corpus_size
> +
>  add_email_corpus ()
>  {
>      rm -rf ${MAIL_DIR}
> @@ -69,9 +71,25 @@ add_email_corpus ()
>  	printf "\n"
>  
>      fi
> +
>      cp -lr $CORPUS_DIR $MAIL_DIR
> +
> +    if [ -d $DB_CACHE_DIR ]; then
> +	cp -r $DB_CACHE_DIR ${MAIL_DIR}/.notmuch
> +    fi
>  }
>  
> +cache_database () {
> +    if [ -d $MAIL_DIR/.notmuch ]; then
> +	cp -r $MAIL_DIR/.notmuch $DB_CACHE_DIR
> +    else
> +	echo "Warning: No database found to cache"
> +    fi
> +}
> +
> +uncache_database () {
> +    rm -rf $DB_CACHE_DIR
> +}
>  
>  print_header () {
>      printf "[v%4s]               Wall(s)\tUsr(s)\tSys(s)\tRes(K)\tIn(512B)\tOut(512B)\n" \
> -- 
> 1.7.10.4
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch

Thread: