Permalink
Commits on Dec 28, 2011
  1. Merge branch 'sonetica-prolongate' of github.com:Sonetica/memcached i…

    bobrik committed Dec 28, 2011
    …nto sonetica-prolongate
Commits on Nov 10, 2011
  1. disable issue 140's test.

    dormando committed Nov 9, 2011
    the fix for issue 140 only helped in the case of you poking at memcached with
    a handful of items (or this particular test). On real instances you could
    easily exhaust the 50 item search and still come up with a crap item.
    
    It was removed because adding the proper locks back in that place is
    difficult, and it makes "stats items" take longer in a gross lock anyway.
  2. Use a proper hash mask for item lock table

    dormando committed Oct 13, 2011
    Directly use the hash for accessing the table. Performance seems unchanged
    from before but this is more proper. It also scales the hash table a bit as
    worker threads are increased.
  3. push cache_lock deeper into item_alloc

    dormando committed Oct 3, 2011
    easy win without restructuring item_alloc more: push the lock down after it's
    done fiddling with snprintf.
  4. use item partitioned lock for as much as possible

    dormando committed Oct 3, 2011
    push cache_lock deeper into the abyss
  5. Remove the depth search from item_alloc

    dormando committed Oct 2, 2011
    Code checked 50 items before checking up to 50 more items to expire one, if
    none were expired. Given the shallow depth search (50) by any sizeable cache
    (as low as 1000 items, even), I believe that whole optimization was pointless.
    
    Flattening it to be a single test is shorter code and benches a bit faster as
    it holds the lock for less time.
    
    I may have made a mess of the logic, could be cleaned up a little.
  6. move hash calls outside of cache_lock

    dormando committed Oct 2, 2011
    been hard to measure while using the intel hash (since it's very fast), but
    should help with the software hash.
  7. Use spinlocks for main cache lock

    dormando committed Oct 2, 2011
    Partly by Ripduman Sohan
    
    Appears to significantly help prevent performance dropoff from additional
    threads, but only when the locks are frequently contested and are short.
  8. remove uncommon branch from asciiprot hot path

    dormando committed Sep 30, 2011
    The \0 test in the loop was accounting for 2% of memcached's CPU usage
    according to callgrind. strlen is an SSE4 instruction and can sniff out that
    null byte quickly.
  9. Allow all tests to run as root

    dormando committed Nov 10, 2011
    All the other tests did... just this one didn't. You really shouldn't build
    this thing as root.
Commits on Oct 27, 2011
  1. two second sleep can land on an odd boundry.

    dormando committed Oct 27, 2011
    we need time travel tests so all of these can go away.
Commits on Oct 17, 2011
  1. Add a systemd service file

    Miklos Vajna authored and dormando committed Oct 17, 2011
  2. Issue 224 - check retval of main event loop

    dormando committed Oct 17, 2011
    If main event loop bombs out early with an error, exit to the OS with an
    error.
Commits on Oct 12, 2011
  1. Fix -c so maxconns can be raised above default.

    dormando committed Oct 12, 2011
    SIGH. sorry.
Commits on Oct 11, 2011
Commits on Oct 4, 2011
  1. start-memcached writing wrong PID to $pidfile

    nshafer authored and dormando committed Oct 4, 2011
    after the doublefork was added, the pidfile was now of the intermediary pid,
    not the one forked after setsid.
  2. Add missing LRU bumps to binary get and others

    dormando committed Oct 4, 2011
    An audit turned up that the LRU bump to move just accessed items to the front
    was missing from the binary get command. It was also missing from incr/decr
    and the new touch commands.
    
    If someone was using the binary protocol exclusively, memcached would be
    acting as a FIFO for stored items.
Commits on Sep 29, 2011
  1. upgrade stats items counters to 64bit

    dormando committed Sep 29, 2011
    4 billion evictions should be enough for anybody!
  2. Add new stats expired_unfetched, evicted_unfetched

    dormando committed Sep 29, 2011
    The two stats represent items which expired and memory was reused, and valid
    items which were evicted, but never touched by get/incr/append/etc
    operations in the meantime.
    
    Useful for seeing how many wasted items are being set and then rolling out
    through the bottom of the LRU's.
Commits on Sep 28, 2011
  1. Allow setting initial size of the hash table

    dormando committed Sep 28, 2011
    Instances which run many millions of items can now have its hash table
    presized. This can avoid some minor memory churn during the warmup
    period.
  2. expose stats for the internal hash table

    dormando committed Sep 28, 2011
    Now users can tell how much memory is being used for the hash table structure.
    It also exposes the current hash power level, which is useful for presizing
    the structure.
  3. bug220: incr would sometimes return the previous item's CAS

    dustin authored and dormando committed Sep 28, 2011
    This happens when we allocate a new item instead of reusing the space
    of an existing one, but consistently set the CAS from the original
    item's CAS (which is being discarded).
  4. port bin_get fixes to bin_touch

    dormando committed Sep 28, 2011
    without setting write_and_go, multiple commands in one packet weren't always
    being processed.
  5. Fixed bug on multi get processing

    dpaneda authored and dormando committed Sep 23, 2011
  6. experimental maxconns_fast option

    dormando committed Sep 28, 2011
    Also fixes -c option to allow reducing the maximum connection limit.
    
    This gives a new option "-o maxconns_fast", which changes how memcached
    handles hitting the maximum connection limit. By default, it disables the
    accept listener and new connections will wait in the listen queue. With
    maxconns_fast enabled, new connections over the limited have an error written
    to them and are immediately closed by the listener thread.
    
    This is currently experimental, as we aren't sure how clients will handle the
    change. It may become the default in the future.
Commits on Sep 27, 2011
  1. Add an ASCII touch command.

    dormando committed Sep 27, 2011
    Not doing GAT for now since I'd have to iterate through gat/gats/multigat/etc.
    If there's demand, we can add it.
  2. Add binary GATK/GATKQ

    dormando committed Sep 27, 2011
    Apparently nothing tests GETK/GETKQ, so tests still have to be added.
    
    1.6 doesn't have GATK/GATKQ because the membase folks didn't need it. I'm
    adding them for completeness and because I don't want to argue about why
    people can't have it. If you're reading this, please use opaques :)
  3. Backport binary TOUCH/GAT/GATQ commands

    dormando committed Sep 27, 2011
    Taken from the 1.6 branch, partly written by Trond. I hope the CAS handling is
    correct.
Commits on Sep 3, 2011