Commit Graph

115 Commits

Author SHA1 Message Date
Michael Cahill
f152f47829 When using fsync or fdatasync for log durability, have groups of threads piggyback on a single call. This moves most of the stalling to one place, so remove other condition variables and spin instead.
refs #831
2014-01-08 17:14:40 +11:00
Keith Bostic
3b466304e4 Track connection & session data handle sweeps consistently, move
a #define into WT's name space.
2013-11-30 10:04:22 -05:00
Keith Bostic
30b50f1e06 Use the same timestamp format in wtperf output as in statistics_log
output, that way it's easy to match the graphs against each other.

Fix a couple of trivial typos in statistics strings.
2013-11-27 14:01:34 -05:00
Keith Bostic
c73f1fe70d Add a connection statistic when checkpoint is running so statlog will
track checkpoints.
2013-11-24 11:19:44 -05:00
Michael Cahill
5d1c4134ab Cleanup warnings from s_all. 2013-11-21 16:16:35 +11:00
Michael Cahill
5b014e6d2f Merge branch 'develop' into fine-grained-durability
Conflicts:
	src/include/stat.h
	src/include/wiredtiger.in
2013-11-21 14:58:04 +11:00
Keith Bostic
b4f012c3cf Start tuning the WT_SESSION_IMPL cache of WT_EXT and WT_SIZE structures.
Increase the pre-alloc of WT_EXT/WT_SIZE structures from 5/2 to 5/5 in
the write/free paths, and from 100/10 to 250/250 in the checkpoint path.

Turn off cache limits: checkpoints can take tens of thousands of WT_EXT
structures and hundreds of WT_SIZE structures, we want to cache
everything until the checkpoint completes.  Add a cleanup call after the
checkpoint so we don't tie down megabytes of memory between checkpoints.

Split the previous pre-allocate function into two parts, it's simpler
as a function to pre-allocate entries and a separate function to take
an entry for use.

Remove the tracking of "memory allocations while locked"; there are
extent lists we read while not holding any locks, and they can be
really, really large requiring the allocation of tens of thousands of
WT_EXT structures, they make the statistic meaningless.
2013-11-18 14:19:22 -05:00
Alex Gorrod
fbceae85e6 Merge branch 'develop' into fine-grained-durability
Conflicts:
	src/conn/conn_log.c
	src/include/wiredtiger.in
	src/log/log.c
2013-11-18 13:05:36 +11:00
Keith Bostic
cc81a90184 Rename block manager statistics with "block manager" prefix so they sort
together.

Add a statistic for block manager memory allocations while holding the
system locked.
2013-11-17 13:13:09 -05:00
Alex Gorrod
7ef7265f53 Don't use condition variables in log code when no-sync is configured.
Also add some statistics to the log slot code.
2013-11-14 16:19:57 +11:00
Michael Cahill
5fef282275 Merge branch 'develop' into fine-grained-durability
Conflicts:
	dist/api_data.py
	src/config/config_def.c
	src/include/flags.h
	src/include/wiredtiger.in
2013-11-11 17:40:21 +11:00
Michael Cahill
b53a1748b5 Go back to "allocation_size" to avoid breaking the world. 2013-11-11 12:01:27 +11:00
Keith Bostic
33664b5dae Merge branch 'develop' into compress 2013-11-09 10:23:32 -05:00
Keith Bostic
157a4e86a7 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.
2013-11-09 09:59:04 -05:00
Michael Cahill
966cec8b0e Merge branch 'develop' into fine-grained-durability 2013-11-08 16:06:55 +11:00
Michael Cahill
3587ea44b9 imported patch spelling 2013-11-08 16:05:24 +11:00
Michael Cahill
61b776e169 Merge branch 'develop' into fine-grained-durability
Conflicts:
	src/include/wiredtiger.in
2013-11-08 16:03:15 +11:00
Alex Gorrod
946f7b408b Add statistics tracking forced eviction. 2013-11-08 11:11:26 +11:00
Michael Cahill
a81ef11988 Merge branch 'develop' into fine-grained-durability
Conflicts:
	dist/api_data.py
	dist/flags.py
	src/include/flags.h
	src/include/txn.h
	src/include/txn.i
	test/thread/t.c
2013-11-08 10:20:16 +11:00
Keith Bostic
15c1bbf1de Add a statistic of the number of bytes currently available in the file
for re-use.
2013-11-05 06:48:42 -05:00
Michael Cahill
aa6c1500b2 Check Python scripts for 80 column line wrapping, fix violations. 2013-11-05 09:47:42 +11:00
Michael Cahill
56d82a4eb9 Merge branch 'develop' into fine-grained-durability
Conflicts:
	dist/stat_data.py
	src/include/wiredtiger.in
	src/support/stat.c
	test/salvage/salvage.c
	test/thread/t.c
2013-11-05 09:38:41 +11:00
Keith Bostic
023e2be681 Make memory statistics sort together, get rid of most of the uses of
"total", it doesn't add information for connection-only statistics.
2013-11-01 15:58:56 -04:00
Alex Gorrod
51970260a3 Add statistics to log buffering and general review cleanup. 2013-10-25 07:25:17 +11:00
Susan LoVerso
64584bd7fe Remove uninteresting stat. #586 2013-10-23 16:10:30 -04:00
Keith Bostic
ecbaf9f5e7 The stat "clear" function isn't correct for initialization because it
ignores some fields, its intent is to clear specific fields between
stat calls, not clear the whole structure.  Add clear functionality
to the stat initialization function so it can be used to refresh stat
structures.

Change the name of the stat "clear" function to "refresh" so nobody
makes this mistake in the future (but don't drive that change out to the
application-level, "clear" is still the right way for the application
programmer to think about this).

Change the LSM and the table statistics aggregation code to always call
the statistics structure's init function, that will clear any previous
values.
2013-10-11 16:05:33 -04:00
Keith Bostic
1027c6de96 The cursor's write-generation value is no longer used, it's only set and
then never read.  Remove it, along with the __wt_page_write_gen_check()
function.
2013-08-24 13:37:36 -04:00
Alex Gorrod
4fba0f1725 Merge branch 'develop' into split-hot-pages 2013-08-15 11:29:04 +10:00
Susan LoVerso
ef8fbd6bf8 Periodically close session and connection dhandles that are no longer
used. (#586)
2013-08-13 13:28:54 -04:00
Alex Gorrod
8d24a72c54 Changes to page splitting as per review comments. 2013-08-13 14:03:16 +10:00
Alex Gorrod
9d0a38ebbe Implement the rest of splitting pages in memory if they can't be evicted. 2013-08-09 17:10:38 +10:00
Susan LoVerso
e09a1f5ca9 Merge branch 'develop' into logging 2013-07-15 13:58:26 -04:00
Keith Bostic
d420a6ad73 It's a lot more interesting when internal pages have overflow keys than
when leaf pages do.  Split the statistic into two parts.

Ref #592.
2013-07-13 17:50:17 -04:00
Susan LoVerso
17411239f2 Add a couple new stats. Changes to handle direct_io. 2013-06-19 16:24:25 -04:00
Susan LoVerso
4da096c2a4 Merge branch 'develop' into logging
Conflicts:
	src/config/config_def.c
	src/include/flags.h
	src/include/wiredtiger.in
2013-06-17 10:12:18 -04:00
Michael Cahill
f81829dff4 Change transaction IDs to 64-bits, remove code that deals with wrapping. 2013-06-05 17:10:11 +10:00
Susan LoVerso
d6d2b91bba Remove unnecessary total_len from log record. 2013-05-29 12:05:36 -04:00
Susan LoVerso
2ba6a37200 Add flags to flags.py. Implement log_scan API. Some bug fixes. 2013-05-29 11:38:42 -04:00
Keith Bostic
e5da7fd58d Create a more general-purpose block-manager preload call and pre-load
individual pages instead of using the page locations to guess at the
right file chunks.
2013-05-28 10:37:02 -04:00
Susan LoVerso
9be544a6f4 Basic __wt_log_read function and some test code to use it. 2013-05-22 16:12:37 -04:00
Susan LoVerso
564391ac11 Add direct_io support for logging. 2013-05-20 13:39:38 -04:00
Susan LoVerso
46112caa7b Add file_max config back in. Fix a few statistics. 2013-05-20 11:47:24 -04:00
Susan LoVerso
9b91d7a174 Merge branch 'develop' into logging. Commit merge conflicts.
Conflicts:
	dist/stat_data.py
	src/conn/conn_api.c
	src/conn/conn_open.c
	src/include/wiredtiger.in
2013-05-09 15:56:52 -04:00
Susan LoVerso
a02ce38f56 Start logging implementation 2013-05-09 15:50:16 -04:00
Alex Gorrod
98f36a6e6b Merge branch 'develop' into app-forced-eviction
Conflicts:
	src/include/wiredtiger.in
2013-05-07 11:46:46 +10:00
Keith Bostic
e4b439bcfc typo 2013-05-01 09:00:14 -04:00
Keith Bostic
ba47343283 Reverse the sense of the "scale" option, make it "no_scale" instead
(there are 100+ entries that scale, roughly 30 that don't).
2013-04-30 22:28:25 -04:00
Keith Bostic
1d06cf1d05 Use more verbose names for the various statistics entry flags. 2013-04-30 22:04:23 -04:00
Keith Bostic
9213cc4af1 Add support for aggregating data-source statistics, currently only
used by the LSM tree.

Add support for automatically updating the list of statistics that
are to be "scaled per second" by statlog.py.
2013-04-30 19:57:37 -04:00
Susan LoVerso
8aea74e292 Add reminder comment about statistics heuristic text. #518 2013-04-29 11:18:30 -04:00