From 8cea61b148b0f0e6a205979bd7210160b173e614 Mon Sep 17 00:00:00 2001 From: Sears Russell Date: Wed, 6 Sep 2006 07:23:10 +0000 Subject: [PATCH] Camera ready version. --- doc/paper3/LLADD.tex | 61 ++++++++++++++++++----------- doc/paper3/figs/lsn-estimation.pdf | Bin 25298 -> 26089 bytes 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/doc/paper3/LLADD.tex b/doc/paper3/LLADD.tex index bc6b104..b513dc6 100644 --- a/doc/paper3/LLADD.tex +++ b/doc/paper3/LLADD.tex @@ -762,28 +762,42 @@ set of byte ranges with their new values. Note that we still allow code that invokes operations to examine the page file, just not during the redo phase of recovery. -Recovery works the same way as before, except that it now computes -a lower bound for the LSN of each page, rather than reading it from the page. -One possible lower bound is the LSN of the most recent checkpoint. -Alternatively, \yad could occasionally store its list of dirty pages -and their LSNs to the log (Figure~\ref{fig:lsn-estimation}). +Recovery works the same way as before, except that it now estimates +page LSNs rather than reading them from pages. One safe estimate +is the LSN of the most recent archive or log truncation point. +Alternatively, \yad could occasionally store its {\em dirty page +table} to the log (Figure~\ref{fig:lsn-estimation}). The dirty page +table lists all dirty pages and their {\em recovery LSNs}. It +provides a lower bound of the LSN of the first log entry that must be +applied to each page in the page file. It is used by ARIES to reduce +the amount of work that must be performed during REDO. -Each dirty list is an -accurate sparse representation of the LSNs of the entire page file. -If a page is present in the most recent list of dirty pages then we use -the LSN in the list as our estimate. If the page is not in the list then -the page was not updated between the most recent update to the on-disk -version (the ``true'' LSN of the page), and the point at which the -list was written to log. Therefore, we use the LSN of the log entry that contains the list. -The buffer pool must maintain the dirty list whether or not LSN-free -pages are in use, so we expect the runtime overhead to be minimal. +The recovery LSN (RecLSN) is the LSN of the log entry +that caused a clean (up-to-date on disk) page to become dirty. No log +entries older than the RecLSN need to be applied to a page during +redo. Therefore, redo can safely estimate the page LSN with any number less than RecLSN. +If a page is not in the table, redo can use the LSN of the log +entry that contains the table, since the page must have been clean +when the log entry was produced. \yad writes the dirty page table to +log whether or not LSN-free pages are in use, so we expect the runtime +overhead to be minimal. + +%Each dirty list is an +%accurate sparse representation of the LSNs of the entire page file. +%If a page is present in the most recent list of dirty pages then we use +%the LSN in the list as our estimate. If the page is not in the list then +%the page was not updated between the most recent update to the on-disk +%version (the ``true'' LSN of the page), and the point at which the +%list was written to log. Therefore, we use the LSN of the log entry that contains the list. +%The buffer pool must maintain the dirty list whether or not LSN-free +%pages are in use, so we expect the runtime overhead to be minimal. \begin{figure} \includegraphics[% viewport=0bp 0bp 460bp 225bp, clip, width=1\columnwidth]{figs/lsn-estimation.pdf} -\caption{\label{fig:lsn-estimation}LSN estimation. If a page was not mentioned in the log, it must have been up-to-date on disk.} +\caption{\label{fig:lsn-estimation}LSN estimation. If a page was not mentioned in the log, it must have been up-to-date on disk. Here, RecLSN is the LSN of the entry that caused the page to become dirty. Subtracting one yields a safe estimate of the page LSN.} \vspace{-12pt} \end{figure} @@ -1564,17 +1578,20 @@ concurrently with their children~\cite{omtt}. QuickSilver is a distributed transactional operating system. It provides a transactional IPC mechanism, and allows varying degrees of isolation, both to support legacy code, and -to implement servers that require special isolation properties. +to provide an appropriate environment for custom transactional software~\cite{recoveryInQuickSilver}. +By providing an environment that allows multiple, +independently written, transactional programs to interoperate, QuickSilver +would complement \yad nicely. %It %supports transactions over durable and volatile state, and includes a %number of different commit protocols. -Interestingly, its shared logging facility does not -hard-code log format or recovery algorithms, and supports a number -of interesting optimizations such as distributed -logging~\cite{recoveryInQuickSilver}. QuickSilver's logging mechanism -is general enough to support \yad. +%Interestingly, its shared logging facility does not +%hard-code log format or recovery algorithms, and supports a number +%of interesting optimizations such as distributed +%logging~\cite{recoveryInQuickSilver}. QuickSilver's logging mechanism +%is general enough to support \yad. -The QuickSilver project showed that transactions meet the demands of most +The QuickSilver project showed that transactions can meet the demands of most applications, provided that long-running transactions do not exhaust system resources, and that flexible concurrency control policies are available. Nested transactions are diff --git a/doc/paper3/figs/lsn-estimation.pdf b/doc/paper3/figs/lsn-estimation.pdf index 7ed7cb8a76e7ab169f6417a2c4e7a5100d9fa64a..c7ea403b68ca366993c539e7ac6519e0fda0a3e9 100755 GIT binary patch delta 20304 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

tNLT&^vcP^$!v+0J0CX#LU?Pn$P{ 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