2 * Copyright (c) <2008>, Sun Microsystems, Inc.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
16 * THIS SOFTWARE IS PROVIDED BY SUN MICROSYSTEMS, INC. ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL SUN MICROSYSTEMS, INC. BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 * Fired when a connection object is allocated from the connection pool.
30 * @param connid the connection id
32 probe conn__allocate(int connid);
35 * Fired when a connection object is released back to the connection pool.
36 * @param connid the connection id
38 probe conn__release(int connid);
41 * Fired when a new connection object is created (there are no more
42 * connection objects in the connection pool).
43 * @param ptr pointer to the connection object
45 probe conn__create(void *ptr);
48 * Fired when a connection object is destroyed ("released back to
49 * the memory subsystem").
50 * @param ptr pointer to the connection object
52 probe conn__destroy(void *ptr);
55 * Fired when a connection is dispatched from the "main thread" to a
57 * @param connid the connection id
58 * @param threadid the thread id
60 probe conn__dispatch(int connid, int threadid);
63 * Allocate memory from the slab allocator.
64 * @param size the requested size
65 * @param slabclass the allocation will be fulfilled in this class
66 * @param slabsize the size of each item in this class
67 * @param ptr pointer to allocated memory
69 probe slabs__allocate(int size, int slabclass, int slabsize, void* ptr);
72 * Failed to allocate memory (out of memory).
73 * @param size the requested size
74 * @param slabclass the class that failed to fulfill the request
76 probe slabs__allocate__failed(int size, int slabclass);
79 * Fired when a slab class attempts to allocate more space.
80 * @param slabclass class that needs more memory
82 probe slabs__slabclass__allocate(int slabclass);
85 * Failed to allocate memory (out of memory).
86 * @param slabclass the class that failed grab more memory
88 probe slabs__slabclass__allocate__failed(int slabclass);
92 * @param size the size of the memory
93 * @param slabclass the class the memory belongs to
94 * @param ptr pointer to the memory to release
96 probe slabs__free(int size, int slabclass, void* ptr);
99 * Fired when the when we have searched the hash table for a named key.
100 * These two elements provide an insight in how well the hash function
101 * functions. Long traversals are a sign of a less optimal function,
102 * wasting cpu capacity.
104 * @param key the key searched for
105 * @param keylen length of the key
106 * @param depth the depth in the list of hash table
108 probe assoc__find(const char *key, int keylen, int depth);
111 * Fired when a new item has been inserted.
112 * @param key the key just inserted
113 * @param keylen length of the key
114 * @param nokeys the total number of keys currently stored,
115 * including the key for which insert was called.
117 probe assoc__insert(const char *key, int keylen, int nokeys);
120 * Fired when a new item has been removed.
121 * @param key the key just deleted
122 * @param keylen length of the key
123 * @param nokeys the total number of keys currently stored,
124 * excluding the key for which delete was called.
126 probe assoc__delete(const char *key, int keylen, int nokeys);
129 * Fired when an item is linked into the cache.
130 * @param key the items key
131 * @param keylen length of the key
132 * @param size the size of the data
134 probe item__link(const char *key, int keylen, int size);
137 * Fired when an item is deleted.
138 * @param key the items key
139 * @param keylen length of the key
140 * @param size the size of the data
142 probe item__unlink(const char *key, int keylen, int size);
145 * Fired when the refcount for an item is reduced.
146 * @param key the items key
147 * @param keylen length of the key
148 * @param size the size of the data
150 probe item__remove(const char *key, int keylen, int size);
153 * Fired when the "last refenced" time is updated.
154 * @param key the items key
155 * @param keylen length of the key
156 * @param size the size of the data
158 probe item__update(const char *key, int keylen, int size);
161 * Fired when an item is replaced with another item.
162 * @param oldkey the key of the item to replace
163 * @param oldkeylen the length of the old key
164 * @param oldsize the size of the old item
165 * @param newkey the key of the new item
166 * @param newkeylen the length of the new key
167 * @param newsize the size of the new item
169 probe item__replace(const char *oldkey, int oldkeylen, int oldsize,
170 const char *newkey, int newkeylen, int newsize);
173 * Fired when the processing of a command starts.
174 * @param connid the connection id
175 * @param request the incomming request
176 * @param size the size of the request
178 probe process__command__start(int connid, const void *request, int size);
181 * Fired when the processing of a command is done.
182 * @param connid the connection id
183 * @param respnse the response to send back to the client
184 * @param size the size of the response
186 probe process__command__end(int connid, const void *response, int size);
189 * Fired for a get-command
190 * @param connid connection id
191 * @param key requested key
192 * @param keylen length of the key
193 * @param size size of the key's data (or signed int -1 if not found)
194 * @param casid the casid for the item
196 probe command__get(int connid, const char *key, int keylen, int size, int64_t casid);
199 * Fired for an add-command.
200 * @param connid connection id
201 * @param key requested key
202 * @param keylen length of the key
203 * @param size the new size of the key's data (or signed int -1 if
205 * @param casid the casid for the item
207 probe command__add(int connid, const char *key, int keylen, int size, int64_t casid);
210 * Fired for a set-command.
211 * @param connid connection id
212 * @param key requested key
213 * @param keylen length of the key
214 * @param size the new size of the key's data (or signed int -1 if
216 * @param casid the casid for the item
218 probe command__set(int connid, const char *key, int keylen, int size, int64_t casid);
221 * Fired for a replace-command.
222 * @param connid connection id
223 * @param key requested key
224 * @param keylen length of the key
225 * @param size the new size of the key's data (or signed int -1 if
227 * @param casid the casid for the item
229 probe command__replace(int connid, const char *key, int keylen, int size, int64_t casid);
232 * Fired for a prepend-command.
233 * @param connid connection id
234 * @param key requested key
235 * @param keylen length of the key
236 * @param size the new size of the key's data (or signed int -1 if
238 * @param casid the casid for the item
240 probe command__prepend(int connid, const char *key, int keylen, int size, int64_t casid);
243 * Fired for an append-command.
244 * @param connid connection id
245 * @param key requested key
246 * @param keylen length of the key
247 * @param size the new size of the key's data (or signed int -1 if
249 * @param casid the casid for the item
251 probe command__append(int connid, const char *key, int keylen, int size, int64_t casid);
254 * Fired for a cas-command.
255 * @param connid connection id
256 * @param key requested key
257 * @param keylen length of the key
258 * @param size size of the key's data (or signed int -1 if not found)
259 * @param casid the cas id requested
261 probe command__cas(int connid, const char *key, int keylen, int size, int64_t casid);
264 * Fired for an incr command.
265 * @param connid connection id
266 * @param key the requested key
267 * @param keylen length of the key
268 * @param val the new value
270 probe command__incr(int connid, const char *key, int keylen, int64_t val);
273 * Fired for a decr command.
274 * @param connid connection id
275 * @param key the requested key
276 * @param keylen length of the key
277 * @param val the new value
279 probe command__decr(int connid, const char *key, int keylen, int64_t val);
282 * Fired for a delete command.
283 * @param connid connection id
284 * @param key the requested key
285 * @param keylen length of the key
287 probe command__delete(int connid, const char *key, int keylen);
291 #pragma D attributes Unstable/Unstable/Common provider memcached provider
292 #pragma D attributes Private/Private/Common provider memcached module
293 #pragma D attributes Private/Private/Common provider memcached function
294 #pragma D attributes Unstable/Unstable/Common provider memcached name
295 #pragma D attributes Unstable/Unstable/Common provider memcached args