Sears Russell
b126b45bcc
Improve sequential write performance of buffer manager.
...
This patch adds support for "asyncForce" which forces all pages to disk that
were dirtied before the *previous* call call to asyncForce. This method
only applies to dirty pages in the Linux file cache (not in the Stasis buffer
pool), and is used by new writeback logic that bounds the amount of such
backlog that exists at any given time.
This patch also changes writeback behavior; the dirty page table now sorts
pages by pageid instead of LSN when it is invoked by writeback. When it is
invoked by log truncation, it still sorts by LSN.
2011-10-08 22:01:04 +00:00
Sears Russell
08c8be07b1
add support for fallocate(); enable it by default if it is available at build time.
2011-08-25 21:29:51 +00:00
Sears Russell
5364377fd9
Fix handling of lsns in loadUninitializedPage(). This change is more of a hack than I would like.
2011-03-25 20:03:50 +00:00
Sears Russell
ffa4f18283
add tryToWriteBackPage. concurrentBufferManager is now compatible with FORCE mode transactions.
2010-04-28 00:05:00 +00:00
Sears Russell
887832582c
expose stasis_handle_t up through the buffer manager; add sequential I/O hinting; fix stupid busy-wait in prefetch
2010-04-12 20:54:10 +00:00
Sears Russell
3c27ed566e
add prefetch primitives
2010-03-29 22:29:30 +00:00
Sears Russell
6deb34f5b2
fix handling of loadPageForOperation during recovery; initialize rid.size in slottedLast
2010-03-22 19:56:55 +00:00
Sears Russell
24650fa190
buffer manager refactoring; started work on new dirty page table writeback interface (to avoid circular dependencies)
2009-10-05 21:19:01 +00:00
Sears Russell
1ce1496226
dependency cleanups; removed compenastions from alloc.c
2009-08-22 00:01:02 +00:00
Sears Russell
0154f7d29d
IMPORTANT API CHANGE: stasis_dirty_page_table_flush_range() no longer force writes to disk. You now need to call forcePageRange() after flush page range returns.
...
This commit should significantly improve sequential write thoughput.
I found a segfault bug this morning, but cannot reproduce. Could be a heisenbug, or could have been a hardware fault (gojira repeatedly kernel paniced, then both problems went away...)
2009-08-13 05:53:48 +00:00
Sears Russell
907a24b68e
dirty page table flush was pinning pages, then asserting they were not pinned; updated page writeback api to allow correct usage
2009-08-08 01:43:03 +00:00
Sears Russell
c92ee87c32
improved behavior for sequential I/O performance, fixed races during writeback
2009-08-07 18:27:52 +00:00
Sears Russell
9ef3adf40c
- Fix compile warning + broken fcn pointer from last commit.
...
- Address crashes in Tupdate() and recovery caused by mixing segments and page oriented recovery (add loadPageForOperation() call)
2009-07-16 03:05:32 +00:00
Sears Russell
b44f8b17b3
Add getCachedPage() call. This allows dirtyPageTable to write back pages with out accidentally reading them back in from disk with loadPage(). This should improve performance and allow loadPageOfType() to be used safely.
2009-07-14 07:46:47 +00:00
Sears Russell
4493dbb88b
Added support for segment based recovery. For now, Stasis doesn't support hybrid recovery, so mixing page deallocation and segments will make recovery corrupt data / segfault.
2009-07-13 17:18:01 +00:00
Sears Russell
ade1dc896e
Add loadPageOfType() call. (Untested for now)
2009-07-07 21:33:49 +00:00
Sears Russell
87218ad929
yet another refactoring; broke groupForce into its own module, removed more static variables and namespace violations
2009-05-13 18:04:53 +00:00
Sears Russell
651a1a22e5
more refactoring; removed static variables from pageHandle.c
2009-05-08 04:56:34 +00:00
Sears Russell
7b4cf40221
refactored/created stasis_buffer_manager_open and stasis_handle_open
2009-05-07 08:52:06 +00:00
Sears Russell
7db35ecd39
removed static variables from bufferPool.c; renamed methods, moved Page typedef to common.h
2009-04-13 21:55:08 +00:00
Sears Russell
d9b00d457d
Remove old comment.
2008-12-01 04:29:42 +00:00
Sears Russell
cafd05f9bd
moved legacy buffer manager into its own directory
2008-11-13 20:08:37 +00:00
Sears Russell
6354fe8a2f
use pageid instead of int; Tupdate now takes a pageid instead of a recordid
2008-10-03 02:42:25 +00:00
Sears Russell
e6ec2cb9fc
Added "loadUninitializedPage()", which returns an uninitialized page instead of reading preimages from disk.
2008-06-09 01:13:02 +00:00
Sears Russell
2863487991
Documentation update; added more sections under modules, reduced amount of cruft generated by doxygen.
2008-04-23 01:41:57 +00:00
Sears Russell
87a70f29bc
Preliminary force_range implementation; lsmTable leaks significantly less space now.
2007-11-11 23:22:21 +00:00
Sears Russell
c9bbf3af94
Converted page.h to follow new naming convention; documented new page api; begun stasis documentation cleanup.
2007-10-02 00:18:33 +00:00
Sears Russell
90f011b049
New access method for the buffer manager; write coalescing; runtime bufferManager selection and a few bufferManager bugfixes.
2007-08-20 16:23:57 +00:00
Sears Russell
8367dfe9a3
releasePage() is now a function, not a function pointer. releasePageImpl is the name of the new function pointer.
2007-08-14 01:20:08 +00:00
no author
d0274c3304
Renamed 'lladd' directories and python module to 'stasis'
2007-06-11 21:36:57 +00:00