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