In our first set of experiments we would like to find out how many transactions per second our RRVM system is able to sustain, compared to the number of transactions per second the unmodified RVM system is able to sustain. For this reason we constructed the following experiment:
We create a file 100 Mbytes long. Then, we start a sequence of 10000 transactions. Each transaction writes a segment of the file and commits. Transactions modify the file in sequential manner. The size of the file segment modified by each transaction (also called I/O block size) is the parameter of our experiments.
Figure 1 plots the number of transactions per second, for the original version of RVM, and our RRVM-MC, RRVM-FDDI, and RRVM-ETHERNET. We see that the unmodified RVM system is able to sustain up to at most 40 transactions per second for small transactions. As the size of the I/O block gets larger, the number of transactions per second successfully executed gets even lower. Our results agree with previously reported results, in which RVM is able to sustain at most 50 transactions per second (, figure 8(b)). However, the performance of RRVM-ETHERNET and RRVM-FDDI is significantly better than that of RVM. For small transactions both RRVM systems are able to sustain close to 500 transactions per second: an order of magnitude improvement over unmodified RVM. Even better, RRVM-MC manages to sustain close to 3,000 transactions per second: almost two orders of magnitude improvement over unmodified RVM. By looking closely at figure 1 we see that the performance of RVM is practically the same for I/O block sizes between 0 and 10 Kbytes, which implies that the transactions overhead (for the above I/O block sizes) is dominated by disk seek and rotational latency and not by the data transfer itself.
Figure 1: Performance of RVM as a function of the I/O block size. Data file = 100 Mbytes, Log File = 8 Mbytes.