In this section we set out to answer how the size of the log file kept by RRVM influences the performance of the system. The log file is synchronously written by transactions during their commit phase. When the log file fills above a threshold, RVM reads it, truncates it and updates the data file. Thus, the log file is used as a buffer between synchronous transaction writes and asynchronous data file updates. The larger the log file, the better the performance of the system is expected to be.
To measure the performance effect of the log file size, we constructed the same experiment as previously, but instead of varying the I/O block size, we vary the log size and we keep the I/O block size constant.
The results of our experiment (number of transactions per second) as a function the log size for I/O block sizes of 128 and 512 bytes are plotted in figures 2 and 3 respectively.
We see that all systems have poor performance for small log sizes (a few Kbytes long), especially for the larger I/O block size. The reason is that very small logs force applications to suffer almost two synchronous write operations per transaction: one to write the dirty data to the log (at transaction commit time), and one to empty the log to the data file. Fortunately, the performance in all systems gets better and almost constant for logs larger than 32 Kbytes. In all cases the performance of both RRVM systems is significantly better than the performance of the unmodified RVM system: between one and two orders of magnitude for small transactions.
Figure 2: Performance of RVM as a function of the size of the log. Data File = 100 Mbytes.
Figure 3: Performance of RVM as a function of the size of the log. Data File = 100 Mbytes.