|
Revision tags: 1.6.32, 1.6.31, 1.6.30, 1.6.29, 1.6.28, 1.6.27, 1.6.26, 1.6.25, 1.6.24, 1.6.23, 1.6.22, 1.6.21, 1.6.20, 1.6.19, 1.6.18, 1.6.17, 1.6.16, 1.6.15, 1.6.14, 1.6.13, 1.6.12, 1.6.11, 1.6.10, 1.6.9, 1.6.8, 1.6.7, 1.6.6, 1.6.5, 1.6.4, 1.6.3, 1.6.2, 1.6.1, 1.6.0, 1.5.22, 1.5.21, 1.5.20, 1.5.19, 1.5.18, 1.5.17, 1.5.16, 1.5.15, 1.5.14, 1.5.13, 1.5.12, 1.5.11, 1.5.10, 1.5.9, 1.5.8, 1.5.7, 1.5.6, 1.5.5, 1.5.4, 1.5.3, 1.5.2, 1.5.1, 1.5.0, 1.4.39, 1.4.38, 1.4.37, flash-with-wbuf-stack, 1.4.36, 1.4.35, 1.4.34, 1.4.33, 1.4.32, 1.4.31, 1.4.30, 1.4.29, 1.4.28, 1.4.27, 1.4.26 |
|
| #
690a9a9d |
| 25-Mar-2016 |
Eiichi Tsukata <[email protected]> |
fix zero hash items eviction
If all hash values of five tail items are zero on the specified slab class, expire check is unintentionally skipped and items stay without being evicted. Consequently, n
fix zero hash items eviction
If all hash values of five tail items are zero on the specified slab class, expire check is unintentionally skipped and items stay without being evicted. Consequently, new item allocation consume memory space every time an item is set, that leads to slab OOM errors.
show more ...
|
| #
ee461d11 |
| 12-Jul-2016 |
dormando <[email protected]> |
slabs reassigns works with chunks and chunked items.
also fixes the new LRU algorithm to balance by total bytes used rather than total chunks used, since total chunks used isn't tracked for multi-ch
slabs reassigns works with chunks and chunked items.
also fixes the new LRU algorithm to balance by total bytes used rather than total chunks used, since total chunks used isn't tracked for multi-chunk items.
also fixes a bug where the lru limit wasn't being utilized for HOT_LRU
also some cleanup from previous commits.
show more ...
|
| #
51a828b9 |
| 07-Jul-2016 |
dormando <[email protected]> |
startup options for chunked items.
has spent some time under performance testing. For larger items there's less than 5% extra CPU usage, however the max usable CPU when using large items is 1/10th o
startup options for chunked items.
has spent some time under performance testing. For larger items there's less than 5% extra CPU usage, however the max usable CPU when using large items is 1/10th or less before you run out of bandwidth. Mixed small/large items will still balance out.
comments out debugging (which must be removed for release).
restores defaults and ensures only t/chunked-items.t is affected.
dyn-maxbytes and item_size_max tests still fail.
append/prepend aren't implemented, sasl needs to be guarded.
slab mover needs to be updated.
show more ...
|
| #
0567967a |
| 30-Jun-2016 |
dormando <[email protected]> |
chunked items checkpoint commit
can set and store large items via asciiprot. gets/append/prepend/binprot not implemented yet.
|
| #
cb01d504 |
| 27-Jun-2016 |
dormando <[email protected]> |
clean up global stats code a little.
tons of stats were left in the global stats structure that're no longer used, and it looks like we kept accidentally adding new ones in there. There's also an un
clean up global stats code a little.
tons of stats were left in the global stats structure that're no longer used, and it looks like we kept accidentally adding new ones in there. There's also an unused mutex.
Split global stats into `stats` and `stats_state`. initialize via memset, reset only `stats` via memset, removing several places where stats values get repeated. Looks much cleaner and should be less error prone.
show more ...
|
| #
80ce0108 |
| 27-Jun-2016 |
dormando <[email protected]> |
add get_flushed counter, fix expired_unfetched
get_flushed ticks when directly fetching something that classified as expired. LRU crawler was ticking expired_unfetched for unfetched _flushed_ values
add get_flushed counter, fix expired_unfetched
get_flushed ticks when directly fetching something that classified as expired. LRU crawler was ticking expired_unfetched for unfetched _flushed_ values. should no longer do that.
also removes get_expired from the global stats list. I missed that on review.
show more ...
|
| #
f85592dc |
| 24-Jun-2016 |
Ryan McCullagh <[email protected]> |
change LRU crawler fprintf to use %u format
|
| #
8d82383f |
| 23-Jun-2016 |
dormando <[email protected]> |
finish stats_sizes rewrite
Now relies on CAS feature for runtime enable/disable tracking. Still usable if enabled at starttime with CAS disabled. Also adds start option `-o track_sizes`, and a stat
finish stats_sizes rewrite
Now relies on CAS feature for runtime enable/disable tracking. Still usable if enabled at starttime with CAS disabled. Also adds start option `-o track_sizes`, and a stat for `stats settings`.
Finally, adds documentation and cleans up status outputs.
Could use some automated tests but not make or break for release.
show more ...
|
| #
ae6f4267 |
| 22-Jun-2016 |
dormando <[email protected]> |
online hang-free "stats sizes" command.
"stats sizes" is one of the lack cache-hanging commands. With millions of items it can hang for many seconds.
This commit changes the command to be dynamic.
online hang-free "stats sizes" command.
"stats sizes" is one of the lack cache-hanging commands. With millions of items it can hang for many seconds.
This commit changes the command to be dynamic. A histogram is tracked as items are linked and unlinked from the cache. The tracking is enabled or disabled at runtime via "stats sizes_enable" and "stats sizes_disable".
This presently "works" but isn't accurate. Giving it some time to think over before switching to requiring that CAS be enabled. Otherwise the values could underflow if items are removed that existed before the sizes tracker is enabled. This attempts to work around it by using it->time, which gets updated on fetch, and is thus inaccurate.
show more ...
|
|
Revision tags: 1.4.25, 1.4.24, 1.4.23, 1.4.22, 1.4.21, 1.4.20, 1.4.19 |
|
| #
181ef834 |
| 28-Apr-2014 |
dormando <[email protected]> |
treat and print item flags as unsigned int
most of the code would parse and handle flags as unsigned int, but passed into alloc functions as a signed int... which would then continue to print it as
treat and print item flags as unsigned int
most of the code would parse and handle flags as unsigned int, but passed into alloc functions as a signed int... which would then continue to print it as unsigned up until a change made in 2007. Now treat it fully as unsigned and print as unsigned.
show more ...
|
| #
c7fbcceb |
| 16-Jun-2016 |
dormando <[email protected]> |
logger endpoints for first release
swapping "RAWCMDS" for internal hooks on when items are fetched or stored.
This doesn't map 1:1 with commands, ie: a store is internally a fetch then store, so tw
logger endpoints for first release
swapping "RAWCMDS" for internal hooks on when items are fetched or stored.
This doesn't map 1:1 with commands, ie: a store is internally a fetch then store, so two log lines are generated. An ascii multiget one make one log line per key fetched.
It's a good place to start. Need to come back and refactor parts of logger.c again, then convert all prints in the codebase to log entries.
show more ...
|
| #
cb8257e3 |
| 16-Jun-2016 |
dormando <[email protected]> |
convert eviction log to new process
add LOGGER_LOG() macro wrapper for callers.
eviction logging is now using the "more final" method, where data is copied into structs embedded into the per-worker
convert eviction log to new process
add LOGGER_LOG() macro wrapper for callers.
eviction logging is now using the "more final" method, where data is copied into structs embedded into the per-worker circular buffer. This moves the expensive snprintf calls to the background thread, and also allows making the logging format switchable.
also switched the format to key=value. it's still largely readable but much easier to parse.
show more ...
|
| #
6a4e8e1f |
| 10-Jun-2016 |
dormando <[email protected]> |
switch from bit fields to bit manipulation
can't compare bit fields en-masse, which makes things too difficult.
|
| #
73407543 |
| 25-Nov-2015 |
dormando <[email protected]> |
manage logger watcher flags.
very temporary user control. allows to watch either fetchers or evictions, but not both, and always with timestamps.
|
| #
916fff36 |
| 18-Nov-2015 |
dormando <[email protected]> |
initial logger code.
Logs are written to per-thread buffers. A new background thread aggregates the logs, further processes them, then writes them to any "watchers".
Logs can have the time added to
initial logger code.
Logs are written to per-thread buffers. A new background thread aggregates the logs, further processes them, then writes them to any "watchers".
Logs can have the time added to them, and all have a GID so they can be put back into strict order.
This is an early preview. Code needs refactoring and a more complete set of options. All watchers are also stuck viewing the global feed of logs, even if they asked for different data.
As of this commit there's no way to toggle the "stderr" watcher.
show more ...
|
| #
85a0042b |
| 05-Apr-2016 |
Matt Fowles Kulukundis <[email protected]> |
Add braces around APPEND_NUM_FMT_STAT conditional
APPEND_NUM_FMT_STAT is a macro that expands to multiple statements, so it must have braces when used in a conditional.
|
| #
6895d23e |
| 09-Dec-2015 |
sergiocarlos <[email protected]> |
Implement get_expired stats
|
| #
1b13a586 |
| 29-May-2016 |
dormando <[email protected]> |
make cachedump print 0exp for noexpire items
re GH#128
|
| #
e688e97d |
| 18-Jan-2016 |
Natanael Copa <[email protected]> |
fix build with musl libc
musl libc will warn if you include sys/signal.h instead of signal.h as specified by posix. Build will fail due to -Werror explicitly beeing set.
Fix it by use the posix loc
fix build with musl libc
musl libc will warn if you include sys/signal.h instead of signal.h as specified by posix. Build will fail due to -Werror explicitly beeing set.
Fix it by use the posix location.
fixes #138
show more ...
|
| #
b6bf6df7 |
| 19-Nov-2015 |
dormando <[email protected]> |
'lru_crawler enable' blocks until ready
single CPU VM builders could fail: - spawn LRU crawler thread. - signal LRU crawler. - LRU crawler thread now waits on condition. - Crawler thread misses
'lru_crawler enable' blocks until ready
single CPU VM builders could fail: - spawn LRU crawler thread. - signal LRU crawler. - LRU crawler thread now waits on condition. - Crawler thread misses condition, sits forever.
Might also want to move the "stats.lru_crawler_running" bit to be updated when the crawler thread picks up the work to do, somehow.
show more ...
|
| #
b1debc4c |
| 10-Oct-2015 |
dormando <[email protected]> |
try harder to save items
previously the slab mover would evict items if the new chunk was within the slab page being moved. now it will do an inline reclaim of the chunk and try until it runs out of
try harder to save items
previously the slab mover would evict items if the new chunk was within the slab page being moved. now it will do an inline reclaim of the chunk and try until it runs out of memory.
show more ...
|
| #
1c3f0a3d |
| 06-Oct-2015 |
dormando <[email protected]> |
tune automove to required 2.5 pages of free chunks
if we're deciding to move pages right on the chunk boundary it's too easy to cause flapping.
|
| #
d6e96467 |
| 29-Sep-2015 |
dormando <[email protected]> |
first half of new slab automover
If any slab classes have more than two pages worth of free chunks, attempt to free one page back to a global pool.
Create new concept of a slab page move destinatio
first half of new slab automover
If any slab classes have more than two pages worth of free chunks, attempt to free one page back to a global pool.
Create new concept of a slab page move destination of "0", which is a global page pool. Pages can be re-assigned out of that pool during allocation.
Combined with item rescuing from the previous patch, we can safely shuffle pages back to the reassignment pool as chunks free up naturally. This should be a safe default going forward. Users should be able to decide to free or move pages based on eviction pressure as well. This is coming up in another commit.
This also fixes a calculation of the NOEXP LRU size, and completely removes the old slab automover thread. Slab automove decisions will now be part of the lru maintainer thread.
show more ...
|
| #
004e2211 |
| 29-Sep-2015 |
dormando <[email protected]> |
slab mover rescues valid items with free chunks
During a slab page move items are typically ejected regardless of their validity. Now, if an item is valid and free chunks are available in the same s
slab mover rescues valid items with free chunks
During a slab page move items are typically ejected regardless of their validity. Now, if an item is valid and free chunks are available in the same slab class, copy the item over and replace it.
It's up to external systems to try to ensure free chunks are available before moving a slab page. If there is no memory it will simply evict them as normal.
Also adds counters so we can finally tell how often these cases happen.
show more ...
|
| #
826403dd |
| 07-Sep-2015 |
dormando <[email protected]> |
restore slab_automove=2 support and add test
Test is a port of a golang test submitted by Scott Mansfield.
There used to be an "angry birds mode" to slabs_automove, which attempts to force a slab m
restore slab_automove=2 support and add test
Test is a port of a golang test submitted by Scott Mansfield.
There used to be an "angry birds mode" to slabs_automove, which attempts to force a slab move from "any" slab into the one which just had an eviction. This is an imperfect but fast way of responding to shifts in memory requirements.
This change adds it back in plus a test which very quickly attempts to set data in via noreply. This isn't the end of improvements here. This commit is a starting point.
show more ...
|