summaryrefslogtreecommitdiff
path: root/tools
Commit message (Collapse)AuthorAgeFilesLines
* WT-3138 Enhance range of eviction server statistics available. (#3269)Alex Gorrod2017-07-141-0/+6
|
* WT-3402 Move cached overflow records to the update list. (#3493)Keith Bostic2017-07-041-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cached overflow records are large value items that are being written after being updated in a committed transaction (which implies freeing and the potential reuse of their backing disk blocks), but which also must be kept available because an older reader in the system may want to read the previous value. Historically, we maintained a separate cache of these overflow values in the WT_PAGE_MODIFY.WT_OVFL_TXNC structure, with a set of functions to maintain that list. The reason was because we wanted to be able to remove overflow items from the cache based on updated transactional information, that is, once any older readers exited the system, we could discard the overflow values from the cache. Since that code was written, we've added support for removing items from key/value WT_UPDATE lists when they're no longer needed by earlier readers in the system, making the WT_UPDATE lists sufficient to replace the separate overflow values cache. Rather than enter overflow values into the separate cache, append the value to the WT_UPDATE list, with an impossibly low transaction ID to ensure global visibility. * Remove a diagnostic printf. * sort statistics lists. * Delete the data-source and connection statistic cache_overflow_value. It doesn't tell us anything useful other than "there were older readers in the system", and there are better sources of that information. * The cached remove information is a WT_CELL, no reason to hide that. * Increment the page footprint based on __wt_update_alloc's return of the size, don't roll our own. * There's special-case code in reconciliation to handle an overflow value being removed, the overflow value being cached because of an older reader in the system, and then the page going through an update/restore reconciliation. The idea is that if we cache an overflow value for an older reader in the system, then do a page update/restore eviction, re-instantiating the page in-memory means we'll no longer find the removed overflow value in the cache because the index for the cache is the on-page disk address of the overflow value, which doesn't appear in a re-instantiated page. The fix was to take a copy of the original overflow value from the cache and append it to the key's WT_UPDATE list. With the move of the overflow cache from a separate list to the key's WT_UPDATE list, that special-case code is no longer needed. Now, if an overflow value is removed and cached, the cache is the key's WT_UPDATE list, and subsequent reconciliations will always see a globally visible entry. * Document the removal of the cache_overflow_value statistic. * Add WT_UPDATE_DATA_VALUE macro, it flags a WT_UPDATE structure that includes a standalone chunk of data, in other words, "standard" or "deleted", but not "reserved", or in the future, "modified". * Use "no transaction ID" instead of "impossibly low transaction ID".
* Merge branch 'master' into developAlex Gorrod2017-05-271-13/+15
|\ | | | | | | Pulling in the 2.9.2 release notes
| * WT-3342 Cut a WiredTiger 2.9.2 release (#3440)Alex Gorrod2017-05-262-13/+17
| |
* | WT-3222 Review and enhance log statistics (#3369)sueloverso2017-04-131-0/+2
| | | | | | Including removing a few redundant statistics, adding some new statistics, and improving the descriptions of others.
* | WT-3267 Upgrade copyright notices from 2016 to 2017. (#3374)Keith Bostic2017-04-073-3/+3
| |
* | WT-2898 evict dynamic workers (#3039)Alexandra (Sasha) Fedorova2016-12-281-0/+2
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * WT-2898. NOT ready for review. Initial implementation of dynamically tuning the number of eviction workers. * Not ready for review. All the code is there. Still need to test/tune on different machines. * Remove debugging prints. * Style police * Spelling. * Fixup merge issue and compiler warning * Sulab and David do a review! * Fix compiler warning. Not ready for review. There is a performance regression after merging with develop. I'm on it. * Conversion to signed values in percent calculation to make sure that we always correctly compute percent difference, which can be negative, regardless of how the complier performs sign extension. Change thresholds so we have less churn. * Fix more compiler warnnings. Sorry about the churn, I don't see the same failures locally as on the autobuild even though I compile with -Werror. * Replace 1/0 with true/false * More compiler warning and style fixes. Configured with --enable-strict, so hopefully I have caught everything this time. * Minor nit/pick, init a variable * Rename free to free_thread, otherwise hides a global * Fix indentation * Fixes to the changes. Percent difference must be signed as it can be negative if the number of pages evicted per second decreased since the last period. * Added stats and log messages to reflect eviction worker tuning activity. Fixed a bug in the code that checks the group bounds when stopping the thread. * Removed verbose message, because we already have a statistic tracking evictions per second, so this is probably redundant. * whitespace * KNF * More aggressive addition/removal of eviction workers. We used to add/remove them one at a time; it's difficult to see the effects of extra workers with such an incremental change, because eviction throughput is affected by other noise, such as what happens in the kernel and in the I/O system. Now we add and remove eviction workers in batches. * Style fixes. * Fix compiler warning. * Simplified the tuning logic. Addressed Sulabh's comments. * A tuning parameter change * Fixed a bug where we needed a random value, but were not getting it via the random number generator, so it was not random and the code did not have the right behaviour. Added stats. * Move the call to tune evict workers into __evict_pass, so we can begin the tuning earlier. * NOT READY FOR REVIEW. Changed defaults for the number of eviction workers, so I can experiment with larger values. * NOT READY FOR REVIEW. A parameter to put a cap on how many threads we are adding at a time. * Reverse the changes of the last commit. That change hurt performance. * Changed all wtperf runners that set eviction thread maximum to 30, so we could evaluate the effects of the dynamic branch. * Updated the number reserved for internal sessions to 40, since we can now create up to 30 eviction worker threads by default. * Fix spellchecker complaints * KNF * NOT READY FOR REVIEW. Revised the algorithm to settle on a good value of evict workers once we sufficiently explore the configuration space using the gradient descent approach with random adjustments. The algorithm successfully finds the best static number of workers, but performs works. I suspect that there is an issue with how threads are removed. Suspect a bug in thread support code. Have not chased it yet. * Remove prints, add stats. * Fix a copy-paste bug where a code line was inadvertently eliminated. * Reduce the maximum for eviction workers to 30. Prevent dereferencing a NULL pointer if we dynamically grow a thread group after we've shrunk it and freed the associated memory. * Cleaned up and simplified the code. * NOT READY FOR REVIEW. A new version of the tuning algorithm that fixes a memory issue when we try to pre-allocate a large eviction thread group. Still need to tune and clean up the code. * Clean up the code. * Get rid of s_label warnings. Remove unused code. * Fix various style errors. * Fixed the logic in figuring out the maximum value for eviction threads upon cache creation or reconfiguration, which had caused a crash in one of the tests. * Changed default max for the number of eviction threads to eight. * Fix ranges for the minimum number of eviction threads * Fix eviction thread ranges to make the csuite happy * Commit automatic changes by s_all * Review: KNF, whitespace and renamed a few things. * Fix lock usage * KNF
* WT-2771 Add a statistic to track per-btree dirty cache usage. (#3207)Michael Cahill2016-12-201-0/+2
|
* WT-283 Add WT_SESSION::alter method (#3177)sueloverso2016-12-151-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * WT-283 Add WT_SESSION:alter method * Add new method to ex_all.c * Typo * Add testing and fixes for LSM, column groups and indexes for alter. * Fix WITH_*_LOCK macro usage. * Whitespace * Change table alter to not walk down into column groups and indexes. * Whitespace * Use base file meta config and compare strings. * Add skip stat * Add alter support to wt command. * Add util_alter.c to SConstruct * Fix subsection in doc. * Add alter thread to test/format * Swap the value we send into alter in test/format. * Add data-source alter support * Only alter access pattern hint in test/format. * Make LSM alter not exclusive. * Whitespace * Use access_pattern_hint in example. * Include base lsm metadata configuration. * Fix text/comment. * Minor changes from review comments. * Unused variable warning.
* Cut WiredTiger WT-2.9.0 release2.9.0David Hows2016-12-071-14/+13
|
* WT-1592 Add per-dhandle current cache usage statistics (#3062)Alex Gorrod2016-10-142-1/+41
| | | Exposed via a new 'cache_walk' statistics configuration option.
* WT-2955 Add statistics tracking the amount of time threads spend waiting for ↵Keith Bostic2016-10-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | high level locks (#3086) * WT-2955 Add statistics tracking the amount of time threads spend waiting for high level locks Sort the statistics categories so it's easier to find stuff, no real change. * Add counters and usec wait times to long-term locks (currently the checkpoint, handle-list, metadata, schema and table locks). * mutex.i:295:26: error: conversion to int64_t {aka long int} from long unsigned int may change the sign of the result [-Werror=sign-conversion] [t->slot_usecs] += WT_TIMEDIFF_US(leave, enter); * Rename the lock statistics so they group together. Split lock wait times between internal and application threads. * Separate the connection's dummy session initialization out into its own function, that way it's clear what we're doing. * The session's connection statistics are fixed when the session ID is allocated, so we can cache a pointer to them and avoid u_int divisions (which are currently about the slowest thing you can do on a modern architecture). * A slightly different change: instead of caching a reference to the connection statistics, cache the offset into the array of statistics pointers, that way we can avoid the integer division when updating almost all statistics. * Review comments: Add comments describing the use of statistics array offsets in lock tracking. Rename WT_STATS_FIELD_TO_SLOT to WT_STATS_FIELD_TO_OFFSET. Whitespace cleanup. * __wt_cache_create() doesn't need to call __wt_cache_destroy() explicitly, if the connection open fails at any point, __wt_cache_destroy() will be called as part of that cleanup. * Append the suffix "_off" to the spinlock structure statistics field names, clarify they're offsets into the statistics structures.
* WT-2902 Track per-tree the efficiency of eviction walks. (#3036)Michael Cahill2016-09-141-0/+2
| | | | | | | | | Some workloads create "deserts" within a tree where no good eviction candidates can be found (e.g., zipfian distributions, append-only workloads, etc.). Rather than walking all the way through such regions, give up and try in the opposite direction next time. Also add a statistic for the eviction empty score.
* WT-2816 General improvements to WiredTiger eviction performance (#2949)Michael Cahill2016-08-261-0/+6
| | | | | | | | | | A set of changes to the eviction algorithm including: * Fix a bug in how many items can be added to the urgent queue * Have the eviction server sleep less so it recovers from disruptions faster. * Only have application threads evict dirty pages if they are blocked on the dirty trigger. * Swap eviction queues when one becomes empty. * Have the eviction server populate the "other" queue whenever it notices that it isn't full.
* WT-2764 Replace write leaves phase of checkpoints. (#2876)Michael Cahill2016-08-031-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Instead, get multi-threaded writes by dialling down the eviction dirty trigger. Change eviction_dirty_* defaults (to 20/5). Make sure all files are available for eviction before starting fsync. Take more care excluding clean files from checkpoints. Only use scrubbing mode when there is minimal cache pressure. Avoid penalizing read-only operations with dirty eviction targets. Enable scrubbing when eviction is keeping space available in cache. Add stats for checkpoint scrubbing phase. Improve cache scrubbing with big caches and slow I/O. Use the rate of bytes written from cache to decide how long to wait for the dirty bytes to come down.
* WT-2770 Add statistics tracking schema operations (#2925)Sulabh Mahajan2016-08-031-0/+32
| | | | Schema operations for this purpose are table level methods on WT_SESSION handles.
* WT-2793 Enhance statistics related to overflow values (#2912)sueloverso2016-07-281-2/+1
| | | | | | | | * WT-2793 Remove very long running config. Rename the one we run. * Fix overflow stats. Make 130K overflow test use btree. * Add line to upgrading doc stating stat field removed.
* WT-2762 Handle 'Y' from wtperf monitor file. (#2871)sueloverso2016-07-121-0/+2
|
* WT-2665 Limit allocator fragmentation from the WiredTiger cache (#2799)Michael Cahill2016-06-301-0/+4
| | | | | | | | | | | | | | | | | | | | | | * Add a statistic for the amount of cache used for page images vs other objects * Reset the "maximum page size" statistic each checkpoint * Add a separate queue for urgent eviction, replaces existing WOULD_BLOCK eviction mode Until now, the eviction server has had to walk the cache to find pages that would otherwise block application threads. This change allows threads to put those pages directly on a queue that is checked before ordinary LRU eviction. * Don't queue pages for urgent eviction when eviction is disabled in a tree. Decouple evict_queue_lock and the individual queue's evict_lock in __evict_get_ref. Don't block the eviction server if there are many application threads waiting on a queue. * Take care with the urgent queue. Entries in the urgent queue cannot be skipped or they will not be considered again.
* WT-2729 Focus eviction on the largest trees in cache. (#2832)Michael Cahill2016-06-281-0/+2
| | | | | | | | | | | | | | | | | | Randomize visits to trees that use a tiny fraction of the cache. Other general eviction optimizations. Now that we are queuing more entries (potentially), make sure enough of them become candidates. Previously, a skewed distribution of read generations could mean that only 10% of queue entries were considered. Improve the efficiency of sorting the queue by calculating the score once when pages are added to the queue. Add a workload to exercise differential eviction from trees. In order to do that, add range partitioning to wtperf. Don't override icount in wtperf workloads with random_range set.
* SERVER-24580 Add more eviction stats to track efficiency. (#2830)Michael Cahill2016-06-231-0/+2
|
* WT-2541 Add stats showing active readers and writers (#2793)David Hows2016-06-201-1/+8
| | | | | | | | | | | | | | | | | | | | * WT-2541 Add stats showing active readers and writers * Fix use of RET_MSG instead of ERR_MSG * Change where we increment the active r/w stats * Add "active fsync" stat * Add new "Thread State" stat section, add fsync_io stat * KNF * Make thread stats not backwards breaking. Add atomic stat functions * Add ThreadState stats to system and evict groups * KNF
* WT-2610 Reduce hazard pointer array size. (#2731)sueloverso2016-05-171-0/+1
| | | | | | | | | | | | | | | | * WT-2610 Reduce hazard pointer array size. * Add session_count_idle and workload to wtperf. * Allocate session array outside the loop. * KNF * Remove diagnostic call to check hazard pointers. * Add a few hazard related statistics. * Revert change. Reinstate diagnostic hazard page check.
* WT-2448 Add no_scale flag into a couple of statistics.Alex Gorrod2016-03-071-0/+2
|
* WT-2429 Add a statistic to track eviction aggressive mode.Alex Gorrod2016-02-251-0/+2
|
* Upgrade copyright notices from 2015 to 2016.Keith Bostic2016-01-013-3/+3
|
* WT-2276. Added tool to crack and display contents of checkpoint 'addr'Don Anderson2015-12-111-0/+103
| | | | | cookie. Similar to 'wt list -c', but usable in situations where it may be difficult to run 'wt' (e.g. during a debugging session).
* Update wtstats graphing tool for 2.7.0 releaseAlex Gorrod2015-12-081-15/+17
|
* WT-2222 Fixup snapshot statistics re: review comments.Alex Gorrod2015-11-191-4/+0
|
* WT-2222 Add statistics for named snapshots.Alex Gorrod2015-11-181-0/+6
| | | | | | | New statistics are: * pinned by named snapshots * number of named snapshots created * number of named snapshots dropped
* Add a statistics value to track column-store RLE encoded values, so it'sKeith Bostic2015-09-061-0/+1
| | | | possible to tell how many values are being compressed by RLE encoding.
* WT-2038 Count and report the total number of data handlesMichael Cahill2015-08-141-0/+2
|
* Update wtstats tool.Alex Gorrod2015-05-151-21/+12
|
* Merge branch 'master' into developAlex Gorrod2015-04-221-12/+21
|\ | | | | | | | | Conflicts: README
| * Update autogenerated wtstats template file.Alex Gorrod2015-04-221-12/+21
| |
* | async_max_queue: collection statistic, aggregate doesn't apply, don'tKeith Bostic2015-03-301-0/+2
|/ | | | | | | | | | | | | | | | | | | | clear. cache_eviction_maximum_page_size: collection statistic, aggregate doesn't apply, don't clear. various txn_checkpoint_XXX statistics: collection statistic, aggregate doesn't apply various Btree maximum size statistics: aggregate the maximum value, rather than doing no aggregation at all. lsm_chunk_count: aggregate the count of LSM chunks. Add syntax checking code to stat.py to disallow aggregation flags for connection-level statistics. Reference #1742.
* Add statistics to track internal/overflow/leaf pages in cache.Alex Gorrod2015-03-241-0/+6
| | | | | | It is often useful to know if a cache is full of internal pages. I could have added page count tracking, but byte count tracking seems more useful (enough to justify the extra performance overhead).
* Add a new statistic tracking range of IDs pinned by a transaction.Alex Gorrod2015-03-161-0/+2
| | | | Refs #1746.
* Add a global checkpoint generation and track it per data handle.Alex Gorrod2015-03-111-0/+4
| | | | | | | Not yet used, but will be used to allow more eviction during checkpoints. Refs #1745
* Mark statistics with the right aggregation flags.Alex Gorrod2015-03-101-0/+4
| | | | | | | | Specifically cache dirty tracking and log preallocation. This helps wtstats graph generator. Refs #1742
* Cut WiredTiger release 2.5.1Alex Gorrod2015-03-091-12/+12
|
* With the commit of #1676, we should no longer need the wtperf_stats toolKeith Bostic2015-02-1920-2351/+0
| | | | or subdirectory.
* fixes and improvements for wtperf parsingThomas Rueckstiess2015-02-163-145/+237
| | | | | | | | - convert wtperf microsec to millisec - don't skip monitor* files when parsing directory - parsing code reorganization - renamed wtperf stats fixture - added tests
* added small wtperf fixture file for testing.Thomas Rueckstiess2015-02-131-0/+41
|
* added support to parse wtperf files.Thomas Rueckstiess2015-02-131-11/+40
| | | | they go into a separate stats section named "wtperf".
* Change s_wtstats to run "npm install", run all npm commands --quiet.Keith Bostic2015-02-061-0/+10027
| | | | | Add the wtstats template file (wtstats.html.template) to the tree. Strip the wtstats/{test,template} subdirectories from the release.
* Add wtperf_stats back into the tree.Keith Bostic2015-02-0620-0/+2351
|
* Move the tools/XXX wtstats sources down one level, to tools/wtstats.Keith Bostic2015-02-0640-0/+0
|
* some minor fixes to template UI documentation.Thomas Rueckstiess2015-02-051-5/+5
|
* added documentation for wtstats tool UI.Thomas Rueckstiess2015-02-051-3/+53
|