|
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 ...
|
| #
3cee7d1b |
| 13-Jul-2016 |
dormando <[email protected]> |
shuffle the EXPERIMENTAL tag.
|
| #
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 ...
|
| #
6975235c |
| 09-Jul-2016 |
dormando <[email protected]> |
CLRF in binprot was inverted.
now extends data in the chunk rather than overwriting the end.
|
| #
5978cf70 |
| 09-Jul-2016 |
dormando <[email protected]> |
chunked append/prepend now work.
This is also the only actual tests of append and prepend in the codebase :/ t/binary.t had some simple tests but no others were ever written.
|
| #
3e10a71d |
| 09-Jul-2016 |
dormando <[email protected]> |
protect binary sasl from chunked items.
not entirely sure how to test this or guarantee people don't set the chunk low enough to cause problems. might circle back to add better tests.
|
| #
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 ...
|
| #
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.
|
| #
7979cdbd |
| 06-Jul-2016 |
David Oliveira <[email protected]> |
Update memcached.c
It's returning an error when we try to cachedump the slab 63
|
| #
96d50a8c |
| 12-Jul-2016 |
dormando <[email protected]> |
Fix ancient binprot bug with OOM errors desycning
sets getting OOM's for item alloc would swallow the upload bytes in ascii protocol but missed in binprot. Swallow is usually passed through write_bi
Fix ancient binprot bug with OOM errors desycning
sets getting OOM's for item alloc would swallow the upload bytes in ascii protocol but missed in binprot. Swallow is usually passed through write_bin_error, but out_of_memory() calls write_bin_error indirectly with a zero for swallow.
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 ...
|
| #
09d5afad |
| 24-Jun-2016 |
J. Grizzard <[email protected]> |
Fix undefined behavior in vlen check
The size check for vlen in process_get_command was relying on undefined behavior (signed integer overflow) to check to see if vlen was greater than 2^31-2. This
Fix undefined behavior in vlen check
The size check for vlen in process_get_command was relying on undefined behavior (signed integer overflow) to check to see if vlen was greater than 2^31-2. This made certain compilers (such as clang 7.3.x) optimize out part of the conditional and prevent memcache from erroring when the specified size was exactly 2^31-1, leading to an incorrect error message and a core dump. This patch does that overflow test in a not-undefined-behavior way.
Fixes failure in issue_70.t test #4 on those platforms.
show more ...
|
| #
31541b37 |
| 23-Jun-2016 |
dormando <[email protected]> |
cache_memlimit command for tuning runtime maxbytes
Allows dynamically increasing the memory limit of a running system, if memory isn't being preallocated.
If `-o modern` is in use, can also dynamic
cache_memlimit command for tuning runtime maxbytes
Allows dynamically increasing the memory limit of a running system, if memory isn't being preallocated.
If `-o modern` is in use, can also dynamically lower memory usage. pages are free()'ed back to the OS via the slab rebalancer as memory is freed up. Does not guarantee the OS will actually give the memory back for other applications to use, that depends on how the OS handles memory.
show more ...
|
| #
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 ...
|
| #
d7fb022d |
| 22-Jun-2016 |
dormando <[email protected]> |
allow manually specifying slab class sizes
"-o slab_sizes=100-200-300-400-500" will create 5 slab classes of those specified sizes, with the final class being item_max_size.
Using the new online st
allow manually specifying slab class sizes
"-o slab_sizes=100-200-300-400-500" will create 5 slab classes of those specified sizes, with the final class being item_max_size.
Using the new online stats sizes command, it's possible to determine if the typical factoral slab class growth rate doesn't align well with how items are stored.
This is dangerous unless you really know what you're doing. If your items have an exact or very predictable size this makes a lot of sense. If they do not, the defaults are safer.
show more ...
|
| #
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.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 ...
|
| #
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 ...
|
| #
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 ...
|
| #
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.
|
| #
efa436fe |
| 13-Jun-2016 |
dormando <[email protected]> |
improve 'watch' command processing a little
moves to its own function, respods "OK\r\n" to client, allows multiple arguments for multiple flags. Needs more thought before adding sampling.
|
| #
d5f7f89a |
| 12-Jun-2016 |
dormando <[email protected]> |
remove "logger chunks", add individualized streams
Stop doing a multi-reader circular buffer structure on top of a circular buffer. Also adds individualized streams based off of the central buffer.
remove "logger chunks", add individualized streams
Stop doing a multi-reader circular buffer structure on top of a circular buffer. Also adds individualized streams based off of the central buffer.
Sadly this requires managing iovecs and dealing with partial writes into said iovecs. That makes things very complicated. Since it's not clear to me how to simplify it too much (as of this writing), one of the next commits should remove iovecs and instead give each watcher its own circular buffer. The parser thread will copy watched events into each buffer.
The above would only be slower for the case of many watchers watching the same event streams. Given all of the extra loops required for managing the iovecs, and the more complicated syscall handling, it might even be the same speed to manage multiple buffers anyway.
I completed this intermediary change since it simplifies the surrounding code and was educational to fiddle with iovecs again.
show more ...
|