summaryrefslogtreecommitdiff
path: root/test/suite
diff options
context:
space:
mode:
authorKeith Bostic <keith@wiredtiger.com>2013-11-09 09:59:04 -0500
committerKeith Bostic <keith@wiredtiger.com>2013-11-09 09:59:04 -0500
commit157a4e86a74b05baa047d22c062694e2d74b1a86 (patch)
treef3d3b0f749c4eb72e4cda24235b3c0f2a5ccc459 /test/suite
parent2255fa7fc95b67a316304544651990e2cc35b191 (diff)
downloadmongo-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.py6
-rw-r--r--test/suite/test_base02.py2
-rw-r--r--test/suite/test_bug004.py3
-rw-r--r--test/suite/test_checkpoint01.py2
-rw-r--r--test/suite/test_compact.py3
-rw-r--r--test/suite/test_cursor_random.py4
-rw-r--r--test/suite/test_stat01.py3
-rw-r--r--test/suite/test_truncate01.py6
-rw-r--r--test/suite/test_truncate02.py2
-rw-r--r--test/suite/test_truncate03.py3
-rw-r--r--test/suite/wtscenario.py4
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