Eli : Memcached, MySQL, Highcharts

Memcached

Memcached

memcached-logo.jpg

Free & open source, high-performance, distributed memory object caching system

Memcached 1.4.15 Released

Overview

This is a somewhat experimental release which pushes thread performance even more than before. Since this is a more experimental release than usual, and contains no other major fixes or features, we urge some caution for important deployments. We feel as though it is high quality software, but please take caution and do slow rollouts or testing. Thanks !

Fixes

  • Add some mild thread documentation
  • README.md was missing from dist tarball
  • Issue 286 : --disable-coverage drops "-pthread" option
  • Reduce odds of getting OOM errors in some odd cases


New Features

Thread scalability is much improved for reads, and somewhat improved for writes. In a pure read-only situation on a dual socket six core NUMA machine I've tested key fetch rates around 13.6 million keys per second.
More tuning is necessary and you'd get significant lag at that rate, but that shows the theoretical limit of the locks.

Download

You can download it from : http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz


Memcached 1.4.12 Released

Overview

Fix a small number of bugs, mostly in building on different platforms.

Fixes

  • Fix glitch with flush_all (exptime)
  • Skip SASL tests unless RUN_SASL_TESTS is defined.
  • Look around for saslpasswd2 (typically not in the user's path).
  • Build fix: Define sasl_callback_ft on older versions of sasl.
  • Fix segfault when sending a zero byte command
  • Fix warning in UDP test
  • Properly detect GCC atomics
  • Tests: loop on short binary packet reads
  • Fix slabs_reassign tests on 32bit hosts


New Features

None.

Download

You can download it from : http://memcached.googlecode.com/files/memcached-1.4.12.tar.gz


Memcached 1.4.11 Released

Release notes from official site :

Overview

This release fixes race conditions and crashes introduced in 1.4.10, they should be rare, but users are strongly encouraged to upgrade.
Adds the ability to rebalance and reassign slab memory.

Fixes

  • Don't compute incorrect argc for timedrun
  • Fix 'age' stat for stats items
  • Binary deletes were not ticking stats counters
  • Fix a race condition from 1.4.10 on item_remove
  • Close some idiotic race conditions
  • Initial slab automover
  • Slab reassignment
  • Clean do_item_get logic a bit. fix race.
  • Clean up the do_item_alloc logic
  • Shorten lock for item allocation more
  • Fix to build with cyrus sasl 2.1.25


New Features

Slab Reassign

Long running instances of memcached may run into an issue where all available memory has been assigned to a specific slab class (say items of roughly size 100 bytes). Later the application starts storing more of its data into a different slab class (items around 200 bytes). Memcached could not use the 100 byte chunks to satisfy the 200 byte requests, and thus you would be able to store very few 200 byte items.

1.4.11 introduces the ability to reassign slab pages. This is a beta feature and the commands may change for the next few releases, so please keep this in mind. When the commands are finalized they will be noted in the release notes.

Enable slab reassign on startup:

$ memcached -o slab_reassign

Once all memory has been assigned and used by items, you may use a command to reassign memory.

$ echo "slabs reassign 1 4" | nc localhost 11211

That will return an error code indicating success, or a need to retry later. Success does not mean that the slab was moved, but that a background thread will attempt to move the memory as quickly as it can.

Slab Automove

While slab reassign is a manual feature, there is also the start of an automatic memory reassignment algorithm.

$ memcached -o slab_reassign,slab_automove

The above enables it on startup, and it may also be enabled or disabled at runtime:

$ echo "slabs automove 0" | nc localhost 11211

The algorithm is slow and conservative. If a slab class is seen as having the highest eviction count 3 times 10 seconds apart, it will take a page from a slab class which has had zero evictions in the last 30 seconds and move the memory.

There are lots of cases where this will not be sufficient, and we invite the community to help improve upon the algorithm. Included in the source directory is scripts/mc_slab_mover. See perldoc for more information:

$ perldoc ./scripts/mc_slab_mover

It implements the same algorithm as built into memcached, and you may modify it to better suit your needs and improve on the script or port it to other languages. Please provide patches!

Slab Reassign Implementation

Slab page reassignment requires some tradeoffs:
All items larger than 500k (even if they're under 730k) take 1MB of space
When memory is reassigned, all items that were in the 1MB page are evicted
When slab reassign is enabled, an extra background thread is used
The first item will be improved in later releases, and is avoided if you start memcached without the -o slab_reassign option.

New Stats

STAT slab_reassign_running 0
STAT slabs_moved 0

slab_reassign_running indicates if the slab thread is attempting to move a page. It may need to wait for some memory to free up, so it could take several seconds.

slabs_moved is simply a count of how many pages have been successfully moved.


You can download it from : http://memcached.googlecode.com/files/memcached-1.4.11.tar.gz


Memcached 1.4.10 Released

Release notes from official site :

Overview

This release is focused on thread scalability and performance improvements. This release should be able to feed data back faster than any network card can support as of this writing.

Fixes

  • Disable issue 140 's test.
  • Push cache_lock deeper into item_alloc
  • Use item partitioned lock for as much as possible
  • Remove the depth search from item_alloc
  • Move hash calls outside of cache_lock
  • Use spinlocks for main cache lock
  • Remove uncommon branch from asciiprot hot path
  • Allow all tests to run as root


New Features

Performance

For more details, read the commit messages from git.
Each change was carefully researched to not increase memory requirements and to be safe from deadlocks.
Each change was individually tested via mc-crusher (http://github.com/dormando/mc-crusher) to ensure benefits.

Tested improvements in speed between 3 and 6 worker threads (-t 3 to -t 6). More than -t 6 reduced speed.

In my tests, set was raised from 300k/s to around 930k/s. Key fetches/sec (multigets) from 1.6 million/s to around 3.7 million/s for a quadcore box. A machine with more cores was able to pull 6 million keys per second. Incr/Decr performance increased similar to set performance. Non-bulk tests were limited by the packet rate of localhost or the network card.

Multiple NUMA nodes reduces performance (but not enough to really matter). If you want the absolute highest speed, as of this release you can run one instance per numa node (where n is your core count):

numactl --cpunodebind=0 memcached -m 4000 -t n

Older versions of memcached are plenty fast for just about all users. This changeset is to allow more flexibility in future feature additions, as well as improve memcached's overall latency on busy systems.

Keep an eye on your hitrate and performance numbers. Please let us know immediately if you experience any regression from these changes. We have tried to be as thorough as possible in testing, but you never know.


You can download it from : http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz


Memcached 1.4.9 Released

Release notes from official site :

Overview

Small bugfix release. Mainly fixing a critical issue where using -c to increase the connection limit was broken in 1.4.8. If you are on 1.4.8, an upgrade is highly recommended.

Fixes

  • Add a systemd service file
  • Fix some minor typos in the protocol doc
  • Issue 224 check retval of main event loop
  • Fix -c so maxconns can be raised above default.


New Features

No new features in this version.

1.4.9 is *not* what 1.4.9-beta1 was.
1.4.10 will be the performance release


You can download it from : http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz


- page 1 of 5