xref: /memcached-1.4.29/memcached_dtrace.d (revision fe2629fd)
1 /*
2  * Copyright (c) <2008>, Sun Microsystems, Inc.
3  * All rights reserved.
4  *
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.
15  *
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.
26  */
27 provider memcached {
28    /**
29     * Fired when a connection object is allocated from the connection pool.
30     * @param connid the connection id
31     */
32    probe conn__allocate(int connid);
33 
34    /**
35     * Fired when a connection object is released back to the connection pool.
36     * @param connid the connection id
37     */
38    probe conn__release(int connid);
39 
40    /**
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
44     */
45    probe conn__create(void *ptr);
46 
47    /**
48     * Fired when a connection object is destroyed ("released back to
49     * the memory subsystem").
50     * @param ptr pointer to the connection object
51     */
52    probe conn__destroy(void *ptr);
53 
54    /**
55     * Fired when a connection is dispatched from the "main thread" to a
56     * worker thread.
57     * @param connid the connection id
58     * @param threadid the thread id
59     */
60    probe conn__dispatch(int connid, int threadid);
61 
62    /**
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
68     */
69    probe slabs__allocate(int size, int slabclass, int slabsize, void* ptr);
70 
71    /**
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
75     */
76    probe slabs__allocate__failed(int size, int slabclass);
77 
78    /**
79     * Fired when a slab class attempts to allocate more space.
80     * @param slabclass class that needs more memory
81     */
82    probe slabs__slabclass__allocate(int slabclass);
83 
84    /**
85     * Failed to allocate memory (out of memory).
86     * @param slabclass the class that failed grab more memory
87     */
88    probe slabs__slabclass__allocate__failed(int slabclass);
89 
90    /**
91     * Release memory.
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
95     */
96    probe slabs__free(int size, int slabclass, void* ptr);
97 
98    /**
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.
103     *
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
107     */
108    probe assoc__find(const char *key, int keylen, int depth);
109 
110    /**
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.
116     */
117    probe assoc__insert(const char *key, int keylen, int nokeys);
118 
119    /**
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.
125     */
126    probe assoc__delete(const char *key, int keylen, int nokeys);
127 
128    /**
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
133     */
134    probe item__link(const char *key, int keylen, int size);
135 
136    /**
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
141     */
142    probe item__unlink(const char *key, int keylen, int size);
143 
144    /**
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
149     */
150    probe item__remove(const char *key, int keylen, int size);
151 
152    /**
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
157     */
158    probe item__update(const char *key, int keylen, int size);
159 
160    /**
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
168     */
169    probe item__replace(const char *oldkey, int oldkeylen, int oldsize,
170                        const char *newkey, int newkeylen, int newsize);
171 
172    /**
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
177     */
178    probe process__command__start(int connid, const void *request, int size);
179 
180    /**
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
185     */
186    probe process__command__end(int connid, const void *response, int size);
187 
188    /**
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
195     */
196    probe command__get(int connid, const char *key, int keylen, int size, int64_t casid);
197 
198    /**
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
204     *             not found)
205     * @param casid the casid for the item
206     */
207    probe command__add(int connid, const char *key, int keylen, int size, int64_t casid);
208 
209    /**
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
215     *             not found)
216     * @param casid the casid for the item
217     */
218    probe command__set(int connid, const char *key, int keylen, int size, int64_t casid);
219 
220    /**
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
226     *             not found)
227     * @param casid the casid for the item
228     */
229    probe command__replace(int connid, const char *key, int keylen, int size, int64_t casid);
230 
231    /**
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
237     *             not found)
238     * @param casid the casid for the item
239     */
240    probe command__prepend(int connid, const char *key, int keylen, int size, int64_t casid);
241 
242    /**
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
248     *             not found)
249     * @param casid the casid for the item
250     */
251    probe command__append(int connid, const char *key, int keylen, int size, int64_t casid);
252 
253    /**
254     * Fired for an touch-command.
255     * @param connid connection id
256     * @param key requested key
257     * @param keylen length of the key
258     * @param size the new size of the key's data (or signed int -1 if
259     *             not found)
260     * @param casid the casid for the item
261     */
262    probe command__touch(int connid, const char *key, int keylen, int size, int64_t casid);
263 
264    /**
265     * Fired for a cas-command.
266     * @param connid connection id
267     * @param key requested key
268     * @param keylen length of the key
269     * @param size size of the key's data (or signed int -1 if not found)
270     * @param casid the cas id requested
271     */
272    probe command__cas(int connid, const char *key, int keylen, int size, int64_t casid);
273 
274    /**
275     * Fired for an incr command.
276     * @param connid connection id
277     * @param key the requested key
278     * @param keylen length of the key
279     * @param val the new value
280     */
281    probe command__incr(int connid, const char *key, int keylen, int64_t val);
282 
283    /**
284     * Fired for a decr command.
285     * @param connid connection id
286     * @param key the requested key
287     * @param keylen length of the key
288     * @param val the new value
289     */
290    probe command__decr(int connid, const char *key, int keylen, int64_t val);
291 
292    /**
293     * Fired for a delete command.
294     * @param connid connection id
295     * @param key the requested key
296     * @param keylen length of the key
297     */
298    probe command__delete(int connid, const char *key, int keylen);
299 
300 };
301 
302 #pragma D attributes Unstable/Unstable/Common provider memcached provider
303 #pragma D attributes Private/Private/Common provider memcached module
304 #pragma D attributes Private/Private/Common provider memcached function
305 #pragma D attributes Unstable/Unstable/Common provider memcached name
306 #pragma D attributes Unstable/Unstable/Common provider memcached args
307