Hi folks,

I'm looking into using sqlite for benchmarking performance of a
glibc feature based on hardware based transactional memory that is
a new feature of new Intel and Ibm (and other) cpus.

The glibc feature is described here:
https://lwn.net/Articles/534758/

In short, glibc attempts automatically to avoid ("elide") using
pthread mutexes and rwlocks and use hardware transactions instead.

The plan (or rather: vague idea) is to run a multi-threaded C
program that creates an in-memory database and runs a parallel
workload on that database in multiple threads.  Now I'm missing
two things:

1. Figuring out the amount, granularity and duration of locking
   that sqlite does using the pthread_mutex_... functions.  Can
   someone help me out here, or is my only chance to dig through
   the source code?

2. Finding a suitable workload for the test, preferrably already
   written in C, but since I'll have to do some coding anyway,
   that's not mandatory.  Other requirements:

    - The workload must be sufficiently big to run for several
      seconds even on a high end server with eight or more cpus.
    - It must be possible to dynamically distribute the workload
      across a random number of threads of the test program.
    - The workload must create a decent amount of contention on
      database objects.  Thas is because hardware transactions
      cannot speed code with locks that does not create any
      contention on the database.

   I'm sure such a workload must be available on the net, but I
   just cannot find it.  Isn't there a suitable test data set for
   testing sqlite's parallel performance anyway?

Any hints or pointers would be greatly appreciated.

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to