summaryrefslogtreecommitdiff
path: root/cache.h
Commit message (Collapse)AuthorAgeFilesLines
* core: cache.c cleanups, use queue.h freelistdormando2021-08-091-27/+9
| | | | | | | | | cache constructors/destructors were never used, which just ended up being wasted branches. Since there's no constructor/destructor for cache objects, we can use the memory itself for the freelist. This removes a doubling realloc for the freelist of cache objects and simplifies the code a bunch.
* add separate limits for connection buffersdormando2020-02-261-13/+9
| | | | | | | | | | | allows specifying a megabyte limit for either response objects or read buffers. this is split among all of the worker threads. useful if connection limit is extremely high and you want to aggressively close connections if something happens and all connections become active at the same time. missing runtime tuning.
* network: response stacking for all commandsdormando2020-02-011-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | This change refactors most of memcached's networking frontend code. The goals with this change: - Decouple buffer memory from client connections where plausible, reducing memory usage for currently inactive TCP sessions. - Allow easy response stacking for all protocols. Previously every binary command generates a syscall during response. This is no longer true when multiple commands are read off the wire at once. The new meta protocol and most text protocol commands are similar. - Reduce code complexity for network handling. Remove automatic buffer adjustments, error checking, and so on. This is accomplished by removing the iovec, msg, and "write buffer" structures from connection objects. A `mc_resp` object is now used to represent an individual response. These objects contain small iovec's and enough detail to be late-combined on transmit. As a side effect, UDP mode now works with extstore :) Adding to the iovec always had a remote chance of memory failure, so every call had to be checked for an error. Now once a response object is allocated, most manipulations can happen without any checking. This is both a boost to code robustness and performance for some hot paths. This patch is the first in a series, focusing on the client response.
* fix comment in cache.hdormando2019-04-261-2/+1
| | | | @hujiecs reported on github but repository was lost.
* fix solaris compilation errordormando2017-05-211-0/+2
| | | | don't normally exercise the UMEM code :( sorry!
* allow skipping thread-local cache locksdormando2017-01-071-0/+2
| | | | | suffix cache was using a generic cache system, which uses a mutex lock. the pools are per-thread however.
* typo in cache.hdormando2016-08-111-1/+1
| | | | reported by javierhonduco on github
* fix typo of comments in cache.h祁冰2016-05-291-1/+1
|
* Added documentation on the cache interfaceTrond Norbye2009-04-171-7/+79
|
* Create a generic cache for objects of same sizeTrond Norbye2009-04-171-0/+44
The suffix pool could be thread-local and use the generic cache