From: Richard W.M. Jones Date: Mon, 21 Mar 2016 14:24:35 +0000 (+0000) Subject: common/Cycles: Do not initialize Cycles globally. X-Git-Tag: v10.1.1~27^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1c2831a2c1277c69f9649200d74a75c04a4b0296;p=ceph.git common/Cycles: Do not initialize Cycles globally. Move initialization to the few tests that actually use it. Fixes: http://tracker.ceph.com/issues/15225 Signed-off-by: Richard W.M. Jones --- diff --git a/src/common/Cycles.cc b/src/common/Cycles.cc index b0b687e49d46..656f08b40cee 100644 --- a/src/common/Cycles.cc +++ b/src/common/Cycles.cc @@ -38,14 +38,15 @@ #include "Cycles.h" double Cycles::cycles_per_sec = 0; -static Initialize _(Cycles::init); /** * Perform once-only overall initialization for the Cycles class, such - * as calibrating the clock frequency. This method is invoked automatically - * during initialization, but it may be invoked explicitly by other modules - * to ensure that initialization occurs before those modules initialize - * themselves. + * as calibrating the clock frequency. This method must be called + * before using the Cycles module. + * + * It is not initialized by default because the timing loops cause + * general process startup times to balloon + * (http://tracker.ceph.com/issues/15225). */ void Cycles::init() { diff --git a/src/test/msgr/perf_msgr_client.cc b/src/test/msgr/perf_msgr_client.cc index fa21b493119f..1cb3db2ce798 100644 --- a/src/test/msgr/perf_msgr_client.cc +++ b/src/test/msgr/perf_msgr_client.cc @@ -196,6 +196,7 @@ int main(int argc, char **argv) cerr << " message data bytes " << len << std::endl; MessengerClient client(g_ceph_context->_conf->ms_type, args[0], think_time); client.ready(concurrent, numjobs, ios, len); + Cycles::init(); uint64_t start = Cycles::rdtsc(); client.start(); uint64_t stop = Cycles::rdtsc(); diff --git a/src/test/msgr/perf_msgr_server.cc b/src/test/msgr/perf_msgr_server.cc index 3eae9a513cce..dde679c433ee 100644 --- a/src/test/msgr/perf_msgr_server.cc +++ b/src/test/msgr/perf_msgr_server.cc @@ -25,7 +25,6 @@ using namespace std; #include "include/atomic.h" #include "common/ceph_argparse.h" #include "common/debug.h" -#include "common/Cycles.h" #include "global/global_init.h" #include "msg/Messenger.h" #include "messages/MOSDOp.h" diff --git a/src/test/objectstore/ObjectStoreTransactionBenchmark.cc b/src/test/objectstore/ObjectStoreTransactionBenchmark.cc index 7c0dc0915211..46fd25dcebbf 100644 --- a/src/test/objectstore/ObjectStoreTransactionBenchmark.cc +++ b/src/test/objectstore/ObjectStoreTransactionBenchmark.cc @@ -249,6 +249,7 @@ int main(int argc, char **argv) global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); g_ceph_context->_conf->apply_changes(NULL); + Cycles::init(); cerr << "args: " << args << std::endl; if (args.size() < 1) { diff --git a/src/test/perf_local.cc b/src/test/perf_local.cc index 49440c2b3704..7c33dc5d4546 100644 --- a/src/test/perf_local.cc +++ b/src/test/perf_local.cc @@ -1020,6 +1020,7 @@ int main(int argc, char *argv[]) global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); common_init_finish(g_ceph_context); + Cycles::init(); bind_thread_to_cpu(3); if (argc == 1) {