diff options
author | Keith Bostic <keith@wiredtiger.com> | 2013-11-09 09:59:04 -0500 |
---|---|---|
committer | Keith Bostic <keith@wiredtiger.com> | 2013-11-09 09:59:04 -0500 |
commit | 157a4e86a74b05baa047d22c062694e2d74b1a86 (patch) | |
tree | f3d3b0f749c4eb72e4cda24235b3c0f2a5ccc459 /test/suite | |
parent | 2255fa7fc95b67a316304544651990e2cc35b191 (diff) | |
download | mongo-157a4e86a74b05baa047d22c062694e2d74b1a86.tar.gz |
Compression changes.
Change compaction to attempt compaction any time it looks likely we can
recover the last 10% of the file, and, for now, to only attempt to
recover that last 10% of the file.
Don't rewrite a block if there isn't a useful available block in the
first 90% of the file. (Previously, compacting the whole file in one
pass could end up re-writing blocks to available blocks at the end of
the file which isn't useful, and, in some cases, even extending the
file.
The reason we're only compacting the last 10% of the file is that we
will need to checkpoint periodically otherwise re-written blocks, which
should be the new, available blocks for compaction, won't be considered
because they're still in use. Doing that automatically will be the next
set of changes.
Change compaction to use first-fit allocation instead of best-fit so
we're always copying to the beginning of the file if at all possible.
Add WT_SESSION::create "block_allocation" configuration string, allows
applications to configure first-fit. Change test/format to use the
first-fit algorithm 20% of the time.
Remove the WT_SESSION.compact "trigger" configuration string, it's no
longer used.
Rename WT_SESSION::create "allocation_size" configuration string to
"block_allocation_size" to match "block_allocation" and
"block_compressor" configuration strings.
Inline the block extension search functions, they get called a lot.
Add "compact" verbose debugging string.
Fix a bug where a spinlock could be left held by compaction.
Diffstat (limited to 'test/suite')
-rw-r--r-- | test/suite/test_base01.py | 6 | ||||
-rw-r--r-- | test/suite/test_base02.py | 2 | ||||
-rw-r--r-- | test/suite/test_bug004.py | 3 | ||||
-rw-r--r-- | test/suite/test_checkpoint01.py | 2 | ||||
-rw-r--r-- | test/suite/test_compact.py | 3 | ||||
-rw-r--r-- | test/suite/test_cursor_random.py | 4 | ||||
-rw-r--r-- | test/suite/test_stat01.py | 3 | ||||
-rw-r--r-- | test/suite/test_truncate01.py | 6 | ||||
-rw-r--r-- | test/suite/test_truncate02.py | 2 | ||||
-rw-r--r-- | test/suite/test_truncate03.py | 3 | ||||
-rw-r--r-- | test/suite/wtscenario.py | 4 |
11 files changed, 22 insertions, 16 deletions
diff --git a/test/suite/test_base01.py b/test/suite/test_base01.py index 02a9aac6ad6..48dcbe4e9fe 100644 --- a/test/suite/test_base01.py +++ b/test/suite/test_base01.py @@ -37,9 +37,11 @@ class test_base01(wttest.WiredTigerTestCase): table_name2 = 'test_base01b.wt' def create_table(self, tablename): - extra_params = ',allocation_size=512,internal_page_max=16384,leaf_page_max=131072' + extra_params = ',block_allocation_size=512,' +\ + 'internal_page_max=16384,leaf_page_max=131072' self.pr('create_table') - self.session.create('table:' + tablename, 'key_format=S,value_format=S' + extra_params) + self.session.create('table:' + tablename, + 'key_format=S,value_format=S' + extra_params) def cursor_s(self, tablename, key): cursor = self.session.open_cursor('table:' + tablename, None, None) diff --git a/test/suite/test_base02.py b/test/suite/test_base02.py index 10137c772b0..ebbef5b2bdd 100644 --- a/test/suite/test_base02.py +++ b/test/suite/test_base02.py @@ -57,7 +57,7 @@ class test_base02(wttest.WiredTigerTestCase): """ conf_confsize = [ None, - 'allocation_size=1024', + 'block_allocation_size=1024', 'internal_page_max=64k,internal_item_max=1k', 'leaf_page_max=128k,leaf_item_max=512', 'leaf_page_max=256k,leaf_item_max=256,internal_page_max=8k,internal_item_max=128', diff --git a/test/suite/test_bug004.py b/test/suite/test_bug004.py index 8bd2bcaf012..ab2453524a5 100644 --- a/test/suite/test_bug004.py +++ b/test/suite/test_bug004.py @@ -39,7 +39,8 @@ class test_bug004(wttest.WiredTigerTestCase): uri = 'file:test_ovfl_key' # Use a small page size because we want to create overflow items - config = 'allocation_size=512,leaf_page_max=512,value_format=S,key_format=S' + config = 'block_allocation_size=512,' +\ + 'leaf_page_max=512,value_format=S,key_format=S' nentries = 30 diff --git a/test/suite/test_checkpoint01.py b/test/suite/test_checkpoint01.py index e3f23f7298c..b078aabffb7 100644 --- a/test/suite/test_checkpoint01.py +++ b/test/suite/test_checkpoint01.py @@ -114,7 +114,7 @@ class test_checkpoint(wttest.WiredTigerTestCase): # the correct key/value pairs. self.session.create(self.uri, "key_format=" + self.fmt +\ - ",value_format=S,allocation_size=512,leaf_page_max=512") + ",value_format=S,block_allocation_size=512,leaf_page_max=512") self.build_file_with_checkpoints() self.check() diff --git a/test/suite/test_compact.py b/test/suite/test_compact.py index 6348054dc3d..844d2b1210b 100644 --- a/test/suite/test_compact.py +++ b/test/suite/test_compact.py @@ -37,7 +37,8 @@ class test_compact(wttest.WiredTigerTestCase, suite_subprocess): name = 'test_compact' # Use a small page size because we want to create lots of pages. - config = 'allocation_size=512,leaf_page_max=512,value_format=S,key_format=S' + config = 'block_allocation_size=512,' +\ + 'leaf_page_max=512,value_format=S,key_format=S' nentries = 40000 types = [ diff --git a/test/suite/test_cursor_random.py b/test/suite/test_cursor_random.py index 56d4fee285c..a817d33818d 100644 --- a/test/suite/test_cursor_random.py +++ b/test/suite/test_cursor_random.py @@ -76,11 +76,11 @@ class test_cursor_random(wttest.WiredTigerTestCase): uri = self.type + 'random' if self.type == 'file:': simple_populate(self, uri, - 'allocation_size=512,leaf_page_max=512,key_format=' +\ + 'block_allocation_size=512,leaf_page_max=512,key_format=' +\ self.fmt, 10000) else: complex_populate(self, uri, - 'allocation_size=512,leaf_page_max=512,key_format=' +\ + 'block_allocation_size=512,leaf_page_max=512,key_format=' +\ self.fmt, 10000) # Close the connection so everything is forced to disk (otherwise the diff --git a/test/suite/test_stat01.py b/test/suite/test_stat01.py index 21f19a2aea4..efb167172b7 100644 --- a/test/suite/test_stat01.py +++ b/test/suite/test_stat01.py @@ -37,7 +37,8 @@ class test_stat01(wttest.WiredTigerTestCase): tablename = 'test_stat01.wt' uri = 'file:' + tablename - config = 'key_format=S,allocation_size=512,internal_page_max=16K,leaf_page_max=128K' + config = 'key_format=S,' +\ + 'block_allocation_size=512,internal_page_max=16K,leaf_page_max=128K' nentries = 25 # Override WiredTigerTestCase, we have extensions. diff --git a/test/suite/test_truncate01.py b/test/suite/test_truncate01.py index fcac125bd3f..5df4f853a71 100644 --- a/test/suite/test_truncate01.py +++ b/test/suite/test_truncate01.py @@ -183,12 +183,12 @@ class test_truncate_cursor(wttest.WiredTigerTestCase): # those tests to file objects. types = [ ('file', dict(type='file:',\ - config='allocation_size=512,leaf_page_max=512,key_format=')), + config='block_allocation_size=512,leaf_page_max=512,key_format=')), ('file8t', dict(type='file:',\ - config='allocation_size=512,\ + config='block_allocation_size=512,\ leaf_page_max=512,value_format=8t,key_format=')), ('table', dict(type='table:',\ - config='allocation_size=512,leaf_page_max=512,key_format=')), + config='block_allocation_size=512,leaf_page_max=512,key_format=')), ] keyfmt = [ ('integer', dict(keyfmt='i')), diff --git a/test/suite/test_truncate02.py b/test/suite/test_truncate02.py index fb0172a4c54..f50cd9502b7 100644 --- a/test/suite/test_truncate02.py +++ b/test/suite/test_truncate02.py @@ -45,7 +45,7 @@ class test_truncate_fast_delete(wttest.WiredTigerTestCase): # of individual pages in the file. types = [ ('file', dict(type='file:', config=\ - 'allocation_size=512,leaf_page_max=512,' +\ + 'block_allocation_size=512,leaf_page_max=512,' +\ 'value_format=S,key_format=')), ] diff --git a/test/suite/test_truncate03.py b/test/suite/test_truncate03.py index 4b497999df3..bbc4c9e0362 100644 --- a/test/suite/test_truncate03.py +++ b/test/suite/test_truncate03.py @@ -38,7 +38,8 @@ class test_truncate_address_deleted(wttest.WiredTigerTestCase): # Use a small page size and lots of keys because we want to create lots # of individual pages in the file. nentries = 10000 - config = 'allocation_size=512,leaf_page_max=512,value_format=S,key_format=S' + config = 'block_allocation_size=512,' +\ + 'leaf_page_max=512,value_format=S,key_format=S' # address_deleted routine: # Create an object that has a bunch of address-deleted cells on disk. diff --git a/test/suite/wtscenario.py b/test/suite/wtscenario.py index 7091052e356..b867ec38859 100644 --- a/test/suite/wtscenario.py +++ b/test/suite/wtscenario.py @@ -219,11 +219,11 @@ class wtscenario: if hasattr(self, 'imax'): res += ',internal_page_max=' + str(self.imax) if self.imax < 4*1024: - res += ',allocation_size=512' + res += ',block_allocation_size=512' if hasattr(self, 'loverflow'): res += ',leaf_item_max=' + str(self.loverflow) if hasattr(self, 'lmax'): res += ',leaf_page_max=' + str(self.lmax) if self.lmax < 4*1024: - res += ',allocation_size=512' + res += ',block_allocation_size=512' return res |