dustin (owner)

Forks

Revisions

gist: 77656 Download_button fork
public
Description:
Release Notes for Memcached 1.3 beta 2
Public Clone URL: git://gist.github.com/77656.git
Embed All Files: show embed
mc-1.3.2-release-notes.txt #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
                  Memcached 1.3 Beta 2 Release Notes
                  ==================================
 
Date: 2009-03-11 Wed
 
 
Table of Contents
=================
1 New Features
    1.1 Binary Protocol
        1.1.1 Client Availability
    1.2 Performance
    1.3 Stats
        1.3.1 New Stats
        1.3.2 More Granular Stats
        1.3.3 Removed stats
2 Bug Fixes
3 Development Info
4 Feedback
5 Contributors
 
 
1 New Features
~~~~~~~~~~~~~~~
 
1.1 Binary Protocol
====================
 
A new feature that brings new features. We now have goodness like
CAS-everywhere (e.g. delete), silent, but verifiable mutation
commands, and many other wonders.
 
Note that the original protocol is *not* deprecated. It will be
supported indefinitely, although some new features may only be
available in the binary protocol.
 
1.1.1 Client Availability
--------------------------
 
Many clients for the binary protocol are available.
 
* C
 
  libmemcached supports just about anything you can do with a memcached
  protocol and is the foundation for many clients in many different
  languages (which you can find linked from the project page).
 
  Project page: [http://tangent.org/552/libmemcached.html]
 
* Java
 
  spymemcached has very good text and binary protocol support over IPv4
  and IPv6 with a quite comprehensive test suite.
 
  Project page: [http://code.google.com/p/spymemcached/]
 
* Protocol Spec
 
  NIH problem? Go write your own client. :)
 
  [http://cloud.github.com/downloads/dustin/memcached/protocol-binary.txt]
 
 
1.2 Performance
================
 
Lots of effort has gone into increasing performance.
 
There is no longer a build-time distinction between a single-threaded
and multi-threaded memcached. If you want a single-threaded
memcached, ask for one thread (though there'll still be utility
threads and other such things in the background). This change lets us
focus on a future where multiple cores can be saturated for servicing
requests.
 
Facebook-inspired contention reduction with per-thread stat collection
and the Facebook connection dispatch and thread starvation prevention
contributions helped our scalability.
 
Lock analysis also showed us that we had quite a bit of contention on
hash table expansion which has been moved into its own thread, greatly
improving the scalability on multicore hardware.
 
A variety of smaller things also shook out of performance testing and
analysis.
 
There's also a memory optimization for users who don't actually make
use of CAS. Running memcached with -C disables the use of CAS
resulting in a savings of about eight bytes per item. If you have big
caches, and don't use CAS, this can lead to a considerable savings.
 
1.3 Stats
==========
 
There are several new stats and some new ways to look at older stats.
 
1.3.1 New Stats
----------------
 
* Delete
 
  The global stats now contain statistics on deletion.
 
  delete_hits refers to the number of times a deletion command was
  issued which resulted in a modification of the cache while
  delete_misses refers to the number of times a deletion command was
  issued which had no effect due to a key mismatch.
 
* Incr/Decr
 
  Incr and decr each have a pair of stats showing when a
  successful/unsuccessful incr occurred. incr_hits, incr_misses,
  decr_hits, and decr_misses show where such mutations worked and where
  they failed to find an existing object to mutate.
 
* CAS
 
  CAS stats are tracked in three different ways:
 
  + cas_hits
 
    Number of attempts to CAS in a new value that worked.
 
  + cas_misses
 
    Number of attempts to CAS in a value where the key was not found.
 
  + cas_badval
 
    Number of attempts to CAS in a value where the CAS failed due to the
    object changing between the gets and the update.
 
* slab class evicted time
 
  Per slab class, you can now see how recently accessed the most recent
  evicted data was. This is a useful gauge to determine eviction
  velocity on a slab so you can know whether evictions are healthy or if
  you've got a problem.
 
 
1.3.2 More Granular Stats
--------------------------
 
Where possible, stats are now tracked individually by slab class. The
following stats are available on a per-slab-class basis (via "stats slabs"):
 
  * get_hits
  * cmd_set
  * delete_hits
  * incr_hits
  * decr_hits
  * cas_hits
  * cas_badval
 
(misses are obviously not available as they refer to a non-existent item)
 
1.3.3 Removed stats
--------------------
 
"stats malloc" and "stats maps" have been removed.
 
If you depended on these commands for anything, please let us know so
we can bring them back in a more maintainable way.
 
2 Bug Fixes
~~~~~~~~~~~~
 
  * Build fixes on ubuntu (gcc and icc) and FreeBSD
  * bad interaction with cas + incr (bug 15)
  * setuid failures are reported properly at daemonization time
  * decr overflow causing unnecessary truncation to 0 (bug 21)
  * failure to bind on Linux with no network (i.e. laptop dev)
  * some memcached-tool cleanup
 
3 Development Info
~~~~~~~~~~~~~~~~~~~
 
We've added a bunch of tests and new code coverage reports.
 
All included code in this release has been tested against the
following platforms (using the in-tree test suite):
 
  * ubuntu 8.10 (64-bit, both gcc and icc)
  * ubuntu 8.04 (32-bit)
  * OS X 10.5 (ppc and intel)
  * OpenSolaris 5.11 x86 (with and without dtrace)
  * FreeBSD 7 x86
 
4 Feedback
~~~~~~~~~~~
 
Please try this version. Make it suffer. Report feedback to the list
or file bugs as you find them.
 
  * Mailing List: [http://groups.google.com/group/memcached]
  * Issue Tracker: [http://code.google.com/p/memcached/issues/list]
  * IRC: #memcached on freenode
 
5 Contributors
~~~~~~~~~~~~~~~
 
The following people contributed to this release since 1.2.6.
 
Note that this is based on who contributed changes, not how they were
done. In many cases, a code snippet on the mailing list or a bug
report ended up as a commit with your name on it.
 
Note that this is just a summary of how many changes each person made
which doesn't necessarily reflect how significant each change was.
For details on what led up into a branch, either grab the git repo and
look at the output of `git log 1.2.6..1.3.2` or use a web view.
 
  * Repo list: [http://code.google.com/p/memcached/wiki/DevelopmentRepos]
  * Web View: [http://github.com/dustin/memcached/commits/1.3.2]
 
  104 Dustin Sallings
   49 Trond Norbye
   32 Toru Maesaka
   31 dormando
    8 Steve Yen
    7 hachi
    6 Aaron Stone
    6 Brian Aker
    4 Victor Kirkebo
    2 Ricky Zhou
    1 Jonathan Bastien-Filiatrault
    1 Evan Klitzke
    1 Eric Lambert