From: John David Duncan Date: June 16 2011 5:23am Subject: bzr commit into mysql-5.1-telco-7.2 branch (john.duncan:4182) List-Archive: http://lists.mysql.com/commits/139260 Message-Id: <201106160523.p5G5NxtT007294@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0337402034==" --===============0337402034== 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-sendstats/ based on revid:john.duncan@stripped 4182 John David Duncan 2011-06-15 New NDB API client stats; provide insignt on behavior of the adaptive send algorithm. modified: sql/ha_ndbcluster.cc storage/ndb/include/ndbapi/Ndb.hpp storage/ndb/src/ndbapi/Ndb.cpp storage/ndb/src/ndbapi/Ndbif.cpp storage/ndb/src/ndbapi/TransporterFacade.cpp storage/ndb/src/ndbapi/TransporterFacade.hpp storage/ndb/src/ndbapi/trp_client.cpp storage/ndb/src/ndbapi/trp_client.hpp === modified file 'sql/ha_ndbcluster.cc' --- a/sql/ha_ndbcluster.cc 2011-03-30 22:14:46 +0000 +++ b/sql/ha_ndbcluster.cc 2011-06-16 05:22:28 +0000 @@ -1337,9 +1337,18 @@ static int update_status_variables(Thd_n SHOW_LONGLONG}, \ {"api_trans_local_read_row_count" NAME_SUFFIX, \ (char*) ARRAY_LOCATION[ Ndb::TransLocalReadRowCount ], \ + SHOW_LONGLONG}, \ + {"api_adaptive_send_forced_count" NAME_SUFFIX, \ + (char *) ARRAY_LOCATION[ Ndb::ForcedSendsCount ], \ + SHOW_LONGLONG}, \ + {"api_adaptive_send_unforced_count" NAME_SUFFIX, \ + (char *) ARRAY_LOCATION[ Ndb::UnforcedSendsCount ], \ + SHOW_LONGLONG}, \ + {"api_adaptive_send_deferred_count" NAME_SUFFIX, \ + (char *) ARRAY_LOCATION[ Ndb::DeferredSendsCount ], \ SHOW_LONGLONG} - -SHOW_VAR ndb_status_variables_dynamic[]= { + + SHOW_VAR ndb_status_variables_dynamic[]= { {"cluster_node_id", (char*) &g_ndb_status.cluster_node_id, SHOW_LONG}, {"config_from_host", (char*) &g_ndb_status.connected_host, SHOW_CHAR_PTR}, {"config_from_port", (char*) &g_ndb_status.connected_port, SHOW_LONG}, === modified file 'storage/ndb/include/ndbapi/Ndb.hpp' --- a/storage/ndb/include/ndbapi/Ndb.hpp 2011-04-18 23:20:12 +0000 +++ b/storage/ndb/include/ndbapi/Ndb.hpp 2011-06-16 05:22:28 +0000 @@ -1797,7 +1797,12 @@ public: NonDataEventsRecvdCount = 19, /* Number of non-data events received */ EventBytesRecvdCount = 20, /* Number of bytes of event data received */ - NumClientStatistics = 21 /* End marker */ + /* Adaptive Send */ + ForcedSendsCount = 21, /* Number of sends with force-send set */ + UnforcedSendsCount = 22, /* Number of sends without force-send */ + DeferredSendsCount = 23, /* Number of adaptive send calls not actually sent */ + + NumClientStatistics = 24 /* End marker */ }; Uint64 getClientStat(Uint32 id) const; === modified file 'storage/ndb/src/ndbapi/Ndb.cpp' --- a/storage/ndb/src/ndbapi/Ndb.cpp 2011-04-18 23:20:12 +0000 +++ b/storage/ndb/src/ndbapi/Ndb.cpp 2011-06-16 05:22:28 +0000 @@ -2222,7 +2222,10 @@ const char* ClientStatNames [] = "TransLocalReadRowCount", "DataEventsRecvdCount", "NonDataEventsRecvdCount", - "EventBytesRecvdCount" + "EventBytesRecvdCount", + "ForcedSendsCount", + "UnforcedSendsCount", + "DeferredSendsCount" }; Uint64 === modified file 'storage/ndb/src/ndbapi/Ndbif.cpp' --- a/storage/ndb/src/ndbapi/Ndbif.cpp 2011-02-28 12:25:52 +0000 +++ b/storage/ndb/src/ndbapi/Ndbif.cpp 2011-06-16 05:22:28 +0000 @@ -1235,7 +1235,13 @@ Ndb::sendPrepTrans(int forceSend) insert_completed_list(a_con); }//for theNoOfPreparedTransactions = 0; - theImpl->do_forceSend(forceSend); + int did_send = theImpl->do_forceSend(forceSend); + if(forceSend) { + theImpl->incClientStat(Ndb::ForcedSendsCount, 1); + } + else { + theImpl->incClientStat(did_send ? Ndb::UnforcedSendsCount : Ndb::DeferredSendsCount, 1); + } return; }//Ndb::sendPrepTrans() === modified file 'storage/ndb/src/ndbapi/TransporterFacade.cpp' --- a/storage/ndb/src/ndbapi/TransporterFacade.cpp 2011-03-30 22:07:57 +0000 +++ b/storage/ndb/src/ndbapi/TransporterFacade.cpp 2011-06-16 05:22:28 +0000 @@ -815,7 +815,7 @@ void TransporterFacade::forceSend(Uint32 //------------------------------------------------- // Improving API performance //------------------------------------------------- -void +int TransporterFacade::checkForceSend(Uint32 block_number) { m_threads.m_statusNext[numberToIndex(block_number)] = ThreadData::ACTIVE; //------------------------------------------------- @@ -828,14 +828,16 @@ TransporterFacade::checkForceSend(Uint32 // time to increase so therefore we have to keep track of // how the users are performing adaptively. //------------------------------------------------- - - if (theTransporterRegistry->forceSendCheck(currentSendLimit) == 1) { + + int did_send = theTransporterRegistry->forceSendCheck(currentSendLimit); + if(did_send == 1) { sendPerformedLastInterval = 1; } checkCounter--; if (checkCounter < 0) { calculateSendLimit(); } + return did_send; } @@ -1579,8 +1581,10 @@ TransporterFacade::do_poll(trp_client* c void TransporterFacade::wakeup(trp_client* clnt) { + printf("YYY TransporterFacade::wakeup()\n"); if (clnt->m_poll.m_waiting) { + printf("YYY TransporterFacade::wakeup() client is waiting\n"); clnt->m_poll.m_waiting = false; if (m_poll_owner != clnt) { === modified file 'storage/ndb/src/ndbapi/TransporterFacade.hpp' --- a/storage/ndb/src/ndbapi/TransporterFacade.hpp 2011-02-28 12:25:52 +0000 +++ b/storage/ndb/src/ndbapi/TransporterFacade.hpp 2011-06-16 05:22:28 +0000 @@ -126,7 +126,7 @@ public: // Improving the API performance void forceSend(Uint32 block_number); - void checkForceSend(Uint32 block_number); + int checkForceSend(Uint32 block_number); TransporterRegistry* get_registry() { return theTransporterRegistry;}; === modified file 'storage/ndb/src/ndbapi/trp_client.cpp' --- a/storage/ndb/src/ndbapi/trp_client.cpp 2011-02-24 22:07:05 +0000 +++ b/storage/ndb/src/ndbapi/trp_client.cpp 2011-06-16 05:22:28 +0000 @@ -101,17 +101,19 @@ trp_client::complete_poll() m_facade->complete_poll(this); } -void +int trp_client::do_forceSend(int val) { + int did_send = 1; if (val == 0) { - m_facade->checkForceSend(m_blockNo); + did_send = m_facade->checkForceSend(m_blockNo); } else if (val == 1) { m_facade->forceSend(m_blockNo); } + return did_send; } int === modified file 'storage/ndb/src/ndbapi/trp_client.hpp' --- a/storage/ndb/src/ndbapi/trp_client.hpp 2011-02-24 22:07:05 +0000 +++ b/storage/ndb/src/ndbapi/trp_client.hpp 2011-06-16 05:22:28 +0000 @@ -44,7 +44,7 @@ public: void complete_poll(); void wakeup(); - void do_forceSend(int val = 1); + int do_forceSend(int val = 1); int raw_sendSignal(const NdbApiSignal*, Uint32 nodeId); int raw_sendSignal(const NdbApiSignal*, Uint32 nodeId, --===============0337402034== 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-\ # sendstats/ # testament_sha1: 213c713fce73d2b53a7862c13bfedcfc062e1bc0 # timestamp: 2011-06-15 22:23:52 -0700 # base_revision_id: john.duncan@stripped\ # 23qc6paiavucscrk # # Begin bundle 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 --===============0337402034==--