From 9c73dcbc98c9b7e1f5650bea9db829e10ec6dc75 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Fri, 7 Dec 2018 11:13:09 +0800 Subject: [PATCH] osd/OSD: preallocate for _get_pgs/_get_pgids to avoid reallocate. num_pgs is the most accurate value fore reserve when call _get_pgs & _get_pgids. Signed-off-by: Jianpeng Ma --- src/osd/OSD.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 3bdf8938fb2..c172fef223e 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -3983,6 +3983,7 @@ PG* OSD::_make_pg( void OSD::_get_pgs(vector *v, bool clear_too) { v->clear(); + v->reserve(get_num_pgs()); for (auto& s : shards) { std::lock_guard l(s->shard_lock); for (auto& j : s->pg_slots) { @@ -4000,6 +4001,7 @@ void OSD::_get_pgs(vector *v, bool clear_too) void OSD::_get_pgids(vector *v) { v->clear(); + v->reserve(get_num_pgs()); for (auto& s : shards) { std::lock_guard l(s->shard_lock); for (auto& j : s->pg_slots) { -- 2.39.5