|
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 |
|
| #
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 ...
|
|
Revision tags: 1.4.28 |
|
| #
b05653f9 |
| 01-Jul-2016 |
dormando <[email protected]> |
chunked item second checkpoint
can actually fetch items now, and fixed a few bugs with storage/freeing.
added fetching for binprot. added some basic tests.
many tests still fail for various reason
chunked item second checkpoint
can actually fetch items now, and fixed a few bugs with storage/freeing.
added fetching for binprot. added some basic tests.
many tests still fail for various reasons, and append/prepend isn't fixed yet.
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.
|
| #
68c64594 |
| 28-Jun-2016 |
dormando <[email protected]> |
use X macros to remove several struct iterations
Adding new stats would require updating in too many locations. No longer have to. Could extend this a bit to do the actual stats printing, but for cl
use X macros to remove several struct iterations
Adding new stats would require updating in too many locations. No longer have to. Could extend this a bit to do the actual stats printing, but for clarity's sake I'll decide on that later.
show more ...
|
| #
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 ...
|
|
Revision tags: 1.4.27 |
|
| #
d704f2c0 |
| 24-Jun-2016 |
dormando <[email protected]> |
add -o watcher_logbuf_size=N worker_logbuf_size=N
the defaults should just about always be used, but this is now tunable for completeness. Also handy for writing tests.
This also hopefully makes th
add -o watcher_logbuf_size=N worker_logbuf_size=N
the defaults should just about always be used, but this is now tunable for completeness. Also handy for writing tests.
This also hopefully makes the watcher.t test not flaky anymore.
show more ...
|
|
Revision tags: 1.4.26, 1.4.25, 1.4.24, 1.4.23, 1.4.22, 1.4.21 |
|
| #
83ba6bd9 |
| 03-Sep-2014 |
Jay Grizzard <[email protected]> |
memcached idle connection killer
|
| #
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 ...
|
| #
0503b5e2 |
| 13-Jun-2016 |
dormando <[email protected]> |
some global stats for bg logger
four obvious ones. have a handy place to do the summarization when the logger wakes up for its run, avoiding the locks.
|
| #
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 ...
|
| #
9517c656 |
| 31-May-2016 |
dormando <[email protected]> |
bump some global stats to 64bit uints
total_items is pretty easy to overflow. Upped some of the others just in case.
|
| #
6895d23e |
| 09-Dec-2015 |
sergiocarlos <[email protected]> |
Implement get_expired stats
|
| #
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 ...
|
| #
8fa54f7e |
| 08-Oct-2015 |
dormando <[email protected]> |
split rebal_evictions into _nomem and _samepage
gross oversight putting two conditions into the same variable. now can tell if we're evicting because we're hitting the bottom of the free memory pool
split rebal_evictions into _nomem and _samepage
gross oversight putting two conditions into the same variable. now can tell if we're evicting because we're hitting the bottom of the free memory pool, or if we keep trying to rescue items into the same page as the one being cleared.
show more ...
|
| #
6ee8daef |
| 06-Oct-2015 |
dormando <[email protected]> |
call STATS_LOCK() less in slab mover.
uses the slab_rebal struct to summarize stats, more occasionally grabbing the global lock to fill them in, instead.
|
| #
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 ...
|
|
Revision tags: 1.4.20, 1.4.19, 1.4.18, 1.4.17, 1.4.16 |
|
| #
a1f269ee |
| 24-Jan-2013 |
Ian Miell <[email protected]> |
Record and report on time spent in listen_disabled
|
| #
369845f0 |
| 24-Apr-2015 |
dormando <[email protected]> |
fix major off by one issue
none of my machines could repro a crash, but it's definitely wrong :/ Very sad.
|
| #
a2fc8e93 |
| 20-Apr-2015 |
dormando <[email protected]> |
fix off-by-one with slab management
data sticking into the highest slab class was unallocated. Thanks to pyry for the repro case:
perl -e 'use Cache::Memcached;$memd = new Cache::Memcached { server
fix off-by-one with slab management
data sticking into the highest slab class was unallocated. Thanks to pyry for the repro case:
perl -e 'use Cache::Memcached;$memd = new Cache::Memcached { servers=>["127.0.0.1:11212"]};for(20..1000){print "$_\n";$memd->set("fo2$_", "a"x1024)};' (in a loop) with: ./memcached -v -m 32 -p 11212 -f 1.012
This serves as a note to turn this into a test.
show more ...
|
| #
c10feb9e |
| 13-Feb-2015 |
dormando <[email protected]> |
Make LRU crawler work from maint thread.
Wasn't sending the condition signal after a refactor :(
Also adds some stats to inspect how much work the LRU crawler is doing, and removes some printf nois
Make LRU crawler work from maint thread.
Wasn't sending the condition signal after a refactor :(
Also adds some stats to inspect how much work the LRU crawler is doing, and removes some printf noise for the LRU maintainer.
show more ...
|
| #
0aa1a82a |
| 10-Jan-2015 |
dormando <[email protected]> |
spinlocks never seem to help in benchmarks
If a thread is allowed to go to sleep, it can be woken up early as soon as the lock is freed. If we spinlock, the scheduler can't help us and threads will
spinlocks never seem to help in benchmarks
If a thread is allowed to go to sleep, it can be woken up early as soon as the lock is freed. If we spinlock, the scheduler can't help us and threads will randomly run out their timeslice until the thread actually holding the lock finishes its work.
In my benchmarks killing the spinlock only makes things better.
show more ...
|
| #
87ff9dc0 |
| 10-Jan-2015 |
dormando <[email protected]> |
small crawler refactor
Separate the start function from what was string parsing and allow passing in the 'remaining' value as an argument.
Also adds a (non-configurable yet) settings for how many c
small crawler refactor
Separate the start function from what was string parsing and allow passing in the 'remaining' value as an argument.
Also adds a (non-configurable yet) settings for how many crawls to run per sleep, to raise the default aggressiveness of the crawler.
show more ...
|
| #
4de89c8c |
| 09-Jan-2015 |
dormando <[email protected]> |
add `-o expirezero_does_not_evict` feature
When enabled, items with an expiration time of 0 are placed into a separate LRU and are not subject to evictions. This allows a mixed-mode instance where y
add `-o expirezero_does_not_evict` feature
When enabled, items with an expiration time of 0 are placed into a separate LRU and are not subject to evictions. This allows a mixed-mode instance where you can have a stronger "guarantee" (not a real guarantee) that items aren't removed from the cache due to low memory.
This is a dangerous option, as mixing unevictable items has obvious repercussions.
show more ...
|