From: John David Duncan Date: June 22 2011 3:45pm Subject: bzr commit into mysql-5.1-telco-7.2 branch (john.duncan:4186) List-Archive: http://lists.mysql.com/commits/139693 Message-Id: <201106221546.p5MFk4kJ018284@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1118534715==" --===============1118534715== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/jdd/bzr-repo/working/cluster-7.2-build/ based on revid:john.duncan@stripped 4186 John David Duncan 2011-06-22 Access to NDB API client-side statistics from memcached "STATS NDB" command. modified: storage/ndb/memcache/include/ClusterConnectionPool.h storage/ndb/memcache/include/Scheduler.h storage/ndb/memcache/include/ndb_pipeline.h storage/ndb/memcache/src/ClusterConnectionPool.cc storage/ndb/memcache/src/ndb_engine.c storage/ndb/memcache/src/ndb_pipeline.cc storage/ndb/memcache/src/schedulers/Bulk.cc storage/ndb/memcache/src/schedulers/Bulk.h storage/ndb/memcache/src/schedulers/Flex.cc storage/ndb/memcache/src/schedulers/Flex.h storage/ndb/memcache/src/schedulers/Stockholm.cc storage/ndb/memcache/src/schedulers/Stockholm.h === modified file 'storage/ndb/memcache/include/ClusterConnectionPool.h' --- a/storage/ndb/memcache/include/ClusterConnectionPool.h 2011-04-06 04:31:28 +0000 +++ b/storage/ndb/memcache/include/ClusterConnectionPool.h 2011-06-22 15:44:47 +0000 @@ -22,6 +22,8 @@ #define MAX_CONNECT_POOL 4 +#include + #include #include "NdbInstance.h" @@ -68,6 +70,9 @@ public: /** Get the master NdbInstance for this connection */ NdbInstance * getNdbInstance(int my_id) const; // inlined + + /** Get aggregated NDB API client statistics */ + void add_stats(const char *, ADD_STAT, const void *); }; /* Inline functions */ === modified file 'storage/ndb/memcache/include/Scheduler.h' --- a/storage/ndb/memcache/include/Scheduler.h 2011-05-17 05:22:56 +0000 +++ b/storage/ndb/memcache/include/Scheduler.h 2011-06-22 15:44:47 +0000 @@ -70,7 +70,7 @@ public: /** add_stats() allows the engine to delegate certain statistics to the scheduler. */ - virtual void add_stats(ADD_STAT, const void *) = 0; + virtual void add_stats(const char *key, ADD_STAT, const void *) = 0; /* each scheduler instance serves a single NDB pipeline */ ndb_pipeline *pipeline; === modified file 'storage/ndb/memcache/include/ndb_pipeline.h' --- a/storage/ndb/memcache/include/ndb_pipeline.h 2011-04-06 04:31:28 +0000 +++ b/storage/ndb/memcache/include/ndb_pipeline.h 2011-06-22 15:44:47 +0000 @@ -110,7 +110,7 @@ ndb_pipeline * get_request_pipeline(); void ndb_pipeline_shutdown(void *); /** call into a pipeline for its own statistics */ -void pipeline_add_stats(ndb_pipeline *, ADD_STAT, const void *); +void pipeline_add_stats(ndb_pipeline *, const char *key, ADD_STAT, const void *); /** Global initialization of scheduler, at startup time */ void * initialize_scheduler(const char *name, int nthreads, int threadnum); === modified file 'storage/ndb/memcache/src/ClusterConnectionPool.cc' --- a/storage/ndb/memcache/src/ClusterConnectionPool.cc 2011-05-17 04:55:39 +0000 +++ b/storage/ndb/memcache/src/ClusterConnectionPool.cc 2011-06-22 15:44:47 +0000 @@ -19,6 +19,10 @@ */ #include +/* C++ files must define __STDC_FORMAT_MACROS in order to get PRIu64 */ +#define __STDC_FORMAT_MACROS +#include + #include #include "debug.h" @@ -105,3 +109,23 @@ Ndb_cluster_connection * ClusterConnecti return conn; } + +void ClusterConnectionPool::add_stats(const char *prefix, + ADD_STAT add_stat, + const void *cookie) { + char key[128]; + char val[128]; + int klen, vlen; + Ndb *ndb = master_instances[0]->db; + Uint64 ndb_stats[Ndb::NumClientStatistics]; + + for(int i = 0 ; i < pool_size ; i++) { + pool_connections[i]->collect_client_stats(ndb_stats, Ndb::NumClientStatistics); + + for(int s = 0 ; s < Ndb::NumClientStatistics ; s++) { + klen = sprintf(key, "%s_conn%d_%s", prefix, i, ndb->getClientStatName(s)); + vlen = sprintf(val, "%"PRIu64, ndb_stats[s]); + add_stat(key, klen, val, vlen, cookie); + } + } +} === modified file 'storage/ndb/memcache/src/ndb_engine.c' --- a/storage/ndb/memcache/src/ndb_engine.c 2011-04-09 07:36:24 +0000 +++ b/storage/ndb/memcache/src/ndb_engine.c 2011-06-22 15:44:47 +0000 @@ -433,9 +433,14 @@ static ENGINE_ERROR_CODE ndb_get_stats(E DEBUG_ENTER(); - pipeline_add_stats(pipeline, add_stat, cookie); - return def_eng->engine.get_stats(ndb_eng->m_default_engine, cookie, - stat_key, nkey, add_stat); + if(stat_key == NULL) { + return def_eng->engine.get_stats(ndb_eng->m_default_engine, cookie, + stat_key, nkey, add_stat); + } + else { + pipeline_add_stats(pipeline, stat_key, add_stat, cookie); + return ENGINE_SUCCESS; + } } === modified file 'storage/ndb/memcache/src/ndb_pipeline.cc' --- a/storage/ndb/memcache/src/ndb_pipeline.cc 2011-04-19 01:16:36 +0000 +++ b/storage/ndb/memcache/src/ndb_pipeline.cc 2011-06-22 15:44:47 +0000 @@ -144,30 +144,39 @@ void ndb_pipeline_shutdown(void *arg) { return; } - void pipeline_add_stats(ndb_pipeline *self, + const char *stat_key, ADD_STAT add_stat, const void *cookie) { char key[128]; char val[128]; - const char *units[4] = { "ns", "us", "ms", "s" }; - int klen, vlen, p; + int klen, vlen; char id; - klen = sprintf(key, "t%d_workitems", self->id); - vlen = sprintf(val, "%d", self->nworkitems); - add_stat(key, klen, val, vlen, cookie); - - self->stats.engine_thread_vtime = get_thread_vtime(); - if(self->stats.engine_thread_vtime != 0) { - klen = sprintf(key, "t%d_engine_thread_time", self->id); - vlen = sprintf(val, "%"PRIu64, self->stats.engine_thread_vtime); + DEBUG_ENTER(); + const Configuration & conf = get_Configuration(); + + if(stat_key == NULL) { + klen = sprintf(key, "t%d_workitems", self->id); + vlen = sprintf(val, "%d", self->nworkitems); add_stat(key, klen, val, vlen, cookie); + + self->stats.engine_thread_vtime = get_thread_vtime(); + if(self->stats.engine_thread_vtime != 0) { + klen = sprintf(key, "t%d_engine_thread_time", self->id); + vlen = sprintf(val, "%"PRIu64, self->stats.engine_thread_vtime); + add_stat(key, klen, val, vlen, cookie); + } + self->scheduler->add_stats(stat_key, add_stat, cookie); } - - self->scheduler->add_stats(add_stat, cookie); + else if(strncasecmp(stat_key,"ndb",3) == 0) { + for(int i = 0 ; i < conf.nclusters ; i ++) { + sprintf(key, "cl%d", i); + conf.getConnectionById(i)->add_stats(key, add_stat, cookie); + } + } } - + void * initialize_scheduler(const char *cf, int nthreads, int athread) { Scheduler *s = 0; === modified file 'storage/ndb/memcache/src/schedulers/Bulk.cc' --- a/storage/ndb/memcache/src/schedulers/Bulk.cc 2011-05-17 05:22:56 +0000 +++ b/storage/ndb/memcache/src/schedulers/Bulk.cc 2011-06-22 15:44:47 +0000 @@ -191,8 +191,9 @@ void Scheduler_bulk::io_completed(workit } -void Scheduler_bulk::add_stats(ADD_STAT add_stat, - const void * cookie) { +void Scheduler_bulk::add_stats(const char *, + ADD_STAT add_stat, + const void * cookie) { char key[128]; char val[128]; const char *units[4] = { "ns", "us", "ms", "s" }; === modified file 'storage/ndb/memcache/src/schedulers/Bulk.h' --- a/storage/ndb/memcache/src/schedulers/Bulk.h 2011-05-17 05:22:56 +0000 +++ b/storage/ndb/memcache/src/schedulers/Bulk.h 2011-06-22 15:44:47 +0000 @@ -46,7 +46,7 @@ public: void yield(workitem *) const; void reschedule(workitem *) const; void io_completed(workitem *); - void add_stats(ADD_STAT, const void *); + void add_stats(const char *, ADD_STAT, const void *); void * run_ndb_commit_thread(int thread_id); private: === modified file 'storage/ndb/memcache/src/schedulers/Flex.cc' --- a/storage/ndb/memcache/src/schedulers/Flex.cc 2011-04-09 07:36:24 +0000 +++ b/storage/ndb/memcache/src/schedulers/Flex.cc 2011-06-22 15:44:47 +0000 @@ -163,7 +163,9 @@ ENGINE_ERROR_CODE Scheduler_flex::schedu } -void Scheduler_flex::add_stats(ADD_STAT add_stat, const void * cookie) { +void Scheduler_flex::add_stats(const char *, + ADD_STAT add_stat, + const void * cookie) { char key[128]; char val[128]; int klen, vlen, p; === modified file 'storage/ndb/memcache/src/schedulers/Flex.h' --- a/storage/ndb/memcache/src/schedulers/Flex.h 2011-05-17 05:22:56 +0000 +++ b/storage/ndb/memcache/src/schedulers/Flex.h 2011-06-22 15:44:47 +0000 @@ -59,7 +59,7 @@ public: void yield(workitem *) const; // inlined void reschedule(workitem *) const; // inlined void io_completed(workitem *); - void add_stats(ADD_STAT, const void *); + void add_stats(const char *, ADD_STAT, const void *); protected: int thread_id; === modified file 'storage/ndb/memcache/src/schedulers/Stockholm.cc' --- a/storage/ndb/memcache/src/schedulers/Stockholm.cc 2011-05-17 05:22:56 +0000 +++ b/storage/ndb/memcache/src/schedulers/Stockholm.cc 2011-06-22 15:44:47 +0000 @@ -219,7 +219,8 @@ void Scheduler_stockholm::io_completed(w } -void Scheduler_stockholm::add_stats(ADD_STAT add_stat, +void Scheduler_stockholm::add_stats(const char *, + ADD_STAT add_stat, const void * cookie) { char key[128]; char val[128]; === modified file 'storage/ndb/memcache/src/schedulers/Stockholm.h' --- a/storage/ndb/memcache/src/schedulers/Stockholm.h 2011-05-17 05:22:56 +0000 +++ b/storage/ndb/memcache/src/schedulers/Stockholm.h 2011-06-22 15:44:47 +0000 @@ -49,7 +49,7 @@ public: void yield(workitem *) const; // inlined void reschedule(workitem *) const; // inlined void io_completed(workitem *); - void add_stats(ADD_STAT, const void *); + void add_stats(const char *, ADD_STAT, const void *); void * run_ndb_commit_thread(int cluster_id); private: --===============1118534715== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/john.duncan@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: john.duncan@stripped # target_branch: file:///Users/jdd/bzr-repo/working/cluster-7.2-build/ # testament_sha1: 4970395732c8f9b26d2c5bd9f728275c560fdeee # timestamp: 2011-06-22 08:45:56 -0700 # source_branch: file:///Users/jdd/bzr-repo/working/cluster-7.2-\ # sendstats/ # base_revision_id: john.duncan@stripped\ # vsybh8x5m3l07zy1 # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTDY8NYACa3/gFAQBAh7f/// f7feCr////pgDe+PFbu4VFNfSgAaFKc5nu95vddetO1t7TAZsavZ3MOGST1BqMiHqYmwEhk9QaAA aaADQAaCSRCeptGmUxU8oHqNMgA9TQPUaAGgAAOGmmCGQ00yMmEA00AYTRpkwAIGgkREEppsUn6m PUym1Tw8iUPTUGmjRk0NHqDNQxBFJEYjENE9NU9U/IT0Rqfok2pmmUeppo9Q2oGRoaCSIAgmmmia NEwimT9TGqHqHpAMmQaAPU9R0kjAKc8l+SVKaJlLjW30OezDbRGKQ8AM0OCpkMSqBn+4nOdoNTLK Dpmx1glBMYS3MmGPKJJjKstL2mweTkx58NjhQYYIO99MMKRoaUbb1UqJaMKbIA8qgoXecB4M9ycI 7SqYQhIYeMJwaRCWm4SXBmhnnaEtVyrKAIABgNsSPXFgP1xDP5voB7UrPdopQ1s7s3QC9gLlBNts GwbbbbbbbbG0HYjwuxC5ON2Z6d8zWDj5IMGXaYbRZJ3afa5G48XHDsi5esaTVGLEaD2ebPN5NNna Zc20JZQvvrSxqjvaudz1M8bgzE53BOz96cVgl/hdvg8Qxy3nYHEVmGqQPcFhr5W0F7gEKkOgF0dI p3tNWhK8YUoVEQXG766uZqodpaSLmgW0xecVZoIfeOIKXixvrEFhwlBCzwaAYCaGcgFhaQ2ThNA4 e7BXNKRc/QzHnxeM1nbQ6ZhVxm6PatzG2Fu62G3DTjEFkaPBBbfy7NEaQfGXxmwBDrAvMRADY2CO RiCDrWswfNrP6mynB3cKDh5lZqCmYYWyo74DVv8lmHs624cl/Z6LppARM52H92Y0rn81+kCGAYB9 lsY++mX/rwYZuxSFAKOD/AUjrGr2WoYeT0CK2ngGVrN13vbmcEZCxX0nWDIDSLwqCh2jjjjjjpIK GjHtGSXiweBh2x7j/fnQdkeAJeh7WwOw94JdOWuh0hNevCpyXT4dUOjDkSJAEjIEjsWsKcnrWsSJ EiRKRp3n1eKFzDcxlrUFAWmni4rwF8jVGIhjaAbIahijyhAwSe//CEiAJdhY3lwBEETluMR2PUVs RKqJeohDilMcglAUASxFciklJOc14FOWFjExwLE3CVyn+aFpgbGOL3XlxEmOwB0wSoRqwebSMYmI VM/uODGqE7HCbwGB2dmiDDK0gSa2ILjhQdRfz51UMWSDswJ0zVlNWgpyy1FC4FWurq2q3Hrw6qSI 8pF35cqFjam/YSghOiBxOJ6cpEQSscygMou1Bg0N48DQcdJl1/tyN7eXWcSmPNEmQaQa3AogkZjL feUnA4zJulabB/4F15zQK9XZiRItDnNm2J92xzrTFJIOnQlC2FCsbhEEsWliCTHKpiJhhRIy9ZI3 HI4ky5UwWRfmTcxBLNxSNTWejbhus0LGJcpS8SIsTs3RSVjQofMcqxirGpqRKEC5MxBLM+Zrw3Nl rk9oEpzvCehKERpfH1ZAlFtvVDE34komawJnW5uYJFynUCVwS3VGLXGLHExI57zCJOxsZ6xMDcOZ FTEOJY0ByBEy+lUoL59xnsbM9r6M6bNh0c4DUAmJRIwRQihb12XJ01qTGCuDaHJSGhEEqglEnDgb FTKrRKFCD1BJjkxcpIgVgNAC4BkhYnFMbw3GxgYEzyiFsMbXrKDyvGk4w3Eis2cEvmakwmlIk4sR MCVNtGo/NgSnuSW09hpECAaGAtcKC01kZMXLHXMwCBwKlHIBlidZazPTg1rUcRvJq4V8zKmYno1F B5mTrcQWcRwSvdYkYrQrQqbjtj9TmJAJrrc5HUcTMiDs0SY53mRyodewlpkTWAaFCAx2hkaEY8MW WZxiwnBLnPAhNszeRS53OGRXMqXIHIfMYzMpRjMiFjIgaG41OqBMzucCmmr7ipCZgO7ZPEriJWY7 IhSwrJFlmBcWkQSyKGSvjkNVk9nGu0Jw3uGhYeLzJUK4lSbEupWk8MLG8yOGZPLUw4meS2E49NZk y5c1IipmXLlTtwCRGJLd3FHOFJM7CuQ9GBcRMyvRiYjy1hjTAea6FxmkOwszlWQzyK2CxQ5jYUzJ FjqMzULbxJfSLyBKJmbbnFNT7/HDfXtVWBjOOEFw3tkgJOhUgSdjohXJKy19p87FY+1pE6Jl+mME HlBNtHo7ogaDhMtihpsG2MQ1rBjRwAnLbiEcTynJ3A7g2QJSCnyKP2KJAdyk5t+DYXLEJAxARB8S kyVfP7v6KjVnaSg8J/U/66CoTHUIYbN6ywpAuPjP5ny/X962+8oXIlV+HEc4MvtsvkUNiWh1K2i+ ZwG2b2S0EVZNZbgcwETQuLp/zwJ5Lu+wDt22bgxRTRiMUAjSEdoUClsNurJjdQ234AVMrAIQMmEo SVUr99AWZgrgQ22VVtqo6C8Q28gIUd4x0ODWPOQY8fiHHKJ1RuLBrxiRAkeQ7iR30lZmKsp+moFJ H2lg/I2gaWEj++QjYe4ozMt1atXcC+HiP09PMDv0opFXPvBwjWo45zGIbA54tJELl4D8zd9G1AHQ ZHUZbaZDMjYWHSQHF7PEbwPuMiUzyOAJREETPOZ9J2ncbj7RZGJGomXGokd5S4TaNtBJvRizdjkA RYjllwJw8DidAlwNy4HQ7TtOo6DBIkMWOooVPIgdBJHuM6PZYZzhkMDPVpuOQpqNRj4dKOI6uyCG BlP0LugCRM7qo8O+bNDP38gSK0b0a3gDP+ADN/37CAsUzITokRUIQLw2WKSEQAImtL7DrUXHmiuS BtQnNeEEpFTuImLmB7RjIScuf1LHmbhLgcBr4l/OJNQVmUMhYg6i5UypKpuMh22SBiIgHzHURXrk JSkXHMjBJFw8zLF00SIx8enj8n9csT4oWpuMvPkhfjBI79vS5CBoC8Ys0VYBmkQTCkCQyGBOt6Y4 3l5hvnGpzBBqu3AeTNZx7A3GnEGsHeUwlcDK4uByKyCo3YJpzFJUF+SpCyNrmNBQehTJ8W07OdK2 hwjBqUuuSMcHs/qOMUuaI7zmcTkJeIq+j+C8NGQwJvrTiWtrA/qgEBogLYkNsRnqi04/bCZUChaU H9xDHfft2cKAsBrEEsyVxgWFb7r6MxNBUZzkhzBPkOqTaWkhiAxjaxckVKk/0gl5eWRl9C+hCubj ihdxsd4LIFkhZwxzt42++xs0vaRQ5hX9gJeIAt374bm0RuPOY6i0A8fyqCN4hNCwNEJLFCRhkvmT 4lgL0l21RgO2HXQe/YXzJYJVCGBl2oOmWZDpWnda7EbzrhEMSznWcrUrVjN0oYYhiCAvtvKiPHiW XMbaLTSLARCdYnoBcACZM5z6ChHRxm49I2K+cvRgGWfoPOC1nNlHLxAs2YZ8G8O03zEzBsoXehMr UfePeb6AvPKC6MkJvMp6nGEbFdE3ICw4qIOlGoFIAcep5EgIK0Z/HkIhyLSfmESEy0LzVyhZx8Zi omRIEiAvgmeS8+7bmrkgS3Bk3scFPw8ZHoK/6jI0tRCxLytKIvjmR8ZyE0gSGcYFMEhotBbDQhIv qXo7YhJdO67qjc4cMbiSopahWMrAfqxTghOM7EIELDECxWQ69uBjC7jJlo9gL8+gFMShQLhStEhU yonCTykQEJMkInOEIeLIxlr8wUzK3dhOpxWXgT72BMJOhfWZCJP7+xhU91gS6A8MPH2+E8ltxZ+M 9Z6iDmR8sXMgNZCyUXttK2cJ9yYlrJC0M/doheRfjZLmCWKMzl6DdKUgVA8CtkNNxIgj2nkosEmd jz6wAoYNQBGTpyv2HLOKuslu6JrR26IltTlhDAGV6skbRerVR64S1tOIHdCEoqEtOeKPhKROAamC kLoTMmquIxXK1R39T5jJyaRgtImgzFBGRRRUcBGvlkFRL9QFWXcC/iwDMwyEewlPUj0ZByAV7pYc EV8qI8dSTGxMogZHngaWGYQYLuBJ3wKIQziW5nuMhn9Jafi0E/LpSygFmR/SYiG+3wfaC++gFLus rOmxDuO8ym98j4GlnZtavA6pgqIQ9YQkeh8oeQ4HeC3E9nHxcp7DOPgEe4YUeaFYOx3zUvaC2lsx 3Ej0gvksLReg/DEZq4KnBTAjZECD/F3JFOFCQMNjw1g= --===============1118534715==--