]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: use unordered_map for repop_map 6950/head
authorNing Yao <zay11022@gmail.com>
Wed, 16 Dec 2015 01:36:54 +0000 (09:36 +0800)
committerNing Yao <zay11022@gmail.com>
Wed, 16 Dec 2015 06:13:50 +0000 (14:13 +0800)
With a prediction of expected per pg maximum ops to initialize the number of hash bucket

Signed-off-by: Ning Yao <zay11022@gmail.com>
src/common/config_opts.h
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index 39f64998c8b92e8e18cbcbd340e541be1ecb14b7..230344568e834ae9736404eae54d2ab94c6c3d46 100644 (file)
@@ -553,6 +553,7 @@ OPTION(osd_max_write_size, OPT_INT, 90)
 OPTION(osd_max_pgls, OPT_U64, 1024) // max number of pgls entries to return
 OPTION(osd_client_message_size_cap, OPT_U64, 500*1024L*1024L) // client data allowed in-memory (in bytes)
 OPTION(osd_client_message_cap, OPT_U64, 100)              // num client messages allowed in-memory
+OPTION(osd_pg_op_threshold_ratio, OPT_U64, 2)             // the expected maximum op over the average number of ops per pg
 OPTION(osd_pg_bits, OPT_INT, 6)  // bits per osd
 OPTION(osd_pgp_bits, OPT_INT, 6)  // bits per osd
 OPTION(osd_crush_chooseleaf_type, OPT_INT, 1) // 1 = host
index ba7cfa91f90b45ee935f0739fb3e9a9ad9312fe8..45d1f817dba0f9584219079f89f97e462faa4bd0 100644 (file)
@@ -1338,6 +1338,7 @@ ReplicatedPG::ReplicatedPG(OSDService *o, OSDMapRef curmap,
     pgbackend->get_is_readable_predicate(),
     pgbackend->get_is_recoverable_predicate());
   snap_trimmer_machine.initiate();
+  repop_map.rehash(g_conf->osd_client_message_cap/_pool.info.get_pg_num() * g_conf->osd_pg_op_threshold_ratio);
 }
 
 void ReplicatedPG::get_src_oloc(const object_t& oid, const object_locator_t& oloc, object_locator_t& src_oloc)
index 9f328e50d5923df12416e06cae0101d77e223453..a4f51d83069066f361848be630e490ba4711b5c7 100644 (file)
@@ -21,6 +21,7 @@
 #include <boost/tuple/tuple.hpp>
 
 #include "include/assert.h" 
+#include "include/unordered_map.h"
 #include "common/cmdparse.h"
 
 #include "HitSet.h"
@@ -886,7 +887,7 @@ protected:
   // replica ops
   // [primary|tail]
   xlist<RepGather*> repop_queue;
-  map<ceph_tid_t, RepGather*> repop_map;
+  ceph::unordered_map<ceph_tid_t, RepGather*> repop_map;
 
   friend class C_OSD_RepopApplied;
   friend class C_OSD_RepopCommit;