RVM TPC/A benchmark

What's this?

RVM TPC/A benchmark was originally developed by the RVM project team for use in its SOSP paper. It mimics the TPC/A benchmark in a very crappy way. The "database" file is a single big C struct described below.
struct {
    branch branch;
    teller tellers[10];
    account accounts[NACCOUNTS]
    history history[NACCOUNTS*2];
} root_struct;
branch, teller, account are 128 bytes each, and history is 64 bytes each. NACCOUNTS is a runtime constant that defaults to 32768.

Each transaction picks one account, and reads the branch, a teller, the account, and also writes onto the branch, the teller, and the account. Finally, it appends an entry to history. Thus, one transaction reads 3 * 128 bytes, and writes 3 * 128 + 64 bytes.

There are two ways the accounts are picked. Random version picks an account completely randomly. Localized picks an account randomly but with certain preference. Default is the localized, but -r command line option switches the distribution to random.

Invoking RVM benchmark

rvmbench [-rp] [-n NTRANS] [-d DEV] [-a NACCOUNTS]
-r
Random account distribution. Default is localized distribution.
-p
Run the kernel profiler.
-n
Set the number of transactions executed. Default is 4000.
-d
Set the database name. Default is rds_data on the current directory.
-a
Set the number of accounts. Default is 32768.

yasushi@cs.washington.edu